public void testRecursive(int value)
        {
            Question5Logics q5Logics = new Question5Logics(value);

            if (value == (int)TESTVALUES.TEST1)
            {
                Assert.Equal((int)TESTVALUES.ANSWER1, q5Logics.getAnswerFromRecursive());
            }
            else if (value == (int)TESTVALUES.TEST2)
            {
                Assert.Equal((int)TESTVALUES.ANSWER2, q5Logics.getAnswerFromRecursive());
            }
        }
        public IActionResult Question5AnswerSynchronous(Question5Model q5Model)
        {
            DateTime startTime = DateTime.Now;

            Question5Logics q5Logics = new Question5Logics(q5Model.question);

            q5Model.question5Results.Add(
                new Question5Result(Thread.CurrentThread.ManagedThreadId.ToString()
                                    , q5Logics.getAnswerFromLoop()
                                    , "Loop"));

            q5Model.question5Results.Add(
                new Question5Result(Thread.CurrentThread.ManagedThreadId.ToString()
                                    , q5Logics.getAnswerFromRecursive()
                                    , "Recursive"));


            DateTime endTime = DateTime.Now;

            TimeSpan span = endTime - startTime;
            int      ms   = (int)span.TotalMilliseconds;

            q5Model.duration = ms;

            return(View("Question5", q5Model));
        }
        public IActionResult Question5AnswerThread(Question5Model q5Model)
        {
            DateTime startTime = DateTime.Now;

            Question5Logics q5Logics = new Question5Logics(q5Model.question);

            ThreadStart threadLoopDel = delegate {
                q5Model.question5Results.Add(
                    new Question5Result(Thread.CurrentThread.ManagedThreadId.ToString()
                                        , q5Logics.getAnswerFromLoop()
                                        , "Loop"));
            };
            Thread threadLoop = new Thread(threadLoopDel);

            threadLoop.Start();

            ThreadStart threadRecursiveDel = delegate
            {
                q5Model.question5Results.Add(
                    new Question5Result(Thread.CurrentThread.ManagedThreadId.ToString()
                                        , q5Logics.getAnswerFromRecursive()
                                        , "Recursive"));
            };
            Thread threadRecursive = new Thread(threadRecursiveDel);

            threadRecursive.Start();

            while (threadRecursive.ThreadState != ThreadState.Stopped ||
                   threadLoop.ThreadState != ThreadState.Stopped)
            {
            }

            DateTime endTime = DateTime.Now;
            TimeSpan span    = endTime - startTime;
            int      ms      = (int)span.TotalMilliseconds;

            q5Model.duration = ms;

            return(View("Question5", q5Model));
        }