Exemplo n.º 1
0
    public void SimonSolvedWithWrongAnswersTest(IMiniGameEventManager miniGameEventManager, string miniGameId, int inputCount, int inputSequenceCount, int failureThreshold)
    {
        bool miniGameSolved     = false;
        int  wrongAnswerCount   = 0;
        int  correctAnswerCount = 0;
        bool miniGameFailed     = false;

        miniGameEventManager.OnMiniGameInputReceived(
            Arg.Any <string>(),
            Arg.Do <InputResults>(x => {
            if (x.Equals(InputResults.FAIL))
            {
                wrongAnswerCount++;
            }
            if (x.Equals(InputResults.PASS))
            {
                correctAnswerCount++;
            }
        }),
            Arg.Any <int>()
            );
        miniGameEventManager.When(x => x.OnMiniGameFailed(miniGameId)).Do(x => miniGameFailed = true);
        miniGameEventManager.When(x => x.OnMiniGameSolved(miniGameId)).Do(x => miniGameSolved = true);

        Simon simon = new Simon(miniGameEventManager, miniGameId, inputCount, inputSequenceCount, failureThreshold);

        int[] inputSequence = simon.GetInputSequence();

        simon.VerifyInput(simon.GetInputIds().Length + 1);

        foreach (int input in inputSequence)
        {
            simon.VerifyInput(input);
        }

        Assert.IsTrue(miniGameSolved);
        Assert.IsTrue(!miniGameFailed);
        Assert.AreEqual(simon.GetInputSequence().Length, correctAnswerCount);
        Assert.AreEqual(simon.GetFailureCount(), wrongAnswerCount);
    }