Adding more exploration for execution paths.
[smartthings-infrastructure.git] / Runner.py
index e2826a5631e36b9b839fa4653b0de735329560d3..e82d1c2f1534f7a60e4da261a0ac9404d7968fa8 100644 (file)
--- a/Runner.py
+++ b/Runner.py
@@ -21,6 +21,9 @@ sendSms = open("Methods/"+"sendSms.groovy", "r")
 sendPush = open("Methods/"+"sendPush.groovy", "r")
 eventHandler = open("Methods/"+"eventHandler.groovy", "r")
 schedule = open("Methods/"+"schedule.groovy", "r")
+now = open("Methods/"+"now.groovy", "r")
+getTemperatureScale = open("Methods/"+"getTemperatureScale.groovy", "r")
+getSunriseAndSunset = open("Methods/"+"getSunriseAndSunset.groovy", "r")
 App1 = open("Extractor/"+"App1/App1.groovy", "r")
 extractedObjectsApp1 = open("Extractor/"+"App1/extractedObjectsApp1.groovy", "r")
 extractedObjectsConstructorApp1 = open("Extractor/"+"App1/extractedObjectsConstructorApp1.groovy", "r")
@@ -51,9 +54,38 @@ Out.write("import Location.LocationVar\n")
 Out.write("import Location.Phrase\n")
 Out.write("import appTouch.Touched\n")
 Out.write("import NfcTouch.NfcTouch\n")
+Out.write("import AeonKeyFob.AeonKeyFob\n")
+Out.write("import AeonKeyFob.AeonKeyFobs\n")
+Out.write("import MusicPlayer.MusicPlayer\n")
+Out.write("import MusicPlayer.MusicPlayers\n")
+Out.write("import MotionSensor.MotionSensor\n")
+Out.write("import MotionSensor.MotionSensors\n")
+Out.write("import ImageCapture.ImageCapture\n")
+Out.write("import ImageCapture.ImageCaptures\n")
+Out.write("import SmokeDetector.SmokeDetector\n")
+Out.write("import SmokeDetector.SmokeDetectors\n")
+Out.write("import Alarm.Alarm\n")
+Out.write("import Alarm.Alarms\n")
+Out.write("import SpeechSynthesis.SpeechSynthesis\n")
+Out.write("import SpeechSynthesis.SpeechSynthesises\n")
+Out.write("import AccelerationSensor.AccelerationSensor\n")
+Out.write("import AccelerationSensor.AccelerationSensors\n")
+Out.write("import Battery.Battery\n")
+Out.write("import Battery.Batteries\n")
+Out.write("import BeaconSensor.BeaconSensor\n")
+Out.write("import BeaconSensor.BeaconSensors\n")
+Out.write("import CarbonMonoxideDetector.CarbonMonoxideDetector\n")
+Out.write("import CarbonMonoxideDetector.CarbonMonoxideDetectors\n")
+Out.write("import ColorControl.ColorControl\n")
+Out.write("import ColorControl.ColorControls\n")
+Out.write("import EnergyMeter.EnergyMeter\n")
+Out.write("import EnergyMeter.EnergyMeters\n")
 Out.write("import Event.Event\n")
 Out.write("import Timer.SimulatedTimer\n")
 Out.write("\n")
+Out.write("//JPF's Verify API\n")
+Out.write("import gov.nasa.jpf.vm.Verify\n")
+Out.write("\n")
 Out.write("//Global eventHandler\n")
 for line in eventHandler:
        Out.write(line)
@@ -104,6 +136,12 @@ for line in sendPush:
        Out.write("\t"+line)
 for line in schedule:
        Out.write("\t"+line)
+for line in now:
+       Out.write("\t"+line)
+for line in getTemperatureScale:
+       Out.write("\t"+line)
+for line in getSunriseAndSunset:
+       Out.write("\t"+line)
 Out.write("\n")
 Start = 0
 for line in App1:
@@ -126,6 +164,9 @@ sendNotificationToContacts = open("Methods/"+"sendNotificationToContacts.groovy"
 sendSms = open("Methods/"+"sendSms.groovy", "r")
 eventHandler = open("Methods/"+"eventHandler.groovy", "r")
 schedule = open("Methods/"+"schedule.groovy", "r")
+now = open("Methods/"+"now.groovy", "r")
+getTemperatureScale = open("Methods/"+"getTemperatureScale.groovy", "r")
+getSunriseAndSunset = open("Methods/"+"getSunriseAndSunset.groovy", "r")
 App2 = open("Extractor/"+"App2/App2.groovy", "r")
 extractedObjectsApp2 = open("Extractor/"+"App2/extractedObjectsApp2.groovy", "r")
 extractedObjectsConstructorApp2 = open("Extractor/"+"App2/extractedObjectsConstructorApp2.groovy", "r")
@@ -173,6 +214,12 @@ for line in sendPush:
        Out.write("\t"+line)
 for line in schedule:
        Out.write("\t"+line)
+for line in now:
+       Out.write("\t"+line)
+for line in getTemperatureScale:
+       Out.write("\t"+line)
+for line in getSunriseAndSunset:
+       Out.write("\t"+line)
 Out.write("\n")
 Start = 0
 for line in App2:
@@ -182,11 +229,24 @@ for line in App2:
                Out.write("\t"+line)
 Out.write("}\n")
 Out.write("\n")
-Out.write("@Field def app1 = new App1(this)\n")
-Out.write("@Field def app2 = new App2(this)\n")
-Out.write("app1.installed()\n")
-Out.write("app2.installed()\n")
-Out.write("\n")
+Out.write("@Field def app1\n")
+Out.write("@Field def app2\n")
+Out.write("def initOrder = Verify.getBoolean()\n")
+Out.write("if (initOrder) {\n")
+Out.write("\tapp1 = new App1(this)\n")
+Out.write("\tapp2 = new App2(this)\n")
+Out.write("} else {\n")
+Out.write("\tapp2 = new App2(this)\n")
+Out.write("\tapp1 = new App1(this)\n")
+Out.write("}\n\n")
+Out.write("def installOrder = Verify.getBoolean()\n")
+Out.write("if (installOrder) {\n")
+Out.write("\tapp1.installed()\n")
+Out.write("\tapp2.installed()\n")
+Out.write("} else {\n")
+Out.write("\tapp1.installed()\n")
+Out.write("\tapp2.installed()\n")
+Out.write("}\n\n")
 for line in eventSimulator:
        Out.write(line)
 Out.close()