Esempio n. 1
0
        public void commentsAreIgnored()
        {
            List <String> logger = new List <String>();
            var           me     = new Mock <IMyProgrammableBlock>();

            MDKFactory.ProgramConfig config = default;
            config.Echo = (message) => logger.Add(message);
            config.ProgrammableBlock = me.Object;

            var    program = MDKFactory.CreateProgram <Program>(config);
            String script  = @"
:main
#This is a comment
print 'Hello World'
";

            me.Setup(b => b.CustomData).Returns(script);
            Program.LOG_LEVEL = Program.LogLevel.SCRIPT_ONLY;
            //TODO: Replace this with mock objects passed to config setup in Program.
            Program.BROADCAST_MESSAGE_PROVIDER = (x) => new List <MyIGCMessage>();

            MDKFactory.Run(program);

            Assert.AreEqual(1, logger.Count);
            Assert.AreEqual("Hello World", logger[0]);
        }
        public ScriptTest(String script)
        {
            Logger     = new List <String>();
            RunCounter = 0;

            // Setup the CUSTOM_DATA to return the given script
            // And other required config for mocking
            mockGrid = new MockGridTerminalSystem();
            me       = new Mock <IMyProgrammableBlock>();
            MockBlocksOfType("Script Program", me);

            MDKFactory.ProgramConfig config = default;
            config.GridTerminalSystem = mockGrid;
            config.ProgrammableBlock  = me.Object;
            config.Echo = (message) => Logger.Add(message);
            program     = MDKFactory.CreateProgram <Program>(config);
            program.functionParseAmount = 1000;
            program.logLevel            = Program.LogLevel.SCRIPT_ONLY;

            // Default behavior for broadcast messages
            // TODO: Replace this with mock objects passed to config setup in Program
            program.broadcastMessageProvider = () => new List <MyIGCMessage>();

            setScript(script);
        }
Esempio n. 3
0
        public void Runs()
        {
            var config = new MDKFactory.ProgramConfig
            {
                GridTerminalSystem = Mock.Of <IMyGridTerminalSystem>(),
            };

            TestBootstrapper.Run(config);
        }
Esempio n. 4
0
        public void TestCommand_Terminates()
        {
            var config = new MDKFactory.ProgramConfig
            {
                GridTerminalSystem = Mock.Of <IMyGridTerminalSystem>(),
            };

            TestBootstrapper.Run(config, "test");
        }
        public void conditionalVelocityAndSoundBlockTest()
        {
            var mockRoverCockpit  = new Mock <IMyCockpit>();
            var mockReverseSirens = new Mock <IMySoundBlock>();

            mockRoverCockpit.Setup(b => b.WorldMatrix).Returns(MatrixD.CreateWorld(Vector3D.Zero));
            mockRoverCockpit.Setup(b => b.GetShipVelocities()).Returns(new MyShipVelocities(new Vector3D(0, 0, 2), Vector3D.Zero));
            mockReverseSirens.Setup(b => b.CustomData).Returns("Playing=False");

            var me = new Mock <IMyProgrammableBlock>();

            MDKFactory.ProgramConfig config = default;
            config.ProgrammableBlock = me.Object;

            var program = MDKFactory.CreateProgram <Program>(config);

            String script = @"
:reverseSirens
  if ""rover cockpit"" backwards velocity > 1
    if ""reverse sirens"" are off
      turn on the ""reverse sirens""
  else
    turn off the ""reverse sirens""
";

            me.Setup(b => b.CustomData).Returns(script);

            //TODO: Replace these with mock objects passed to config setup in Program.
            Program.BROADCAST_MESSAGE_PROVIDER          = (x) => new List <MyIGCMessage>();
            Program.BlockHandlerRegistry.BLOCK_PROVIDER = (blockType, name) =>
            {
                var blocks = new List <Object>();
                if (blockType.Equals(Program.BlockType.COCKPIT) && name.Equals("rover cockpit"))
                {
                    blocks.Add(mockRoverCockpit.Object);
                }
                return(blocks);
            };
            Program.BlockHandlerRegistry.GROUP_BLOCK_PROVIDER = (blockType, name) =>
            {
                var blocks = new List <Object>();
                if (blockType.Equals(Program.BlockType.SOUND) && name.Equals("reverse sirens"))
                {
                    blocks.Add(mockReverseSirens.Object);
                }
                return(blocks);
            };
            MDKFactory.Run(program);

            mockReverseSirens.Verify(b => b.Play(), Times.Once);
        }
Esempio n. 6
0
        /// <summary>
        /// Installs the program for the given mocked run. Any programmable block may only be
        /// a part of a single mocked run or behavior is undefined.
        /// </summary>
        /// <param name="mockedRun"></param>
        public virtual void Install(MockedRun mockedRun)
        {
            if (Program != null)
            {
                return;
            }
            if (ProgramType == null)
            {
                return;
            }

            Debug.Assert(Runtime != null, $"{nameof(Runtime)} != null");
            var config = new MDKFactory.ProgramConfig
            {
                GridTerminalSystem = mockedRun.GridTerminalSystem,
                Runtime            = Runtime,
                ProgrammableBlock  = this,
                Echo    = mockedRun.Echo,
                Storage = Storage
            };

            Program = MDKFactory.CreateProgram(ProgramType, config);
        }
Esempio n. 7
0
        public static void Run(MDKFactory.ProgramConfig config, string argument = "")
        {
            var program = MDKFactory.CreateProgram <Program>(config);

            MDKFactory.Run(program, argument);
        }
Esempio n. 8
0
        public static void Run(MDKFactory.ProgramConfig config)
        {
            var program = MDKFactory.CreateProgram <Program>(config);

            MDKFactory.Run(program);
        }