Пример #1
0
        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);
        }
Пример #2
0
        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]);
        }