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 CallFunctionOnProgramWithInfiniteLoopInGlobalScope() { Computer computer1 = _world.tingRunner.CreateTing <Computer> ("Computer1", testDefaultCoordinate); computer1.masterProgramName = "Computer1"; computer1.logger.AddListener(o => Console.WriteLine("Computer1 log: " + o)); Computer computer2 = _world.tingRunner.CreateTing <Computer>("Computer2", testDefaultCoordinate); computer2.masterProgramName = "Computer2"; computer2.AddDataListener <string[]> ("consoleOutput", (pOldValue, pNewValue) => { //Console.WriteLine("Computer2 printed!"); }); computer2.masterProgram.Start(); // the infinite loop should start WorldTestHelper.UpdateWorld(_world, 1f); // Console.WriteLine ("Before:"); // PrintProgramInfo (computer1); // PrintProgramInfo (computer2); computer1.masterProgram.Start(); WorldTestHelper.UpdateWorld(_world, 1f); // Console.WriteLine ("Middle:"); // PrintProgramInfo (computer1); // PrintProgramInfo (computer2); computer1.masterProgram.Start(); WorldTestHelper.UpdateWorld(_world, 1f); // Console.WriteLine ("After:"); // PrintProgramInfo (computer1); // PrintProgramInfo (computer2); Assert.AreEqual("LOOP!", computer2.consoleOutput[0]); Assert.AreEqual("LOOP!", computer2.consoleOutput[1]); Assert.AreEqual("LOOP!", computer2.consoleOutput[2]); Assert.AreEqual("LOOP!", computer2.consoleOutput[3]); Assert.AreEqual("LOOP!", computer2.consoleOutput[4]); Assert.AreEqual("LOOP!", computer2.consoleOutput[5]); Assert.AreEqual("hej", computer1.consoleOutput[0]); Assert.AreEqual("hej", computer1.consoleOutput[1]); Assert.AreEqual("", computer1.consoleOutput[2]); }