예제 #1
0
        public void Test_Should_Track_Right_And_Wrong_Cards()
        {
            var timedTest = new TimedTest <SimpleAdditionCard, int>
            {
                FlashCards = new List <SimpleAdditionCard>
                {
                    new SimpleAdditionCard {
                        TopNumber = 1, BottomNumber = 1
                    },
                    new SimpleAdditionCard {
                        TopNumber = 1, BottomNumber = 1
                    }
                }
            };

            timedTest.PrepareTest();

            timedTest.GetNextCard();
            timedTest.Answer(1);
            timedTest.GetNextCard();
            timedTest.Answer(2);

            var rightAnswerCard = (from x in timedTest.FlashCardResults
                                   where !x.IsCorrect
                                   select x).First();

            rightAnswerCard.Flashcard.ShouldNotBe(null);
            rightAnswerCard.StartTime.ShouldNotBe(DateTime.MinValue);
            rightAnswerCard.StopTime.ShouldNotBe(DateTime.MinValue);
        }
예제 #2
0
        public void Cards_Should_Be_In_A_Random_Order()
        {
            var originalList = SimpleAdditionCardFactory.CreateCompleteSet(2, 100, 2, 100);

            var timedTest = new TimedTest <SimpleAdditionCard, int>
            {
                FlashCards = originalList
            };

            timedTest.PrepareTest();

            var randomlyOrderedCards = timedTest.PreparedCards;

            for (int i = 1; i < originalList.Count - 1; i++)
            {
                var previous = randomlyOrderedCards[i - 1].Equals(originalList[i - 1]);
                var current  = randomlyOrderedCards[i].Equals(originalList[i]);
                var next     = randomlyOrderedCards[i + 1].Equals(originalList[i + 1]);

                (previous && current && next).ShouldBe(false);
            }
        }
예제 #3
0
        private static void Main(string[] args)
        {
            var flashcards = SimpleAdditionCardFactory.CreateCompleteSet(1, 1, 1, 9);

            DataStore.Instance.Flashcards = flashcards;
            DataStore.Instance.Save("SimpleData.json.txt");

            var test = new TimedTest <SimpleAdditionCard, int>
            {
                FlashCards = SimpleAdditionCardFactory.CreateCompleteSet(2, 10, 5, 12)
            };

            test.PrepareTest();

            for (int i = 0; i < test.FlashCards.Count; i++)
            {
                var card = test.GetNextCard();
                Console.WriteLine(card.Prompt);


                var validNumber = false;
                int number      = -1;
                while (!validNumber)
                {
                    var input = Console.ReadLine();
                    validNumber = int.TryParse(input, out number);
                }

                test.Answer(number);
            }


            Console.WriteLine("You missed: {0}", test.NumberOfIncorrectAnswers);
            Console.WriteLine();

            var wrongAnswers = (from x in test.FlashCardResults
                                where !x.IsCorrect
                                select x).ToList();

            foreach (var wrongAnswer in wrongAnswers)
            {
                Console.WriteLine(wrongAnswer.Flashcard.Prompt);
                Console.WriteLine("Your Answer:      {0}", wrongAnswer.Answer);
                Console.WriteLine("Correct Answer:   {0}", wrongAnswer.Flashcard.Answer);
                Console.WriteLine();
            }

            var averageRightAnswerTimeTicks = (from x in test.FlashCardResults
                                               where x.IsCorrect
                                               select x.Seconds).Average();

            var averageRightAnswerTime = TimeSpan.FromSeconds(averageRightAnswerTimeTicks);

            Console.WriteLine("Average Answer Time: {0}", averageRightAnswerTime);


            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("Press enter to close...");
            Console.ReadLine();
        }