示例#1
0
        public void ReturnCorrectMark(string expectedMark, List <Colour> code, List <Colour> guess)
        {
            var codeBreaker = new CodeChecker();
            var actual      = codeBreaker.CheckGuess(code, guess);

            Assert.AreEqual(expectedMark, actual);
        }
示例#2
0
        /// <summary>
        /// Charge en mémoire les modèles objet et génère les warnings.
        /// </summary>
        private void LoadObjectModel()
        {
            // Charge le parser.
            IModelParser modelParser = LoadModelParser();

            // Parse le modèle.
            _modelList = modelParser.Parse();

            // Charge les listes de références.
            ICollection <TableInit> staticTableInitList    = LoadTableInitList(true);
            ICollection <TableInit> referenceTableInitList = LoadTableInitList(false);

            // Génère les warnings pour le modèle.
            List <NVortexMessage> messageList = new List <NVortexMessage>(modelParser.ErrorList);

            messageList.AddRange(CodeChecker.Check(_modelList, _domainList));
            messageList.AddRange(StaticListChecker.Instance.Check(_modelList, staticTableInitList));
            messageList.AddRange(ReferenceListChecker.Instance.Check(_modelList, referenceTableInitList));
            if (GeneratorParameters.GenerateSql)
            {
                _schemaGenerator = LoadSchemaGenerator();
                messageList.AddRange(_schemaGenerator.CheckAllIdentifiersNames(_modelList));
            }

            NVortexGenerator.Generate(messageList, GeneratorParameters.VortexFile, GeneratorParameters.SourceRepository, "ClassGenerator");


            if (!CanGenerate(messageList))
            {
                Environment.Exit(-NbErrorMessage(messageList));
            }
        }
示例#3
0
 void Awake()
 {
     displayedDialogue   = new DialogueItem();
     sentences           = new Queue <DialogueItem>();
     characterController = FindObjectOfType <PlayerController>();
     codeChecker         = FindObjectOfType <CodeChecker>();
 }
        public void It_Should_SetIsWinnerAndIsGameOver_ToTrue_When_GuessIsCorrect(List <Peg> guess, bool expectedIsWinner, bool expectedIsGameOver)
        {
            //arrange
            var codeGenerator = new CodeGenerator(new List <Peg> {
                Peg.Red, Peg.Blue, Peg.Green, Peg.Yellow
            });
            var nonRandomizer = new NonRandomizer();
            var code          = new CodeChecker(codeGenerator, nonRandomizer);
            var config        = new MastermindConfig
            {
                [DataConstants.CodeLength] = 4, [DataConstants.NumberOfColours] = 6, [DataConstants.NumberOfTurns] = 8
            };
            var game = new Game(config, code);

            game.StartNewGame();


            //act
            var feedback = game.CheckGuess(guess);

            game.UpdateGame(guess, feedback);

            //assert
            Assert.Equal(expectedIsWinner, game.IsWinner);
            Assert.Equal(expectedIsGameOver, game.IsGameOver);
        }
示例#5
0
        /// <summary>
        /// Charge en mémoire les modèles objet et génère les warnings.
        /// </summary>
        private void LoadObjectModel()
        {
            // Charge le parser.
            IModelParser modelParser = LoadModelParser();

            // Parse le modèle.
            _modelList = modelParser.Parse();

            // Charge les listes de références.
            ICollection <TableInit> staticTableInitList    = LoadTableInitListFromFile(_parameters.StaticListFactoryFileName);
            ICollection <TableInit> referenceTableInitList = LoadTableInitListFromFile(_parameters.ReferenceListFactoryFileName);

            // Génère les warnings pour le modèle.
            List <NVortexMessage> messageList = new List <NVortexMessage>(modelParser.ErrorList);

            messageList.AddRange(CodeChecker.Check(_modelList));
            messageList.AddRange(StaticListChecker.Instance.Check(_modelList, staticTableInitList));
            messageList.AddRange(ReferenceListChecker.Instance.Check(_modelList, referenceTableInitList));
            messageList.AddRange(AbstractSchemaGenerator.CheckAllIdentifiersNames(_modelList));

            NVortexGenerator.Generate(messageList, _parameters.VortexFile, "ClassGenerator");

            if (!CanGenerate(messageList))
            {
                Environment.Exit(-NbErrorMessage(messageList));
            }
        }
        public void It_Should_Return_WhiteForEveryCorrectColourAtIncorrectPosition_When_Given_ValidGuesses(List <Peg> guess, List <Feedback> expectedFeedback)
        {
            //arrange
            var codeGenerator = new CodeGenerator(new List <Peg> {
                Peg.Red, Peg.Blue, Peg.Green, Peg.Yellow
            });
            var nonRandomizer = new NonRandomizer();
            var code          = new CodeChecker(codeGenerator, nonRandomizer);

            code.GenerateSecretCode();

            //act
            var feedback = code.CheckGuess(guess);

            //assert
            Assert.Equal(expectedFeedback, feedback);
        }
示例#7
0
        internal static void Main()
        {
            log.Info("Запуск агента");
            using (var checker = new CodeChecker())
            {
                checker.Configure();

                log.Info("Проверка разработки");
                var context   = checker.ContextManager.Context.Development;
                var documents = CodeCheckerCalculationProvider.GetDocuments(context);
                var report    = checker.Check(documents).Result;

                log.Info("Генерация отчета");
                report.Print();
            }

            log.Info("Агент успешно завершил работу");
        }
        public void It_Should_Return_A_KnownSecretCode_When_A_StaticCodeGeneratorIsUsed()
        {
            //arrange
            var codeGenerator = new CodeGenerator(new List <Peg> {
                Peg.Red, Peg.Blue, Peg.Green, Peg.Yellow
            });
            var nonRandomizer = new NonRandomizer();
            var code          = new CodeChecker(codeGenerator, nonRandomizer);

            //act
            code.GenerateSecretCode();

            //assert
            var expectedSecretCode = new List <Peg> {
                Peg.Red, Peg.Blue, Peg.Green, Peg.Yellow
            };

            Assert.True(code.SecretCode.SequenceEqual(expectedSecretCode));
        }
        public void It_Should_SetIsGameOver_ToTrue_When_MaxNumberOfGuessesAreReached(int numberOfTurns, bool expectedIsGameOver)
        {
            //arrange
            var codeGenerator = new CodeGenerator(new List <Peg> {
                Peg.Red, Peg.Blue, Peg.Green, Peg.Yellow
            });
            var nonRandomizer = new NonRandomizer();
            var code          = new CodeChecker(codeGenerator, nonRandomizer);
            var config        = new MastermindConfig
            {
                [DataConstants.CodeLength] = 4, [DataConstants.NumberOfColours] = 6, [DataConstants.NumberOfTurns] = 8
            };
            var game = new Game(config, code);

            game.StartNewGame();


            for (var i = 0; i < numberOfTurns; i++)
            {
                var guess = new List <Peg> {
                    Peg.Blue, Peg.Orange, Peg.Orange, Peg.Yellow
                };
                var feedback = game.CheckGuess(guess);
                game.UpdateGame(guess, feedback);
            }


            //act
            var finalGuess = new List <Peg> {
                Peg.Orange, Peg.Orange, Peg.Orange, Peg.Orange
            };
            var finalFeedback = game.CheckGuess(finalGuess);

            game.UpdateGame(finalGuess, finalFeedback);



            //assert
            Assert.Equal(expectedIsGameOver, game.IsGameOver);
        }
示例#10
0
        private static void PlayGame()
        {
            var          code         = new CodeGenerator();
            var          codeChecker  = new CodeChecker();
            var          colourMapper = new ColourMapper();
            var          randomCode   = code.Create();
            var          guess        = "";
            const string response     = "The mark was: ";

            Console.WriteLine("Welcome to Code Breaker!");
            while (guess != "stop")
            {
                Console.WriteLine("Please insert your guess (e.g \"r,g,y,c\"): ");
                guess = Console.ReadLine();
                if (guess == "stop")
                {
                    return;
                }

                try
                {
                    var convertedGuess = colourMapper.Map(guess);
                    var mark           = codeChecker.CheckGuess(randomCode, convertedGuess);
                    if (mark == "bbbb")
                    {
                        Console.WriteLine("You have won the game!");
                        Console.ReadKey();
                        return;
                    }
                    Console.WriteLine(response + mark + Environment.NewLine);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message + Environment.NewLine);
                }
            }
            Console.ReadKey();
        }
        public void It_Should_Contain_AListOfTurns_When_AGuessIsChecked()
        {
            //arrange
            var codeGenerator = new CodeGenerator(new List <Peg> {
                Peg.Red, Peg.Blue, Peg.Green, Peg.Yellow
            });
            var nonRandomizer = new NonRandomizer();
            var code          = new CodeChecker(codeGenerator, nonRandomizer);
            var config        = new MastermindConfig
            {
                [DataConstants.CodeLength] = 4, [DataConstants.NumberOfColours] = 6, [DataConstants.NumberOfTurns] = 8
            };
            var game = new Game(config, code);

            game.StartNewGame();

            //act
            var guess = new List <Peg> {
                Peg.Blue, Peg.Orange, Peg.Orange, Peg.Yellow
            };
            var feedback = game.CheckGuess(guess);

            game.UpdateGame(guess, feedback);

            //assert
            var expectedTurn = new Turn(
                new List <Peg> {
                Peg.Blue, Peg.Orange, Peg.Orange, Peg.Yellow
            },
                new List <Feedback> {
                Feedback.Black, Feedback.White
            });

            var turn = game.Turns[0];

            turn.Should().BeEquivalentTo(expectedTurn);
        }
示例#12
0
 public Game(MastermindConfig config, CodeChecker codeChecker)
 {
     _config        = config;
     _codeChecker   = codeChecker;
     RemainingTurns = config[DataConstants.NumberOfTurns];
 }
示例#13
0
 public CodeZeilenTests()
 {
     codeText = new CodeChecker();
 }
示例#14
0
        public void It_Should_SimulateGamePlay_When_Given_InvalidInput()
        {
            var config = ConfigurationLoader.LoadMastermindConfiguration(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ConfigFiles", "StandardConfig.json"));

            var staticCodeGenerator = new CodeGenerator(new List <Peg>
            {
                Peg.Blue,
                Peg.Green,
                Peg.Yellow,
                Peg.Green
            });
            var feedbackRandomizer = new NonRandomizer();

            var codeChecker = new CodeChecker(staticCodeGenerator, feedbackRandomizer);

            var game = new Game(config, codeChecker);

            var consoleDisplayStub = new ConsoleDisplayStub();

            var mockCollector = new Mock <ICollector>();

            mockCollector.SetupSequence(x => x.Collect())
            .Returns("Blue, green, reD, rainbow")
            .Returns("Blue, red, red, red, red")
            .Returns("Blue, blue")
            .Returns("")
            .Returns("hello")
            .Returns("blue, green, pink, red")
            .Returns("grey")
            .Returns("BLUE, green, YeLLoW, Green");

            var gameEngine = new GameEngine(
                consoleDisplayStub,
                mockCollector.Object,
                new ConsoleInputProcessor(config),
                game);

            //Act
            gameEngine.PlayGame();

            //Assert
            var expectedMessages = new List <string>
            {
                ClientConstants.Welcome,
                ClientConstants.Border,
                ClientConstants.SecretCode,
                "Blue, Green, Yellow, Green",
                ClientConstants.Border,
                ClientConstants.GuessesLeft + 8 + ClientConstants.PromptGuess,
                "Error: rainbow is an invalid colour!",
                ClientConstants.GuessesLeft + 8 + ClientConstants.PromptGuess,
                $"Error: you must pass in {config[DataConstants.CodeLength]} colours!",
                ClientConstants.GuessesLeft + 8 + ClientConstants.PromptGuess,
                $"Error: you must pass in {config[DataConstants.CodeLength]} colours!",
                ClientConstants.GuessesLeft + 8 + ClientConstants.PromptGuess,
                $"Error: you must pass in {config[DataConstants.CodeLength]} colours!",
                ClientConstants.GuessesLeft + 8 + ClientConstants.PromptGuess,
                "Error: hello is an invalid colour!",
                ClientConstants.GuessesLeft + 8 + ClientConstants.PromptGuess,
                "Error: pink is an invalid colour!",
                ClientConstants.GuessesLeft + 8 + ClientConstants.PromptGuess,
                "Error: grey is an invalid colour!",
                ClientConstants.GuessesLeft + 8 + ClientConstants.PromptGuess,
                ClientConstants.Feedback,
                "Black, Black, Black, Black",
                ClientConstants.Border,
                ClientConstants.Winner
            };

            Assert.Equal(expectedMessages, consoleDisplayStub.Messages);
        }
示例#15
0
        public void It_Should_SimulateDemoGame_When_Given_ValidInput()
        {
            var config = ConfigurationLoader.LoadMastermindConfiguration(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ConfigFiles", "StandardConfig.json"));

            var staticCodeGenerate = new  CodeGenerator(new List <Peg> {
                Peg.Blue, Peg.Green, Peg.Orange, Peg.Red
            });

            var feedbackRandomizer = new NonRandomizer();

            var codeChecker = new CodeChecker(staticCodeGenerate, feedbackRandomizer);

            var game = new Game(config, codeChecker);

            var inputHappy = new List <string>
            {
                "blue, blue, green, green",
                "Red, blue, red, RED",
                "Blue, yellow, Green, red",
                "Blue, Green, PURPLE, Red",
                "blue, green, orange, red"
            };

            var consoleDisplayStub = new ConsoleDisplayStub();

            var gameEngine = new GameEngine(consoleDisplayStub, new ConsoleDemoInputCollector(inputHappy, consoleDisplayStub), new ConsoleInputProcessor(config), game);


            //Act
            gameEngine.PlayGame();

            //Assert
            var expectedMessages = new List <string>
            {
                ClientConstants.Welcome,
                ClientConstants.Border,
                ClientConstants.SecretCode,
                "Blue, Green, Orange, Red",
                ClientConstants.Border,
                ClientConstants.GuessesLeft + 8 + ClientConstants.PromptGuess,
                inputHappy[0],
                ClientConstants.Feedback,
                "Black, White",
                ClientConstants.Border,
                ClientConstants.GuessesLeft + 7 + ClientConstants.PromptGuess,
                inputHappy[1],
                ClientConstants.Feedback,
                "Black, White",
                ClientConstants.Border,
                ClientConstants.GuessesLeft + 6 + ClientConstants.PromptGuess,
                inputHappy[2],
                ClientConstants.Feedback,
                "Black, Black, White",
                ClientConstants.Border,
                ClientConstants.GuessesLeft + 5 + ClientConstants.PromptGuess,
                inputHappy[3],
                ClientConstants.Feedback,
                "Black, Black, Black",
                ClientConstants.Border,
                ClientConstants.GuessesLeft + 4 + ClientConstants.PromptGuess,
                inputHappy[4],
                ClientConstants.Feedback,
                "Black, Black, Black, Black",
                ClientConstants.Border,
                ClientConstants.Winner
            };

            Assert.Equal(expectedMessages, consoleDisplayStub.Messages);
        }
示例#16
0
        public void It_Should_SimulateGamePlay_When_Given_ValidInput()
        {
            var config = ConfigurationLoader.LoadMastermindConfiguration(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ConfigFiles", "StandardConfig.json"));

            var staticCodeGenerator = new CodeGenerator(new List <Peg>
            {
                Peg.Blue,
                Peg.Green,
                Peg.Yellow,
                Peg.Green
            });
            var feedbackRandomizer = new NonRandomizer();

            var codeChecker = new CodeChecker(staticCodeGenerator, feedbackRandomizer);

            var game = new Game(config, codeChecker);

            var consoleDisplayStub = new ConsoleDisplayStub();

            var mockCollector = new Mock <ICollector>();

            mockCollector.SetupSequence(x => x.Collect())
            .Returns("blue, red, green, red")
            .Returns("green, yellow, green, blue")
            .Returns("Red, RED, red. Red")
            .Returns("Blue, Green, Yellow, Green");

            var gameEngine = new GameEngine(
                consoleDisplayStub,
                mockCollector.Object,
                new ConsoleInputProcessor(config),
                game);

            //Act
            gameEngine.PlayGame();

            //Assert
            var expectedMessages = new List <string>
            {
                ClientConstants.Welcome,
                ClientConstants.Border,
                ClientConstants.SecretCode,
                "Blue, Green, Yellow, Green",
                ClientConstants.Border,
                ClientConstants.GuessesLeft + 8 + ClientConstants.PromptGuess,
                ClientConstants.Feedback,
                "Black, White",
                ClientConstants.Border,
                ClientConstants.GuessesLeft + 7 + ClientConstants.PromptGuess,
                ClientConstants.Feedback,
                "White, White, White, White",
                ClientConstants.Border,
                ClientConstants.GuessesLeft + 6 + ClientConstants.PromptGuess,
                ClientConstants.Feedback,
                "",
                ClientConstants.Border,
                ClientConstants.GuessesLeft + 5 + ClientConstants.PromptGuess,
                ClientConstants.Feedback,
                "Black, Black, Black, Black",
                ClientConstants.Border,
                ClientConstants.Winner
            };

            Assert.Equal(expectedMessages, consoleDisplayStub.Messages);
        }