Example #1
0
        public void CheckMakeGuessOldGuess()
        {
            var sn    = new SecretNumber();
            var guess = Math.Max((int)GetFieldValue(sn, "_number") ^ 3, 1);

            sn.MakeGuess(guess);
            Assert.IsTrue(sn.MakeGuess(guess) == Outcome.OldGuess, "MakeGuess returnerar inte Outcome.OldGuess då det gissade talet är samma som en tidigare gissning.");
            Assert.IsTrue(sn.Outcome == Outcome.OldGuess, "Egenskapen Outcome är inte Outcome.OldGuess då det gissade talet är samma som en tidigare gissning.");
        }
Example #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.");
            }
        }
 private static bool CallMakeGuess(SecretNumber sn, int guess)
 {
     using (new NullOut())
     {
         return(sn.MakeGuess(guess));
     }
 }
Example #4
0
        public void CheckMakeGuessRight()
        {
            var sn = new SecretNumber();

            Assert.IsTrue(sn.MakeGuess((int)GetFieldValue(sn, "_number")) == Outcome.Right, "MakeGuess returnerar inte Outcome.Right då det gissade talet är samma som det hemliga talet.");
            Assert.IsTrue(sn.Outcome == Outcome.Right, "Egenskapen Outcome är inte Outcome.Right efter en gissning på rätt tal gjorts.");
        }
Example #5
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.");
        }
Example #6
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.");
        }
    protected void btnCheckNr_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid)
        {
            return;
        }

        else
        {
            var guessedNr = int.Parse(inputBox.Text);
            var result    = guessNr.MakeGuess(guessedNr); < -The name 'guessNr' does not exist in the current context
Example #8
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.");
        }
Example #9
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.");
        }
Example #10
0
        public ActionResult Index([Bind(Include = "Guess")] ViewModel viewModel)
        {
            try
            {
                if (Session.Count > 0)
                {
                    _secretNumber          = (SecretNumber)Session["SecretNumber"];
                    viewModel.SecretNumber = _secretNumber;
                    if (ModelState.IsValid)
                    {
                        var outcome = _secretNumber.MakeGuess(viewModel.Guess);

                        switch (outcome)
                        {
                        case Outcome.Indefinite:
                            break;

                        case Outcome.High:
                            viewModel.Status = _secretNumber.LastGuessedNumber.Number + " är för högt.";
                            break;

                        case Outcome.Low:
                            viewModel.Status = _secretNumber.LastGuessedNumber.Number + " är för lågt";
                            break;

                        case Outcome.OldGuess:
                            viewModel.Status = "Du har redan gissat på detta talet ";
                            break;

                        case Outcome.Right:
                            viewModel.Status = "Grattis, du klarade det på " + _secretNumber.Count + " försök!";
                            break;
                        }
                        if (!_secretNumber.CanMakeGuess)
                        {
                            viewModel.Status += " Det hemliga talet var " + _secretNumber.Number;
                        }
                    }
                    return(View("Index", viewModel));
                }
                else
                {
                    throw new ApplicationException("Sessionen är felaktig");
                }
            }
            catch (Exception e)
            {
                return(View("OutOfTime"));
            }
        }
Example #11
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.");
        }
Example #12
0
        public void CheckMakeGuessArgumentOfRangeExcceptionIfGuessGreaterThan100()
        {
            var sn = new SecretNumber();

            try
            {
                sn.MakeGuess(101);
                throw new ApplicationException();
            }
            catch (ArgumentOutOfRangeException)
            {
                // Eat!
                return;
            }
            catch
            {
                Assert.Fail("ArgumentOutOfRangeException kastas inte vid gissning på ett tal större än 100.");
            }
        }
        public void CheckMakeGuessArgumentOfRangeExcceptionIfGuessLowerThan1()
        {
            var sn = new SecretNumber();

            try
            {
                using (new NullOut())
                {
                    sn.MakeGuess(0);
                    throw new ApplicationException();
                }
            }
            catch (ArgumentOutOfRangeException)
            {
                // Eat!
                return;
            }
            catch
            {
                Assert.Fail("ArgumentOutOfRangeException kastas inte vid gissning på ett tal mindre än 1.");
            }
        }
Example #14
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.");
        }
Example #15
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.");
        }
Example #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);
                }
            }
        }