public void CheckInitialize()
        {
            var sn = new SecretNumber();
            int number;

            do
            {
                sn.Initialize();
                number = (int)GetFieldValue(sn, "_number");
                Assert.IsTrue(number >= 1 && number <= 100, "_number är inte ett tal i det slutna intervallet mellan 1 och 100.");
            } while (number >= 94);

            for (int i = 94; i <= 100; i++)
            {
                CallMakeGuess(sn, i);
            }
            sn.Initialize();

            Assert.IsTrue(sn.Count == 0, "Count initieras inte till 0.");
            Assert.IsTrue(sn.CanMakeGuess, "CanMakeGuess initieras inte till true.");

            var guessedNumbers = (int[])GetFieldValue(sn, "_guessedNumbers");

            foreach (var guess in guessedNumbers)
            {
                Assert.IsTrue(guess == 0, "_guessedNumbers verkar inte tömmas på gammal information.");
            }
        }
Ejemplo n.º 2
0
        public void CheckInitialize()
        {
            var sn = new SecretNumber();
            int number;

            do
            {
                sn.Initialize();
                number = (int)GetFieldValue(sn, "_number");
                Assert.IsTrue(number >= 1 && number <= 100, "_number är inte ett tal i det slutna intervallet mellan 1 och 100.");
            } while (number >= 94);

            for (int i = 94; i <= 100; i++)
            {
                sn.MakeGuess(i);
            }
            sn.Initialize();

            Assert.IsTrue(sn.Count == 0, "Count initieras inte till 0.");
            Assert.IsNull(sn.Guess, "Guess initieras inte till null.");
            Assert.IsTrue(sn.Outcome == Outcome.Indefinite, "Outcome initieras inte till Outcome.Indefinite.");

            foreach (var gn in sn.GuessedNumbers)
            {
                Assert.IsTrue(gn.Number == null && gn.Outcome == Outcome.Indefinite, "GuessedNumbers verkar inte tömmas på gammal information.");
            }
        }
Ejemplo n.º 3
0
        public ActionResult Index()
        {
            if (Session.IsNewSession)
            {
                _secretNumber = new SecretNumber();
                Session.Add("SecretNumber", _secretNumber);
            }
            else
            {
                if (Session.Count > 0)
                {
                    _secretNumber = (SecretNumber)Session["SecretNumber"];
                    // Kollar om hemliga talet behöver "startas om"
                    if (!_secretNumber.CanMakeGuess)
                    {
                        _secretNumber.Initialize();
                    }
                }
                else
                {
                    return(OutOfTime());
                }
            }
            var viewModel = new ViewModel
            {
                SecretNumber = _secretNumber
            };

            return(View("Index", viewModel));
        }
Ejemplo n.º 4
0
        public void CheckInitialize()
        {
            var sn = new SecretNumber();
            int number;

            do
            {
                sn.Initialize();
                number = (int)GetFieldValue(sn, "_number");
                Assert.IsTrue(number >= 1 && number <= 100, "_number är inte ett tal i intervallet mellan 1 och 100.");
            } while (number >= 94);

            for (int i = 94; i <= 100; i++)
            {
                CallMakeGuess(sn, i);
            }
            sn.Initialize();

            Assert.IsTrue((int)GetFieldValue(sn, "_count") == 0, "_count initieras inte till 0.");
        }
Ejemplo n.º 5
0
        public void CheckCanMakeGuessProperty()
        {
            var sn     = new SecretNumber();
            var number = (int)GetFieldValue(sn, "_number");

            while (number >= 94)
            {
                sn.Initialize();
                number = (int)GetFieldValue(sn, "_number");
            }
            for (int i = 94; i <= 100; i++)
            {
                Assert.IsTrue(sn.CanMakeGuess, "Egenskapen CanMakeGuess är inte true trots att alla gissningar inte gjorts.");
                sn.MakeGuess(i);
            }
            Assert.IsFalse(sn.CanMakeGuess, "Egenskapen CanMakeGuess är inte false trots att sju gissningar gjorts.");

            sn.Initialize();
            sn.MakeGuess((int)GetFieldValue(sn, "_number"));
            Assert.IsFalse(sn.CanMakeGuess, "Egenskapen CanMakeGuess är inte false trots att en gissning på rätt tal gjorts.");
        }
Ejemplo n.º 6
0
        // Initiearar det hemliga talet igen och skickar tillbaka det till index-metoden
        public ActionResult Reload()
        {
            if (Session.Count > 0)
            {
                _secretNumber = (SecretNumber)Session["SecretNumber"];
                _secretNumber.Initialize();

                return(RedirectToAction("Index"));
            }
            else
            {
                return(View("OutOfTime"));
            }
        }
Ejemplo n.º 7
0
        public void CheckInitialize()
        {
            var sn = new SecretNumber();
            int number;

            do
            {
                sn.Initialize();
                number = (int)GetFieldValue(sn, "_number");
                Assert.IsTrue(number >= 1 && number <= 100, "_number är inte ett tal i det slutna intervallet mellan 1 och 100.");
            } while (number >= 94);

            for (int i = 94; i <= 100; i++)
            {
                sn.MakeGuess(i);
            }
            sn.Initialize();

            Assert.IsTrue(sn.GuessedNumbers.Count == 0, "Listan med gamla gissningar töms inte.");
            Assert.IsTrue(sn.Count == 0, "Count är inte till 0.");
            Assert.IsNull(sn.LastGuessedNumber.Number, "LastGuessedNumber.Number är inte satt till null.");
            Assert.IsTrue(sn.LastGuessedNumber.Outcome == Outcome.Indefinite, "LastGuessedNumber.Outcome är inte satt till Outcome.Indefinite.");
        }
Ejemplo n.º 8
0
        public void CheckNumberProperty()
        {
            var sn = new SecretNumber();

            Assert.IsNull(sn.Number, "Egenskapen Number returnerar inte null trots att det finns gissningar kvar.");
            var number = (int)GetFieldValue(sn, "_number");

            while (number >= 94)
            {
                sn.Initialize();
                number = (int)GetFieldValue(sn, "_number");
            }
            for (int i = 94; i <= 100; i++)
            {
                sn.MakeGuess(i);
            }
            Assert.IsTrue(sn.Number == number, "Egenskapen Number har inte samma värde som fältet _number trots att det inte finns några gissningar kvar.");
        }
Ejemplo n.º 9
0
        public void CheckGuessProperty()
        {
            var sn     = new SecretNumber();
            var number = (int)GetFieldValue(sn, "_number");

            while (number >= 94)
            {
                sn.Initialize();
                number = (int)GetFieldValue(sn, "_number");
            }
            Assert.IsNull(sn.Guess, "Egenskapen Guess är inte null trots att ingen gissning gjorts.");
            sn.MakeGuess(number - 1);
            Assert.IsTrue(sn.Guess == number - 1, "Egenskapen Guess har inte värdet av den senaste gissningen då en gissning på ett för lågt tal gjorts.");
            sn.MakeGuess(number + 1);
            Assert.IsTrue(sn.Guess == number + 1, "Egenskapen Guess har inte värdet av den senaste gissningen då en gissning på ett för högt tal gjorts.");
            sn.MakeGuess(number);
            Assert.IsTrue(sn.Guess == number, "Egenskapen Guess har inte värdet av den senaste gissningen då en gissning på rätt tal gjorts.");
        }
Ejemplo n.º 10
0
        public void CheckMakeGuesskNoMoreGuesses()
        {
            var sn     = new SecretNumber();
            var number = (int)GetFieldValue(sn, "_number");

            while (number >= 94)
            {
                sn.Initialize();
                number = (int)GetFieldValue(sn, "_number");
            }
            for (int i = 94; i <= 100; i++)
            {
                sn.MakeGuess(i);
            }
            var result = sn.MakeGuess(number);

            Assert.IsTrue(result == Outcome.NoMoreGuesses, "MakeGuess returnerar inte Outcome.NoMoreGuesses då fler gissningar än sju görs.");
            Assert.IsTrue(sn.Outcome == Outcome.NoMoreGuesses, "Egenskapen Outcome är inte Outcome.NoMoreGuesses då fler gissningar än sju görs.");
        }
        public void CheckMakeGuessHigh()
        {
            var sn = new SecretNumber();
            int number, prevNumber, loopCount = 5;

            do
            {
                prevNumber = (int)GetFieldValue(sn, "_number");
                Thread.Sleep(100);
                sn.Initialize();
                number = (int)GetFieldValue(sn, "_number");
                Assert.IsTrue(number >= 1 && number <= 100, "Initialize(): _number är inte ett tal i det slutna intervallet mellan 1 och 100.");
                if (--loopCount == 0)
                {
                    Assert.IsTrue(prevNumber != number, "Initialize(): _number verkar inte slumpas.");
                    return;
                }
            } while (number > 99);
            Assert.IsFalse(CallMakeGuess(sn, 100), "MakeGuess returnerar inte false då det gissade talet är högre än det hemliga talet.");
        }
Ejemplo n.º 12
0
        public void CheckCountProperty()
        {
            var sn     = new SecretNumber();
            var number = (int)GetFieldValue(sn, "_number");

            while (number >= 94)
            {
                sn.Initialize();
                number = (int)GetFieldValue(sn, "_number");
            }
            Assert.IsTrue(sn.Count == 0, "Egenskapen Count är inte 0 trots att ingen gissning gjorts.");
            int count = 0;

            for (int i = 94; i <= 100; i++)
            {
                sn.MakeGuess(i);
                Assert.IsTrue(sn.Count == ++count, String.Format("Egenskapen Count är inte {0} trots att {0} gissning(ar) gjorts.", count));
            }
            sn.MakeGuess(number);
            Assert.IsTrue(sn.Count == 7, "Egenskapen Count slutar inte att räknas upp efter att sju gissningar gjorts och ytterligare gissningar görs.");
        }
        public void CheckGuessesLeftProperty()
        {
            var sn     = new SecretNumber();
            var number = (int)GetFieldValue(sn, "_number");

            while (number >= 94)
            {
                sn.Initialize();
                number = (int)GetFieldValue(sn, "_number");
            }

            Assert.IsTrue(sn.GuessesLeft == 7, "GuessesLeft är inte 7 trots att ingen gissning gjorts.");

            int count = 0;

            for (int i = 94; i <= 100; i++)
            {
                CallMakeGuess(sn, i);
                Assert.IsTrue(sn.Count == ++count, String.Format("GuessesLeft: GuessesLeft är inte {0} trots att {1} gissning(ar) gjorts.", 7 - count, count));
            }
        }
        public void CheckCountProperty()
        {
            var sn     = new SecretNumber();
            var number = (int)GetFieldValue(sn, "_number");

            while (number >= 94)
            {
                sn.Initialize();
                number = (int)GetFieldValue(sn, "_number");
            }

            Assert.IsTrue(sn.Count == 0, "Egenskapen Count är inte 0 trots att ingen gissning gjorts.");

            int count = 0;

            for (int i = 94; i <= 100; i++)
            {
                CallMakeGuess(sn, i);
                Assert.IsTrue(sn.Count == ++count, String.Format("Egenskapen Count är inte {0} trots att {0} gissning(ar) gjorts.", count));
            }

            try
            {
                CallMakeGuess(sn, number);
                Assert.IsTrue(sn.Count == 7, "Egenskapen Count slutar inte att räknas upp efter att sju gissningar gjorts och ytterligare gissningar görs.");
            }
            catch (ApplicationException)
            {
                // Eat!
                return;
            }
            catch
            {
                // Eat!
            }

            Assert.Fail("ApplicationsException kastas inte då fler gissningar än sju görs.");
        }
Ejemplo n.º 15
0
        public void CheckMakeGuessHigh()
        {
            var sn = new SecretNumber();
            int number, prevNumber, loopCount = 5;

            do
            {
                prevNumber = (int)GetFieldValue(sn, "_number");
                Thread.Sleep(100);
                sn.Initialize();
                number = (int)GetFieldValue(sn, "_number");
                Assert.IsTrue(number >= 1 && number <= 100, "Initialize(): _number är inte ett tal i det slutna intervallet mellan 1 och 100.");
                if (--loopCount == 0)
                {
                    Assert.IsTrue(prevNumber != number, "Initialize(): _number verkar inte slumpas");
                    return;
                }
            } while (number > 99);
            var result = sn.MakeGuess(100);

            Assert.IsTrue(result == Outcome.High, "MakeGuess returnerar inte Outcome.High då det gissade talet är högre än det hemliga talet.");
            Assert.IsTrue(sn.Outcome == Outcome.High, "Egenskapen Outcome är inte Outcome.High efter en gissning på ett för stort tal gjorts.");
        }
Ejemplo n.º 16
0
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (IsValid)
            {
                if (IsPostBack)
                {
                    SecretNumber thisGuess = SecretN;

                    Outcome guess = thisGuess.MakeGuess(int.Parse(InputTextBox.Text));
                    if (thisGuess.CanMakeGuess)
                    {
                        Button1.Enabled      = true;
                        InputTextBox.Enabled = true;
                        InputTextBox.Focus();

                        int  currentGuess = int.Parse(InputTextBox.Text);
                        bool exists       = thisGuess._previousGuesses.Contains(currentGuess);

                        if (!exists)
                        {
                            thisGuess._previousGuesses.Add(int.Parse(InputTextBox.Text));

                            //guessLabel.Text = thisGuess.Number.ToString();

                            if (guess == Outcome.High)
                            {
                                Label2.Text = "Du gissade för högt.";
                            }
                            else if (guess == Outcome.Low)
                            {
                                Label2.Text = "Du gissade för lågt.";
                            }
                        }
                        else
                        {
                            Label2.Text = "Du har redan gissat på " + currentGuess;
                        }
                    }
                    else if (guess == Outcome.Correct)
                    {
                        Button1.Enabled          = false;
                        InputTextBox.Enabled     = false;
                        Label2.Text              = "GRATTIS";
                        ResetPlaceHolder.Visible = true;
                        ResetButton.Focus();
                        Session.Clear();
                        thisGuess.Initialize();
                    }
                    else if (guess == Outcome.NoMoreGuesses)
                    {
                        Button1.Enabled          = false;
                        InputTextBox.Enabled     = false;
                        Label2.Text              = "Ledsen, inga gissningar kvar. Talet var " + thisGuess.Number;
                        ResetPlaceHolder.Visible = true;
                        ResetButton.Focus();
                        thisGuess.Initialize();
                    }

                    SecretN         = thisGuess;
                    guessLabel.Text = "Tidigare gissningar: " + String.Join(", ", thisGuess.PreviousGuesses);
                }
            }
        }