public void HackdevAllowFunction() { MimanPathfinder2.ClearRoomNetwork(); var h = _world.tingRunner.CreateTing <Hackdev> ("Hackdev", testDefaultCoordinate); h.masterProgramName = "BlankSlate"; h.masterProgram.sourceCodeContent = @" bool Allow(string target, number level) Log('calling allow, level: ' + level) return level == 0 end " ; h.PrepareForBeingHacked(); h.masterProgram.Compile(); PrintErrors(h.masterProgram); WorldTestHelper.UpdateWorld(_world, 3.0f); string msg = null; D.onDLog += (pMessage) => msg = pMessage; h.masterProgram.StartAtFunctionIfItExists("BLAHAHAHAHA", new object[] { "blah", 10 }, null); h.masterProgram.StartAtFunction("Allow", new object[] { "blah", 10 }, null); WorldTestHelper.UpdateWorld(_world, 1f); Assert.AreEqual("LOG: calling allow, level: 10", msg); Assert.IsTrue(h.masterProgram.HasFunction("Allow", true)); }
public void WalkFromInvalidPointInSameRoom() { foreach (var s in _world.Preload()) { } D.onDLog += Console.WriteLine; // take care of the D.Log message from invalid path _eva.logger.AddListener(Console.WriteLine); _eva.position = new WorldCoordinate("Eden", new IntPoint(-200, 300)); _eva.WalkTo(new WorldCoordinate("Eden", new IntPoint(1, 2))); // Since the starting tile is invalid (and null) the character will try to walk from the closest tile which should be in the lower left corner // The character seems to move to the next tile (0, 3) immediately though so that's where it should (?) be found WorldTestHelper.UpdateWorld(_world, 0.25f); // TODO !!! This test doesn't work anymore since the strategy to just choose the closest tile wasn't very good and now a random technique is used :( //Assert.AreEqual(new WorldCoordinate("Eden", new IntPoint(0, 3)), _eva.position); var room = _world.roomRunner.GetRoom("Eden"); Console.WriteLine(room.GetTile(new IntPoint(-200, 300))); Console.WriteLine(room.GetTile(new IntPoint(1, 2))); WorldTestHelper.UpdateWorld(_world, 5f); Assert.AreEqual(new WorldCoordinate("Eden", new IntPoint(1, 2)), _eva.position); }
public void SendDataFromComputerToComputer() { D.onDLog += Console.WriteLine; Computer sender = _world.tingRunner.CreateTing <Computer>("Sender", new WorldCoordinate("Eden", 1, 3)); Computer receiver = _world.tingRunner.CreateTing <Computer>("Receiver", new WorldCoordinate("Eden", 3, 2)); sender.hasInternetAPI = true; sender.masterProgramName = "Sender"; receiver.masterProgramName = "Receiver"; receiver.RunProgram(null); sender.RunProgram(null); WorldTestHelper.UpdateWorld(_world, 1f); /* * Console.WriteLine("Output in sender:"); * PrintOutput(sender); * * Console.WriteLine("Output in receiver:"); * PrintOutput(receiver); */ Console.WriteLine("Errors in sender:"); PrintErrors(sender.masterProgram); Console.WriteLine("Errors in receiver:"); PrintErrors(receiver.masterProgram); //Assert.AreEqual(1, receiver.consoleOutput.Length); Assert.AreEqual("received: hej", receiver.consoleOutput[0]); }
public void CallNonexistingFunction() { Computer computer7 = _world.tingRunner.CreateTing <Computer> ("Computer7", testDefaultCoordinate); Computer computer8 = _world.tingRunner.CreateTing <Computer> ("Computer8", testDefaultCoordinate); computer7.masterProgramName = "Computer7"; computer8.masterProgramName = "BlankSlate"; computer7.logger.AddListener(s => Console.WriteLine("Computer7: " + s)); //Console.WriteLine ("\n\nAsserting programs"); D.isNull(computer7.masterProgram, "master program is null"); D.isNull(computer7.floppyBootProgram, "floppy boot program is null"); //Console.WriteLine ("\n\nPrograms count: " + computer7.programs.Length); // foreach (var prog in computer7.programs) { // Console.WriteLine (" -" + prog.name + ": " + prog.sourceCodeName); // } computer7.RunProgram(null); WorldTestHelper.UpdateWorld(_world, 1f); Assert.AreEqual(true, computer7.containsBrokenPrograms); PrintErrors(computer7.masterProgram); Assert.AreEqual(false, computer8.containsBrokenPrograms); PrintErrors(computer8.masterProgram); }
public void WalkThroughSeveralRoomsToInteractWithSomethingAtTheEnd() { MimanPathfinder2.ClearRoomNetwork(); _adam.logger.AddListener(Console.WriteLine); SmartWalkBehaviour.s_logger.AddListener(Console.WriteLine); /* * _adam.AddDataListener<Character.WalkMode>("walkMode", ((Character.WalkMode prev, Character.WalkMode newWalkMode) => { * //throw new Exception("NEW WALK MODE: " + newWalkMode); * Console.WriteLine("NEW WALK MODE: " + newWalkMode); * })); */ _adam.position = new WorldCoordinate("Eden", 0, 4); MysticalCube cube = _world.tingRunner.GetTing <MysticalCube>("PowerCube"); cube.position = new WorldCoordinate("Kitchen", 3, 3); _adam.WalkToTingAndInteract(cube); WorldTestHelper.UpdateWorld(_world, 60f); Assert.AreEqual(cube, _adam.handItem); }
public void CallExternalFunctionThatFails() { Computer computer7 = _world.tingRunner.CreateTing <Computer> ("Computer7", testDefaultCoordinate); Computer computer8 = _world.tingRunner.CreateTing <Computer> ("Computer8", testDefaultCoordinate); computer7.masterProgramName = "Computer7CallFailingFunction"; computer8.masterProgramName = "Computer8"; computer7.logger.AddListener(s => Console.WriteLine("Computer7: " + s)); //Console.WriteLine ("\n\nAsserting programs"); D.isNull(computer7.masterProgram, "master program is null"); D.isNull(computer7.floppyBootProgram, "floppy boot program is null"); computer7.RunProgram(null); WorldTestHelper.UpdateWorld(_world, 1f); Assert.AreEqual(true, computer7.containsBrokenPrograms); PrintErrors(computer7.masterProgram); Assert.AreEqual(true, computer8.containsBrokenPrograms); PrintErrors(computer8.masterProgram); Console.WriteLine("RESTORE TIME"); // should be able to restore computer7.masterProgram.sourceCodeContent = ""; computer7.RunProgram(null); Assert.AreEqual(false, computer7.containsBrokenPrograms); }
public void PathfindingProgram() { foreach (string s in _world.Preload()) { } var computer = _world.tingRunner.CreateTing <Computer> ("Computer1", testDefaultCoordinate); var computer2 = _world.tingRunner.CreateTing <Computer> ("Computer2", testDefaultCoordinate); var p = new MimanPathfinder2(_world.tingRunner, _world.roomRunner); p.RecreateRoomNetwork(); computer2.masterProgramName = "BlankSlate"; computer.hasDoorAPI = true; computer.masterProgramName = "BlankSlate"; computer.masterProgram.sourceCodeContent = @" var path = FindPath('Computer1', 'Computer2') Print('Path: ' + path) " ; WorldTestHelper.UpdateWorld(_world, 1f); computer.masterProgram.Start(); WorldTestHelper.UpdateWorld(_world, 5f); // can take up to 4 secs because of random PrintOutput(computer); PrintErrors(computer.masterProgram); Assert.IsFalse(computer.containsBrokenPrograms); Assert.AreEqual("Path: []", computer.consoleOutput[0]); }
public void CallBuiltInFunctionOnAnotherTing() { D.onDLog += Console.WriteLine; Computer sender = _world.tingRunner.CreateTing <Computer>("Sender", new WorldCoordinate("Eden", 1, 3)); Computer receiver = _world.tingRunner.CreateTing <Computer>("Receiver", new WorldCoordinate("Eden", 3, 2)); sender.hasInternetAPI = true; sender.masterProgramName = "CallMeSender"; receiver.masterProgramName = "CallMeReceiver"; receiver.RunProgram(null); sender.RunProgram(null); WorldTestHelper.UpdateWorld(_world, 1f); Console.WriteLine("Output in sender:"); PrintOutput(sender); Console.WriteLine("Output in receiver:"); PrintOutput(receiver); Console.WriteLine("Errors in sender:"); PrintErrors(sender.masterProgram); Console.WriteLine("Errors in receiver:"); PrintErrors(receiver.masterProgram); //Assert.AreEqual(1, receiver.currentLine); Assert.AreEqual("hej du", receiver.consoleOutput[0]); Assert.AreEqual(false, sender.containsBrokenPrograms); Assert.AreEqual(false, receiver.containsBrokenPrograms); }
public void CallExternalFunctionOnProgramWithPrintStatementInGlobalScope() { Computer computer1 = _world.tingRunner.CreateTing <Computer> ("Computer1", testDefaultCoordinate); computer1.masterProgramName = "Caller"; computer1.logger.AddListener(o => Console.WriteLine("Computer1 log: " + o)); Computer computer2 = _world.tingRunner.CreateTing <Computer>("Computer2", testDefaultCoordinate); computer2.masterProgramName = "Stupid"; computer2.AddDataListener <string[]> ("consoleOutput", (pOldValue, pNewValue) => { Console.WriteLine("Computer2 printed: "); foreach (var s in pNewValue) { Console.WriteLine(s); } }); WorldTestHelper.UpdateWorld(_world, 1f); computer1.masterProgram.Start(); // call WorldTestHelper.UpdateWorld(_world, 1f); Assert.AreEqual("hej", computer2.consoleOutput[0]); Assert.AreEqual("", computer2.consoleOutput[1]); Assert.AreEqual(false, computer1.containsBrokenPrograms); Assert.AreEqual(false, computer2.containsBrokenPrograms); }
public void MoveMysticalCube() { D.onDLog += Console.WriteLine; SmartWalkBehaviour.s_logger.AddListener(Console.WriteLine); _eva.logger.AddListener(Console.WriteLine); _eva.position = new WorldCoordinate("Kitchen", new IntPoint(0, 0)); _cube.position = new WorldCoordinate("Kitchen", new IntPoint(8, 0)); // First, go and pick up the cube _eva.WalkToTingAndInteract(_cube); WorldTestHelper.UpdateWorld(_world, 15f); Assert.AreEqual(_cube, _eva.handItem); Assert.AreEqual(new IntPoint(7, 0), _eva.localPoint); Assert.AreEqual(Direction.RIGHT, _eva.direction); // Then walk over to the left side again _eva.WalkTo(new WorldCoordinate("Kitchen", new IntPoint(1, 0))); WorldTestHelper.UpdateWorld(_world, 15f); Assert.AreEqual(new IntPoint(1, 0), _eva.localPoint); Assert.AreEqual(Direction.LEFT, _eva.direction); // Drop the cube _eva.DropHandItem(); WorldTestHelper.UpdateWorld(_world, 3f); Assert.AreEqual(null, _eva.handItem); Assert.AreEqual(new IntPoint(0, 0), _cube.localPoint); }
public void PutMysticalCubeIntoInventory() { _world.roomRunner.CreateRoom <Room> ("Internet"); _adam.position = new WorldCoordinate("Kitchen", new IntPoint(4, 3)); _cube.position = new WorldCoordinate("Kitchen", new IntPoint(5, 3)); // Hold the cube in hand _adam.PickUp(_cube); WorldTestHelper.UpdateWorld(_world, 3f); Assert.AreEqual(_cube, _adam.handItem); Assert.IsTrue(_cube.isBeingHeld); // Put it into the bag! _adam.PutHandItemIntoInventory(); WorldTestHelper.UpdateWorld(_world, 3f); Assert.AreEqual(null, _adam.handItem); Assert.IsFalse(_cube.isBeingHeld); Assert.AreEqual(new WorldCoordinate(_adam.inventoryRoomName, IntPoint.Zero), _cube.position); // Look into the bag Ting[] inventoryItems = _adam.inventoryItems; Assert.AreEqual(1, inventoryItems.Length); Assert.AreEqual(_cube, inventoryItems[0]); // Take it out again _adam.TakeOutInventoryItem(_cube); WorldTestHelper.UpdateWorld(_world, 3f); Assert.AreEqual(_cube, _adam.handItem); Assert.IsTrue(_cube.isBeingHeld); Assert.AreEqual(_adam.position, _cube.position); }
public void CreateDrinksAutomaticallyButWithLimit() { D.onDLog += Console.WriteLine; Character lisa = _world.tingRunner.CreateTing <Character>("Lisa", new WorldCoordinate(TEST_ROOM, IntPoint.Zero)); WorldTestHelper.UpdateWorld(_world, 3f); Drink lastDrink = null; for (int i = 0; i < 100; i++) { lastDrink = Behaviour_Sell.CreateTingToSell(lisa, _world.tingRunner, "WellspringSoda", _world.settings) as Drink; } WorldTestHelper.UpdateWorld(_world, 3f); Assert.AreEqual(21, _world.tingRunner.GetTingsOfType <Drink>().Length); lisa.handItem = lastDrink; for (int i = 0; i < 100; i++) { Behaviour_Sell.CreateTingToSell(lisa, _world.tingRunner, "WellspringSoda", _world.settings); } WorldTestHelper.UpdateWorld(_world, 3f); Assert.AreEqual(25, _world.tingRunner.GetTingsOfType <Drink>().Length); // creates one extra drink each time the one Lisa holds is found when trying to create _sale_ drink }
public void CharacterUsesKeyOnDoor() { Character sune = _world.tingRunner.CreateTing <Character>("Sune", new WorldCoordinate(TEST_ROOM, IntPoint.Zero)); Door door1 = _world.tingRunner.CreateTing <Door>("Door1", new WorldCoordinate(TEST_ROOM, IntPoint.Zero)); Door door2 = _world.tingRunner.CreateTing <Door>("Door2", new WorldCoordinate(TEST_ROOM, new IntPoint(2, 2))); door1.targetDoorName = "Door2"; door2.targetDoorName = "Door1"; Key key = _world.tingRunner.CreateTing <Key>("Key", new WorldCoordinate(TEST_ROOM, IntPoint.Zero)); Assert.IsTrue(sune.CanInteractWith(door1)); sune.InteractWith(door1); Assert.AreEqual("WalkingThroughDoor", sune.actionName); sune.StopAction(); Assert.AreEqual("", sune.actionName); sune.PickUp(key); Assert.IsNull(sune.handItem); Assert.AreEqual("PickingUp", sune.actionName); WorldTestHelper.UpdateWorld(_world, 2.0f); Assert.IsNotNull(sune.handItem); Assert.AreEqual("Key", sune.handItem.name); sune.UseHandItemToInteractWith(door1); Assert.AreEqual("UsingDoorWithKey", sune.actionName); WorldTestHelper.UpdateWorld(_world, 2.0f); Assert.AreEqual("", sune.actionName); }
public void InteractWithMysticalCubeToRunItsProgram() { const string saveName = "InteractWithMysticalCubeToRunItsProgram.json"; { MysticalCube cube = _world.tingRunner.CreateTing <MysticalCube>("The Cube", testDefaultCoordinate); Assert.AreEqual(0, cube.programs.Length); Assert.AreEqual(0, cube.mysteryLevel); Character bosse = _world.tingRunner.CreateTing <Character>("Bosse", testDefaultCoordinate); bosse.InteractWith(cube); WorldTestHelper.UpdateWorld(_world, 5f); Assert.AreEqual(5, cube.mysteryLevel); // uses the default "TheCube.sprak" program _world.Save(saveName); } { _world = new World(saveName); MysticalCube cube = _world.tingRunner.GetTing("The Cube") as MysticalCube; Assert.AreEqual(5, cube.mysteryLevel); Character bosse = _world.tingRunner.GetTing("Bosse") as Character; bosse.InteractWith(cube); WorldTestHelper.UpdateWorld(_world, 5f); Assert.AreEqual(10, cube.mysteryLevel); } }
public void ChangeSourceCodeOverAndOverAgain() { Computer computer = _world.tingRunner.CreateTing <Computer> ("Computer", testDefaultCoordinate); computer.masterProgramName = "Foo"; _world.dialogueRunner.RunStringAsFunction("ListActivePrograms()"); for (int i = 0; i < 200; i++) { WorldTestHelper.UpdateWorld(_world, 1f); computer.RunProgram(null); WorldTestHelper.UpdateWorld(_world, 1f); computer.masterProgram.sourceCodeContent = "Print(10)"; } _world.dialogueRunner.RunStringAsFunction("ListActivePrograms()"); for (int i = 0; i < 200; i++) { WorldTestHelper.UpdateWorld(_world, 1f); computer.RunProgram(null); WorldTestHelper.UpdateWorld(_world, 1f); computer.masterProgram.sourceCodeContent = "Print(10)"; } _world.dialogueRunner.RunStringAsFunction("ListActivePrograms()"); Assert.AreEqual("10", computer.consoleOutput[0]); Assert.AreEqual("10", computer.consoleOutput[1]); Assert.AreEqual("10", computer.consoleOutput[10]); }
public void ProblemsWithWaitCommand() { _world.dialogueRunner.AddOnSomeoneSaidSomethingListener(o => { Console.WriteLine(o.speaker + ": " + o.line); }); var key = _world.tingRunner.CreateTing <Key>("Key", _adam.position); var bo = _world.tingRunner.CreateTing <Character>("Bo", _adam.position); bo.handItem = key; bo.logger.AddListener(Console.WriteLine); bo.SetTimetableRunner(_world.timetableRunner); bo.timetableName = "Bo"; bo.timetableTimer = 0.5f; WorldTestHelper.UpdateWorld(_world, 1.0f); _world.dialogueRunner.StartConversation("ProblemWithTiming"); WorldTestHelper.UpdateWorld(_world, 1.0f); Assert.AreEqual("A", bo.dialogueLine); Assert.AreEqual("Key", bo.handItemName); bo.timetableTimer = 0.5f; WorldTestHelper.UpdateWorld(_world, 1.0f); bo.timetableTimer = 0.5f; WorldTestHelper.UpdateWorld(_world, 1.0f); Assert.AreEqual("", bo.handItemName); Assert.AreEqual("B", bo.dialogueLine); }
public void SendNumericDataFromComputerToComputer() { D.onDLog += Console.WriteLine; Computer sender = _world.tingRunner.CreateTing <Computer>("Sender", new WorldCoordinate("Eden", 1, 3)); Computer receiver = _world.tingRunner.CreateTing <Computer>("Receiver", new WorldCoordinate("Eden", 3, 2)); sender.hasInternetAPI = true; sender.masterProgramName = "Sender4"; receiver.masterProgramName = "Receiver4"; receiver.RunProgram(null); sender.RunProgram(null); WorldTestHelper.UpdateWorld(_world, 1f); Console.WriteLine("Output in sender:"); PrintOutput(sender); Console.WriteLine("Output in receiver:"); PrintOutput(receiver); Assert.IsFalse(sender.containsBrokenPrograms); Assert.IsFalse(receiver.containsBrokenPrograms); // Console.WriteLine("Errors in sender:"); // PrintErrors(sender.masterProgram); // // Console.WriteLine("Errors in receiver:"); // PrintErrors(receiver.masterProgram); Assert.AreEqual("received: 5", receiver.consoleOutput[0]); Assert.AreEqual("x + x: 10", receiver.consoleOutput[1]); }
public void ProblemWithLinesCommand() { var computer = _world.tingRunner.CreateTing <Computer> ("Computer1", testDefaultCoordinate); computer.hasGraphicsAPI = true; computer.masterProgramName = "BlankSlate"; computer.masterProgram.sourceCodeContent = @"Lines([10,20,30,40,50,60])"; var lines = new List <IntPoint>(); computer.onLineDrawing = (p1, p2) => { lines.Add(p1); lines.Add(p2); }; WorldTestHelper.UpdateWorld(_world, 1f); computer.masterProgram.Start(); WorldTestHelper.UpdateWorld(_world, 1f); Assert.IsFalse(computer.containsBrokenPrograms); Assert.AreEqual(4, lines.Count); Assert.AreEqual(new IntPoint(10, 20), lines[1]); Assert.AreEqual(new IntPoint(30, 40), lines[0]); Assert.AreEqual(new IntPoint(30, 40), lines[3]); Assert.AreEqual(new IntPoint(50, 60), lines[2]); }
public void DontUseVoidRemoteFnCallOnVoidFn() { D.onDLog += Console.WriteLine; Computer sender = _world.tingRunner.CreateTing <Computer>("Sender", new WorldCoordinate("Eden", 1, 3)); Computer receiver = _world.tingRunner.CreateTing <Computer>("Receiver", new WorldCoordinate("Eden", 3, 2)); sender.hasInternetAPI = true; sender.masterProgramName = "Sender3"; receiver.masterProgramName = "Receiver3"; receiver.RunProgram(null); sender.RunProgram(null); WorldTestHelper.UpdateWorld(_world, 1f); Console.WriteLine("Errors in sender:"); PrintErrors(sender.masterProgram); Console.WriteLine("Errors in receiver:"); PrintErrors(receiver.masterProgram); //Assert.AreEqual(1, receiver.consoleOutput.Length); Assert.AreEqual("received: svejs", receiver.consoleOutput[0]); }
public void ToLowercase() { var computer = _world.tingRunner.CreateTing <Computer> ("Computer1", testDefaultCoordinate); computer.masterProgramName = "BlankSlate"; computer.masterProgram.sourceCodeContent = @" Print(ToLowercase('ErIK!A')) string ToLowercase(var text) string res = '' loop c in text if IsUppercase(c) res += IntToChar(CharToInt(c) + 32) else res += c end end return res end bool IsUppercase(var c) return CharToInt(c) >= -32 && CharToInt(c) <= -7 end "; WorldTestHelper.UpdateWorld(_world, 1f); computer.masterProgram.Start(); WorldTestHelper.UpdateWorld(_world, 1f); PrintErrors(computer.masterProgram); Assert.IsFalse(computer.containsBrokenPrograms); Assert.AreEqual("erik!a", computer.consoleOutput[0]); }
public void CallTransactionFunctionOnCreditCardTest() { var lines = new List <string>(); CreditCard card = _world.tingRunner.CreateTing <CreditCard> ("Visa", testDefaultCoordinate); //card.logger.AddListener (o => Console.WriteLine ("Card log: " + o)); card.AddDataListener("dialogueLine", (string oldValue, string newValue) => { lines.Add(newValue); Console.WriteLine("Card said: " + newValue); }); card.masterProgramName = "EvasCard"; Computer financeComputer = _world.tingRunner.CreateTing <Computer>("FinanceComputer", testDefaultCoordinate); financeComputer.masterProgramName = "FinanceComputer"; financeComputer.hasMemoryAPI = true; financeComputer.masterProgram.Start(); WorldTestHelper.UpdateWorld(_world, 3f); card.RunMakeTransactionFunction(-3.5f); WorldTestHelper.UpdateWorld(_world, 3f); Assert.AreEqual(1, lines.Count); Assert.AreEqual("Will make transaction: -3.5", lines[0]); Assert.AreEqual(false, card.containsBrokenPrograms); Assert.AreEqual(false, financeComputer.containsBrokenPrograms); }
public void CallPrintWithHugeNegativeNumber() { MimanPathfinder2.ClearRoomNetwork(); var computer = _world.tingRunner.CreateTing <Computer> ("Computer", testDefaultCoordinate); computer.masterProgramName = "BlankSlate"; computer.masterProgram.sourceCodeContent = @" Print(-999999) Print(-999999999999999999999) Print(999999999999999999999) " ; computer.PrepareForBeingHacked(); computer.masterProgram.Compile(); PrintErrors(computer.masterProgram); WorldTestHelper.UpdateWorld(_world, 1f); //string msg = null; //D.onDLog += (pMessage) => msg = pMessage; computer.masterProgram.Start(); WorldTestHelper.UpdateWorld(_world, 1f); PrintErrors(computer.masterProgram); Assert.IsFalse(computer.containsBrokenPrograms); Assert.AreEqual("-999999", computer.consoleOutput[0]); }
public void EvaTalks() { Assert.AreEqual("", _eva.dialogueLine); _world.dialogueRunner.StartConversation("EvaTalks"); Assert.AreEqual("Hi!", _eva.dialogueLine); WorldTestHelper.UpdateWorld(_world, 15.0f); Assert.AreEqual("", _eva.dialogueLine); }
public void SitDown() { _adam.position = new WorldCoordinate("Eden", 0, 0); _adam.WalkToTingAndInteract(_seat); WorldTestHelper.UpdateWorld(_world, 30f); Assert.AreEqual("", _adam.actionName); Assert.AreEqual(true, _adam.sitting); }
public void WalkThroughSeveralRoomsUsingDoorsOnTheWay() { MimanPathfinder2.ClearRoomNetwork(); _adam.logger.AddListener(Console.WriteLine); _adam.position = new WorldCoordinate("Eden", 0, 4); _adam.WalkTo(new WorldCoordinate("Kitchen", 3, 3)); WorldTestHelper.UpdateWorld(_world, 20f); Assert.AreEqual(new WorldCoordinate("Kitchen", 3, 3), _adam.position); }
public void WalkToInvalidPointInSameRoom() { D.onDLog += Console.WriteLine; // take care of the D.Log message from invalid path _eva.logger.AddListener(Console.WriteLine); _eva.position = new WorldCoordinate("Eden", new IntPoint(2, 4)); _eva.WalkTo(new WorldCoordinate("Eden", new IntPoint(300, 300))); WorldTestHelper.UpdateWorld(_world, 5f); Assert.AreEqual("", _eva.actionName); Assert.AreEqual(new WorldCoordinate("Eden", new IntPoint(4, 4)), _eva.position); }
public void TingWithErrorInProgram() { var fountain = _world.tingRunner.CreateTing <Fountain> ("Fountain1", testDefaultCoordinate); fountain.masterProgram.sourceCodeContent = "sdkfhfhakjhrkajda"; fountain.logger.AddListener(o => Console.WriteLine("Fountain log: " + o)); WorldTestHelper.UpdateWorld(_world, 1f); fountain.masterProgram.Start(); WorldTestHelper.UpdateWorld(_world, 1f); Assert.AreEqual(true, fountain.containsBrokenPrograms); }
public void PathfindToPointYoureAlreadyOn() { D.onDLog += Console.WriteLine; // take care of the D.Log message from invalid path _eva.logger.AddListener(Console.WriteLine); var p1 = _world.tingRunner.CreateTing <Point>("p1", new WorldCoordinate("Eden", new IntPoint(2, 4))); _eva.position = p1.position; _eva.WalkToTingAndInteract(p1); WorldTestHelper.UpdateWorld(_world, 2f); // Don't know how to test this but it shouldn't generate a ton of output at least... }
public void CharacterInteractsWithTingOnSameTile() { Character adam = _world.tingRunner.GetTing("Adam") as Character; MysticalCube powerCube = _world.tingRunner.GetTing("PowerCube") as MysticalCube; adam.logger.AddListener(Console.WriteLine); SmartWalkBehaviour.s_logger.AddListener(Console.WriteLine); powerCube.position = adam.position; adam.WalkToTingAndInteract(powerCube); WorldTestHelper.UpdateWorld(_world, 5.0f); Assert.AreEqual(powerCube, adam.handItem); }
public void UsePowerCubeLoadedFromInitData1() { MysticalCube powerCube = _world.tingRunner.GetTing("PowerCube") as MysticalCube; Assert.AreEqual(0, powerCube.programs.Length); Assert.AreEqual(0, powerCube.mysteryLevel); Character erik = _world.tingRunner.CreateTing <Character>("Erik", testDefaultCoordinate); erik.InteractWith(powerCube); WorldTestHelper.UpdateWorld(_world, 5f); Assert.AreEqual(100, powerCube.mysteryLevel); // power! }