예제 #1
0
        public ICommandCenter GetCommandCenter()
        {
            var launcher = LauncherModelFactory.GetLauncher(acs.LauncherName, acs.LauncherAssembly);

            return(new CommandCenter(launcher));
        }
예제 #2
0
        public CommandCenterViewModel()
        {
            var launcherModel = LauncherModelFactory.GetLauncher("MissileSharp.ThunderMissileLauncher");

            _launcher = new CommandCenter(launcherModel);
        }
예제 #3
0
        static void Main(string[] args)
        {
            Console.WriteLine("MissileSharp demo application");
            Console.WriteLine(new string('-', 30));
            Console.WriteLine();
            Console.WriteLine("This will move the missile launcher and fire 2 missiles.");
            Console.WriteLine();
            Console.WriteLine("Pick one of the following options (enter the number), then press <RETURN> to run the demo!");
            Console.WriteLine();
            Console.WriteLine("1 : The commands are executed directly");
            Console.WriteLine("2 : A pre-programmed sequence of commands is executed");
            Console.WriteLine("3 : same as 2, but the commands are loaded from a config file");
            Console.WriteLine();
            string choice = Console.ReadLine();

            Console.WriteLine();

            // instead of hardcoding the name, you could load it from a config file here
            var launcherModel = LauncherModelFactory.GetLauncher("MissileSharp.ThunderMissileLauncher");

            using (var launcher = new CommandCenter(launcherModel))
            {
                if (launcher.IsReady)
                {
                    switch (choice)
                    {
                    case "1":

                        Console.WriteLine("1. reset position (move to bottom left)");
                        launcher.Reset();

                        Console.WriteLine("2. turn right (1 second)");
                        launcher.Right(1000);

                        Console.WriteLine("3. move up (0.5 seconds)");
                        launcher.Up(500);

                        Console.WriteLine("4. fire 2 missiles");
                        launcher.Fire(2);

                        break;

                    case "2":

                        var commands = new List <LauncherCommand>();
                        commands.Add(new LauncherCommand(Command.Reset, 0));
                        commands.Add(new LauncherCommand(Command.Right, 1000));
                        commands.Add(new LauncherCommand(Command.Up, 500));
                        commands.Add(new LauncherCommand(Command.Fire, 2));

                        launcher.RunCommandSet(commands);

                        break;

                    case "3":

                        if (launcher.LoadCommandSets("settings.txt"))
                        {
                            // upper/lower case doesn't matter - "steve" or "sTeVe" would work as well
                            launcher.RunCommandSet("Steve");
                        }

                        break;
                    }
                }
            }
        }
예제 #4
0
 public void GetLauncher_InvalidAssemblyName_ThrowsException()
 {
     Assert.Throws <FileNotFoundException>(() => LauncherModelFactory.GetLauncher("MissileSharp.InvalidLauncher", "Invalid.dll"));
 }
예제 #5
0
 public void GetLauncher_InvalidLauncherName_ThrowsException()
 {
     Assert.Throws <TypeLoadException>(() => LauncherModelFactory.GetLauncher("MissileSharp.InvalidLauncher"));
 }
예제 #6
0
 public void GetLauncher_ExistingClassDoesNotImplementILauncher_ThrowsException()
 {
     Assert.Throws <ArgumentOutOfRangeException>(() => LauncherModelFactory.GetLauncher("MissileSharp.CommandSetList"));
 }
예제 #7
0
        public void GetLauncher_ValidLauncherNameInDifferentAssembly_ReturnsLauncherInstance()
        {
            var launcher = LauncherModelFactory.GetLauncher("MissileSharp.Tests.StubMissileLauncher", "MissileSharp.Tests.dll");

            Assert.That(launcher is StubMissileLauncher);
        }
예제 #8
0
        public void GetLauncher_ValidLauncherName_ReturnsLauncherInstance()
        {
            var launcher = LauncherModelFactory.GetLauncher("MissileSharp.ThunderMissileLauncher");

            Assert.That(launcher is ThunderMissileLauncher);
        }