/**
* Catroid: An on-device visual programming system for Android devices
* Copyright (C) 2010-2014 The Catrobat Team
* (<http://developer.catrobat.org/credits>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* An additional term exception under section 7 of the GNU Affero
* General Public License, version 3, is available at
* http://developer.catrobat.org/license_additional_term
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.catrobat.html5player.client.scripts;
import org.catrobat.html5player.client.Scene;
import org.catrobat.html5player.client.Sprite;
import org.catrobat.html5player.client.Stage;
import org.catrobat.html5player.client.bricks.BroadcastBrick;
import org.catrobat.html5player.client.bricks.BroadcastWaitBrick;
import org.catrobat.html5player.client.bricks.ChangeVariableBrick;
import org.catrobat.html5player.client.bricks.ForeverBrick;
import org.catrobat.html5player.client.bricks.LoopEndBrick;
import org.catrobat.html5player.client.bricks.LoopEndlessBrick;
import org.catrobat.html5player.client.bricks.NextLookBrick;
import org.catrobat.html5player.client.bricks.RepeatBrick;
import org.catrobat.html5player.client.bricks.SetLookBrick;
import org.catrobat.html5player.client.bricks.WaitBrick;
import org.catrobat.html5player.client.common.LookData;
import org.catrobat.html5player.client.formulaeditor.Formula;
import org.catrobat.html5player.client.threading.CatScheduler;
import org.catrobat.html5player.client.threading.CatThread;
import org.catrobat.html5player.client.formulaeditor.UserVariable;
import com.google.gwt.canvas.client.Canvas;
import com.google.gwt.junit.client.GWTTestCase;
//import com.google.gwt.user.client.Timer;
public class BroadcastScriptTest extends GWTTestCase {
//private Sprite sprite_ = null; //for asynchronous testing
private Stage stage;
private Scene scene;
private int canvasCoordinateSpaceWidth = 100;
private int canvasCoordinateSpaceHeight = 100;
public BroadcastScriptTest() {
stage = Stage.getInstance();
scene = Scene.get();
}
@Override
public String getModuleName() {
return "org.catrobat.html5player.html5player";
}
public void gwtSetUp() {
// Canvas canvas = Canvas.createIfSupported();
// canvas.setCoordinateSpaceWidth(canvasCoordinateSpaceWidth);
// canvas.setCoordinateSpaceHeight(canvasCoordinateSpaceHeight);
scene.createScene(canvasCoordinateSpaceWidth, canvasCoordinateSpaceHeight);
Canvas canvas = scene.getCanvas();
stage.setCanvas(canvas);
}
public void gwtTearDown() {
stage.setCanvas(null);
stage.getSpriteManager().reset(); //important
stage.getMessageContainer().clear(); //important
//sprite_ = null;
}
//--------------------------------------------------------------------------
/**
* Helper
* @param name of Look
* @return LookData for costume
*/
private LookData createCostumeData(String name) {
LookData data = new LookData();
data.setName(name);
return data;
}
//--------------------------------------------------------------------------
/**
*
*/
public void testNewScriptWithMessage() {
String spriteName = "Sprite";
Sprite sprite = new Sprite(spriteName);
String scriptName = "BroadcastScript";
String message = "broadcast-script message!";
BroadcastScript broadcastScript = new BroadcastScript(sprite, scriptName, message);
assertEquals(spriteName, broadcastScript.getSprite().getName());
assertEquals("BroadcastScript", broadcastScript.getType());
assertTrue(broadcastScript.getBrickList().isEmpty());
assertEquals(broadcastScript,
stage.getMessageContainer().getReceiverOfMessage(message).get(0));
assertEquals(message, broadcastScript.getBroadcastMessage());
}
/**
*
*/
public void testNewScriptWithoutMessage() {
String spriteName = "Sprite";
Sprite sprite = new Sprite(spriteName);
String scriptName = "BroadCastScript";
String message = null;
BroadcastScript broadcastScript = new BroadcastScript(sprite, scriptName, message);
assertEquals(spriteName, broadcastScript.getSprite().getName());
assertEquals("BroadcastScript", broadcastScript.getType());
assertTrue(stage.getMessageContainer().getReceiverOfMessage(message).isEmpty());
assertNull(broadcastScript.getBroadcastMessage());
}
/**
*
*/
public void testNewScriptWithEmptyString() {
String spriteName = "Sprite";
Sprite sprite = new Sprite(spriteName);
String scriptName = "BroadCastScript";
String message = "";
BroadcastScript broadcastScript = new BroadcastScript(sprite, scriptName, message);
assertEquals(spriteName, broadcastScript.getSprite().getName());
assertEquals("BroadcastScript", broadcastScript.getType());
assertTrue(stage.getMessageContainer().getReceiverOfMessage(message).isEmpty());
assertEquals(message, broadcastScript.getBroadcastMessage());
}
/**
*
*/
public void testAddBrickGetBrick() {
String spriteName = "Sprite";
Sprite sprite = new Sprite(spriteName);
SetLookBrick setBrick = new SetLookBrick(spriteName, "costumeName");
NextLookBrick nextBrick = new NextLookBrick(spriteName);
String scriptName = "BroadCastScript";
String message = "broadcast-script message!";
BroadcastScript broadcastScript = new BroadcastScript(sprite, scriptName, message);
broadcastScript.addBrick(setBrick);
int position = 0;
broadcastScript.addBrick(nextBrick, position);
assertEquals(2, broadcastScript.getBrickList().size());
assertTrue(broadcastScript.getBrick(position) instanceof NextLookBrick);
assertTrue(broadcastScript.getBrick(position+1) instanceof SetLookBrick);
broadcastScript.addBrick(null);
assertEquals(2, broadcastScript.getBrickList().size());
broadcastScript.addBrick(null, position);
assertEquals(2, broadcastScript.getBrickList().size());
assertTrue(broadcastScript.getBrick(position) instanceof NextLookBrick);
}
/**
*
*/
public void testAddBrickMultipleTimes() {
String spriteName = "Sprite";
Sprite sprite = new Sprite(spriteName);
SetLookBrick setBrick = new SetLookBrick(spriteName, "costumeName");
NextLookBrick nextBrick = new NextLookBrick(spriteName);
String scriptName = "BroadCastScript";
String message = "broadcast-script message!";
BroadcastScript broadcastScript = new BroadcastScript(sprite, scriptName, message);
broadcastScript.addBrick(setBrick);
broadcastScript.addBrick(nextBrick);
broadcastScript.addBrick(nextBrick);
assertEquals(3, broadcastScript.getBrickList().size());
assertTrue(broadcastScript.getBrick(0) instanceof SetLookBrick);
assertTrue(broadcastScript.getBrick(1) instanceof NextLookBrick);
assertTrue(broadcastScript.getBrick(2) instanceof NextLookBrick);
}
/**
*
*/
public void testDeleteBrick() {
String spriteName = "Sprite";
Sprite sprite = new Sprite(spriteName);
SetLookBrick setBrick = new SetLookBrick(spriteName, "costumeName");
NextLookBrick nextBrick = new NextLookBrick(spriteName);
String scriptName = "BroadCastScript";
String message = "broadcast-script message!";
BroadcastScript broadcastScript = new BroadcastScript(sprite, scriptName, message);
broadcastScript.addBrick(setBrick);
int position = 0;
broadcastScript.addBrick(nextBrick, position);
assertEquals(2, broadcastScript.getBrickList().size());
assertTrue(broadcastScript.getBrick(position) instanceof NextLookBrick);
assertTrue(broadcastScript.getBrick(position+1) instanceof SetLookBrick);
broadcastScript.deleteBrick(position);
assertEquals(1, broadcastScript.getBrickList().size());
assertTrue(broadcastScript.getBrick(position) instanceof SetLookBrick);
broadcastScript.deleteBrick(position);
assertTrue(broadcastScript.getBrickList().isEmpty());
}
/**
*
*/
public void testRun() {
String costumeName1 = "costume1";
String costumeName2 = "costume2";
String spriteName = "Sprite";
Sprite sprite = new Sprite(spriteName);
sprite.addLookData(createCostumeData(costumeName1));
sprite.addLookData(createCostumeData(costumeName2));
//hide costume, so drawSprite() in redrawScreen() does nothing
sprite.getLook().hide();
//
stage.getSpriteManager().addSprite(sprite);
SetLookBrick setBrick = new SetLookBrick(spriteName, costumeName1);
NextLookBrick nextBrick = new NextLookBrick(spriteName);
String scriptName = "BroadCastScript";
String message = "broadcast-script message!";
BroadcastScript broadcastScript = new BroadcastScript(sprite, scriptName, message);
broadcastScript.addBrick(setBrick);
broadcastScript.addBrick(nextBrick);
broadcastScript.run();
broadcastScript.run();
assertEquals(costumeName2, sprite.getLook().getLookData().getName());
}
/**
*
*/
public void testRunWithNoBricks() {
String spriteName = "Sprite";
Sprite sprite = new Sprite(spriteName);
stage.getSpriteManager().addSprite(sprite);
String scriptName = "BroadCastScript";
String message = "broadcast-script message!";
BroadcastScript broadcastScript = new BroadcastScript(sprite, scriptName, message);
broadcastScript.run();
assertNull(sprite.getLook().getLookData());
}
/**
*
*/
public void testSetBroadcastMessageValidNewMessage() {
String spriteName = "Sprite";
Sprite sprite = new Sprite(spriteName);
String scriptName = "BroadCastScript";
String message = "broadcast-script message!";
BroadcastScript broadcastScript = new BroadcastScript(sprite, scriptName, message);
String newMessage = "new broadcast-script message!";
broadcastScript.setBroadcastMessage(newMessage);
assertEquals(newMessage, broadcastScript.getBroadcastMessage());
assertTrue(stage.getMessageContainer().getReceiverOfMessage(message).isEmpty());
assertEquals(broadcastScript,
stage.getMessageContainer().getReceiverOfMessage(newMessage).get(0));
}
/**
*
*/
public void testSetBroadcastMessageEmptyNewMessage() {
String spriteName = "Sprite";
Sprite sprite = new Sprite(spriteName);
String scriptName = "BroadCastScript";
String message = "broadcast-script message!";
BroadcastScript broadcastScript = new BroadcastScript(sprite, scriptName, message);
String newMessage = "";
broadcastScript.setBroadcastMessage(newMessage);
assertNotSame(message, broadcastScript.getBroadcastMessage());
assertEquals(newMessage, broadcastScript.getBroadcastMessage());
assertTrue(stage.getMessageContainer().getReceiverOfMessage(message).isEmpty());
assertTrue(stage.getMessageContainer().getReceiverOfMessage(newMessage).isEmpty());
}
/**
*
*/
public void testSetBroadcastMessageNull() {
String spriteName = "Sprite";
Sprite sprite = new Sprite(spriteName);
String scriptName = "BroadCastScript";
String message = "broadcast-script message!";
BroadcastScript broadcastScript = new BroadcastScript(sprite, scriptName, message);
String newMessage = null;
broadcastScript.setBroadcastMessage(newMessage);
assertNull(broadcastScript.getBroadcastMessage());
assertTrue(stage.getMessageContainer().getReceiverOfMessage(message).isEmpty());
assertTrue(stage.getMessageContainer().getReceiverOfMessage(newMessage).isEmpty());
}
// /**
// *
// */
// public void testRunPauseManualResume() {
// String costumeName1 = "costume1";
// String costumeName2 = "costume2";
// String spriteName = "Sprite";
//
// Sprite sprite = new Sprite(spriteName);
//
// sprite.addCostumeData(createCostumeData(costumeName1));
// sprite.addCostumeData(createCostumeData(costumeName2));
//
// //hide costume, so drawSprite() in redrawScreen() does nothing
// sprite.getCostume().hide();
// //
//
// stage.getSpriteManager().addSprite(sprite);
//
// SetCostumeBrick2 setBrick = new SetCostumeBrick2(spriteName, costumeName1);
// NextLookBrick nextBrick = new NextLookBrick(spriteName);
//
// String scriptName = "BroadcastScript";
// String message = "broadcast-script message!";
// BroadcastScript broadcastScript = new BroadcastScript(sprite, scriptName, message);
//
// broadcastScript.addBrick(setBrick);
// broadcastScript.addBrick(nextBrick);
//
// //run script as a thread
// CatThread thread = new CatThread("thread", broadcastScript);
// CatScheduler.get().schedule(thread);
//
// CatScheduler.get().execute();
//
// //pause
// broadcastScript.pause(1000);
//
// CatScheduler.get().execute();
// CatScheduler.get().execute();
//
// assertEquals(costumeName1, sprite.getCostume().getCostumeData().getName());
//
// //resume
// broadcastScript.resume();
//
// CatScheduler.get().execute();
//
// assertEquals(costumeName2, sprite.getCostume().getCostumeData().getName());
// }
//
// /**
// *
// */
// public void testRunPauseResume() {
// String costumeName1 = "costume1";
// String costumeName2 = "costume2";
// String spriteName = "Sprite";
//
// sprite_ = new Sprite(spriteName);
//
// sprite_.addCostumeData(createCostumeData(costumeName1));
// sprite_.addCostumeData(createCostumeData(costumeName2));
//
// //hide costume, so drawSprite() in redrawScreen() does nothing
// sprite_.getCostume().hide();
// //
//
// stage.getSpriteManager().addSprite(sprite_);
//
// SetCostumeBrick2 setBrick = new SetCostumeBrick2(spriteName, costumeName1);
// NextLookBrick nextBrick = new NextLookBrick(spriteName);
//
// String scriptName = "BroadcastScript";
// String message = "broadcast-script message!";
// BroadcastScript broadcastScript = new BroadcastScript(sprite_, scriptName, message);
//
// broadcastScript.addBrick(setBrick);
// broadcastScript.addBrick(nextBrick);
//
// //run script as a thread
// CatThread thread = new CatThread("thread", broadcastScript);
// CatScheduler.get().schedule(thread);
//
// CatScheduler.get().execute();
//
// //pause
// broadcastScript.pause(500);
//
// CatScheduler.get().execute();
// CatScheduler.get().execute();
//
// assertEquals(costumeName1, sprite_.getCostume().getCostumeData().getName());
//
// Timer timer = new Timer() {
// public void run() {
//
// CatScheduler.get().execute();
//
// assertEquals("costume2", sprite_.getCostume().getCostumeData().getName());
//
// // tell the test system the test is now done
// finishTest();
// }
// };
//
// // Set a delay period significantly longer than the
// // event is expected to take
// delayTestFinish(1000);
//
// // Schedule the event and return control to the test system
// timer.schedule(600);
// }
/**
*
*/
public void testSetCurrentBrickIndex() {
String costumeName1 = "costume1";
String costumeName2 = "costume2";
String spriteName = "Sprite";
Sprite sprite = new Sprite(spriteName);
sprite.addLookData(createCostumeData(costumeName1));
sprite.addLookData(createCostumeData(costumeName2));
//hide costume, so drawSprite() in redrawScreen() does nothing
sprite.getLook().hide();
//
stage.getSpriteManager().addSprite(sprite);
SetLookBrick setBrick = new SetLookBrick(spriteName, costumeName1);
SetLookBrick setBrick2 = new SetLookBrick(spriteName, costumeName2);
NextLookBrick nextBrick = new NextLookBrick(spriteName);
String scriptName = "BroadcastScript";
String message = "broadcast-script message!";
BroadcastScript broadcastScript = new BroadcastScript(sprite, scriptName, message);
broadcastScript.addBrick(setBrick);
broadcastScript.addBrick(setBrick2);
broadcastScript.addBrick(nextBrick);
int currentBrickIndex = 1;
broadcastScript.setCurrentBrick(currentBrickIndex);
assertEquals(currentBrickIndex, broadcastScript.getCurrentBrick());
broadcastScript.run();
broadcastScript.run();
assertEquals(costumeName1, sprite.getLook().getLookData().getName());
}
/**
*
*/
public void testGetLastRepeatBrickWithoutLoopEndBrick() {
String spriteName = "Sprite";
Sprite sprite = stage.getSpriteManager().getSprite(spriteName, true);
String scriptName = "BroadcastScript";
String message = "broadcast-script message!";
BroadcastScript broadcastScript = new BroadcastScript(sprite, scriptName, message);
sprite.addScript(broadcastScript);
Formula timesToRepeatOuter = new Formula(3);
RepeatBrick repeatBrickOuter = new RepeatBrick(spriteName, timesToRepeatOuter);
Formula timesToRepeatInner = new Formula(1);
RepeatBrick repeatBrickInner = new RepeatBrick(spriteName, timesToRepeatInner);
broadcastScript.addBrick(repeatBrickOuter);
broadcastScript.addBrick(repeatBrickInner);
assertEquals(repeatBrickInner, broadcastScript.getLastRepeatBrickWithoutLoopEndBrick());
LoopEndBrick loopEndBrickInner = new LoopEndBrick(spriteName, broadcastScript.getLastRepeatBrickWithoutLoopEndBrick());
broadcastScript.getLastRepeatBrickWithoutLoopEndBrick().setLoopEndBrick(loopEndBrickInner);
assertEquals(repeatBrickOuter, broadcastScript.getLastRepeatBrickWithoutLoopEndBrick());
LoopEndBrick loopEndBrickOuter = new LoopEndBrick(spriteName, broadcastScript.getLastRepeatBrickWithoutLoopEndBrick());
broadcastScript.getLastRepeatBrickWithoutLoopEndBrick().setLoopEndBrick(loopEndBrickOuter);
assertEquals(loopEndBrickOuter, repeatBrickOuter.getLoopEndBrick());
assertEquals(loopEndBrickInner, repeatBrickInner.getLoopEndBrick());
}
/**
*
*/
public void testGetLastForeverBrickWithoutLoopEndlessBrick() {
String spriteName = "Sprite";
Sprite sprite = stage.getSpriteManager().getSprite(spriteName, true);
String scriptName = "BroadcastScript";
String message = "broadcast-script message!";
BroadcastScript broadcastScript = new BroadcastScript(sprite, scriptName, message);
sprite.addScript(broadcastScript);
ForeverBrick foreverBrickOuter = new ForeverBrick(spriteName);
ForeverBrick foreverBrickInner = new ForeverBrick(spriteName);
broadcastScript.addBrick(foreverBrickOuter);
broadcastScript.addBrick(foreverBrickInner);
assertEquals(foreverBrickInner, broadcastScript.getLastForeverBrickWithoutLoopEndlessBrick());
LoopEndlessBrick loopEndlessBrickInner = new LoopEndlessBrick(spriteName, broadcastScript.getLastForeverBrickWithoutLoopEndlessBrick());
broadcastScript.getLastForeverBrickWithoutLoopEndlessBrick().setLoopEndlessBrick(loopEndlessBrickInner);
assertEquals(foreverBrickOuter, broadcastScript.getLastForeverBrickWithoutLoopEndlessBrick());
LoopEndlessBrick loopEndlessBrickOuter = new LoopEndlessBrick(spriteName, broadcastScript.getLastForeverBrickWithoutLoopEndlessBrick());
broadcastScript.getLastForeverBrickWithoutLoopEndlessBrick().setLoopEndlessBrick(loopEndlessBrickOuter);
assertEquals(loopEndlessBrickOuter, foreverBrickOuter.getLoopEndlessBrick());
assertEquals(loopEndlessBrickInner, foreverBrickInner.getLoopEndlessBrick());
}
/**
* A loop with broadcasting occurs when a broadcastScript has a broadcastbrick with
* the same message
*/
public void testFirstBrickExecutedInBroadcastLoop(){
String spriteName = "Sprite";
Sprite sprite = stage.getSpriteManager().getSprite(spriteName, true);
String scriptName = "BroadcastScript";
String message = "broadcast-script message!";
BroadcastScript broadcastScript = new BroadcastScript(sprite, scriptName, message);
sprite.addScript(broadcastScript);
Formula changeBy = new Formula(1);
UserVariable userVariable = new UserVariable("testvar", 0.0);
ChangeVariableBrick changeVariableBrick = new ChangeVariableBrick(spriteName, changeBy, userVariable);
BroadcastBrick broadcastBrick = new BroadcastBrick(spriteName, message);
broadcastScript.addBrick(changeVariableBrick);
broadcastScript.addBrick(broadcastBrick);
assertTrue(broadcastScript.getBrick(broadcastScript.getCurrentBrick()) instanceof ChangeVariableBrick);
broadcastScript.run();
assertEquals(1.0, userVariable.getValue());
assertTrue(broadcastScript.getBrick(broadcastScript.getCurrentBrick()) instanceof BroadcastBrick);
broadcastScript.run();
assertTrue(broadcastScript.getBrick(broadcastScript.getCurrentBrick()) instanceof ChangeVariableBrick);
broadcastScript.run();
assertEquals(2.0, userVariable.getValue());
assertTrue(broadcastScript.getBrick(broadcastScript.getCurrentBrick()) instanceof BroadcastBrick);
}
/**
* A loop with broadcasting occurs when a broadcastScript has a broadcastbrick
* or broadcastwaitbrick with the same message
*/
public void testFirstBrickExecutedInBroadcastWaitLoop(){
String spriteName = "Sprite";
Sprite sprite = stage.getSpriteManager().getSprite(spriteName, true);
String scriptName = "BroadcastScript";
String message = "broadcast-script message!";
BroadcastScript broadcastScript = new BroadcastScript(sprite, scriptName, message);
sprite.addScript(broadcastScript);
Formula changeBy = new Formula(1);
UserVariable userVariable = new UserVariable("testvar", 0.0);
ChangeVariableBrick changeVariableBrick = new ChangeVariableBrick(spriteName, changeBy, userVariable);
BroadcastWaitBrick broadcastWaitBrick = new BroadcastWaitBrick(spriteName, message, broadcastScript);
broadcastScript.addBrick(changeVariableBrick);
broadcastScript.addBrick(broadcastWaitBrick);
CatThread thread = new CatThread("thread", broadcastScript);
CatScheduler.get().schedule(thread);
assertTrue(broadcastScript.getBrick(broadcastScript.getCurrentBrick()) instanceof ChangeVariableBrick);
broadcastScript.run();
assertEquals(1.0, userVariable.getValue());
assertTrue(broadcastScript.getBrick(broadcastScript.getCurrentBrick()) instanceof BroadcastWaitBrick);
broadcastScript.run();
assertTrue(broadcastScript.getBrick(broadcastScript.getCurrentBrick()) instanceof ChangeVariableBrick);
broadcastScript.run();
assertEquals(2.0, userVariable.getValue());
assertTrue(broadcastScript.getBrick(broadcastScript.getCurrentBrick()) instanceof BroadcastWaitBrick);
}
/**
* When a broadcast is sent periodically with a broadcast and wait loop then the dependent scripts
* should get also get reseted periodically and therefore start from the beginning, so that
* bricks that are later in the execution sequence are not executed when the reset is first.
*/
public void testScriptRestartInBroadcastWaitLoop(){
String spriteName = "Sprite";
Sprite sprite = stage.getSpriteManager().getSprite(spriteName, true);
String scriptName = "BroadcastScript";
String message = "broadcast-script message!";
BroadcastScript broadcastScript = new BroadcastScript(sprite, scriptName, message);
BroadcastScript broadcastScript1 = new BroadcastScript(sprite, scriptName, message);
sprite.addScript(broadcastScript);
sprite.addScript(broadcastScript1);
BroadcastWaitBrick broadcastWaitBrick = new BroadcastWaitBrick(spriteName, message, broadcastScript);
WaitBrick waitbrick = new WaitBrick(spriteName, new Formula(0.5),broadcastScript1);
broadcastScript.addBrick(waitbrick);
broadcastScript.addBrick(broadcastWaitBrick);
final UserVariable userVariable = new UserVariable("testvarSRIBWL", 0.0);
ChangeVariableBrick changeVariableBrick1 = new ChangeVariableBrick(spriteName, new Formula(1.0), userVariable);
WaitBrick waitbrick1 = new WaitBrick(spriteName, new Formula(1.0),broadcastScript1);
ChangeVariableBrick changeVariableBrick2 = new ChangeVariableBrick(spriteName, new Formula(101.0), userVariable);
broadcastScript1.addBrick(changeVariableBrick1);
broadcastScript1.addBrick(waitbrick1);
broadcastScript1.addBrick(changeVariableBrick2);
CatThread thread = new CatThread("thread", broadcastScript);
CatThread thread1 = new CatThread("thread1", broadcastScript1);
CatScheduler.get().schedule(thread);
CatScheduler.get().schedule(thread1);
for(int i = 0; i <23;i++){
// changeVariableBrick2 should not get executed because the script should get reseted
CatScheduler.get().execute();
}
// Timer timer = new Timer() {
// public void run() {
// assertEquals(2.0, userVariable.getValue());
// finishTest();
// }
// };
// delayTestFinish(1200);
// timer.schedule(1100);
assertTrue(100.0 > userVariable.getValue());
//assertEquals(2.0, userVariable.getValue());
}
//TODO: TEST runWait() - is same as run() in the meantime
//
//...
}