private static bool CallMakeGuess(SecretNumber sn, int guess) { using (new NullOut()) { return(sn.MakeGuess(guess)); } }
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."); } }
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)); }
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."); }
public void CheckConstructor() { var sn = new SecretNumber(); var number = (int)GetFieldValue(sn, "_number"); Assert.IsTrue(number >= 1 && number <= 100, "_number är inte ett tal i intervallet mellan 1 och 100."); }
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."); } }
public void CheckGuessedNumberProperty() { var sn = new SecretNumber(); var guessedNumbersField = (IList <GuessedNumber>)GetFieldValue(sn, "_guessedNumbers"); Assert.AreNotSame(guessedNumbersField, sn.GuessedNumbers, "Privacy leak!!! En kopia av referensen till det privata List-objektet returneras av egenskapen GuessedNumbers."); }
public void CheckGuessedNumberProperty() { var sn = new SecretNumber(); var guessedNumbersField = (GuessedNumber[])GetFieldValue(sn, "_guessedNumbers"); Assert.AreNotSame(guessedNumbersField, sn.GuessedNumbers, "Privacy leak!!! En kopia av den privata arrayen returneras inte av egenskapen GuessedNumbers."); }
protected void generateNewButton_Click(object sender, EventArgs e) { //Skapar nytt tal och tömmer tidigare gissningar, knappar disabled o enabled Session["myGuess"] = new SecretNumber(); LiteralPrevious.Text = ""; inputTextBox.Enabled = true; myGuessButton.Enabled = true; }
public void Execute_CallsInsert_FromRepository() { var expected = new SecretNumber <int>(new List <ISecretDigit <int> >()); _instance.Execute(expected); _repository.Verify(instance => instance.Insert(expected)); }
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."); }
private SecretNumber GetListToSession() { var guessList = Session["savedList"] as SecretNumber; if (guessList == null) { guessList = new SecretNumber(); Session["savedList"] = guessList; } return(guessList); }
public void CheckMakeGuessOldGuess() { var sn = new SecretNumber(); var guess = Math.Max((int)GetFieldValue(sn, "_number") ^ 3, 1); CallMakeGuess(sn, guess); var count = sn.Count; Assert.IsFalse(CallMakeGuess(sn, guess), "MakeGuess returnerar inte false då det gissade talet är samma som en tidigare gissning."); Assert.IsTrue(count == sn.Count, "En gissning på ett tal samma som en tidigare gissnings tal räknas felaktigt som en ny gissning."); }
// Hämtar/Skapar en "användare": private SecretNumber GetUser() { SecretNumber x = Session["User"] as SecretNumber; if (x == null) { x = new SecretNumber(); Session["User"] = x; } return(x); }
public static SecretNumberViewModel ToViewModel(this SecretNumber x, int guess = 0) { return(new SecretNumberViewModel { GuessedNumbers = x.GuessedNumbers, Number = x.Number, Count = x.Count, LastGuessedNumber = x.LastGuessedNumber, CanMakeGuess = x.CanMakeGuess, Guess = guess }); }
public void CheckConstructor() { var sn = new SecretNumber(); var number = (int)GetFieldValue(sn, "_number"); Assert.IsTrue(number >= 1 && number <= 100, "_number är inte ett tal i det slutna intervallet mellan 1 och 100."); var guessedNumbers = (int[])GetFieldValue(sn, "_guessedNumbers"); Assert.IsNotNull(guessedNumbers, "_guessedNumbers har inte initierats."); Assert.IsTrue(guessedNumbers.Length == 7, "_guessedNumbers har inte sju element."); }
// 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")); } }
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")); } }
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."); }
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."); }
protected void GuessButton_Click(object sender, EventArgs e) { int guess = int.Parse(GuessBox.Text); SecretNumber number = new SecretNumber(); if (newNumber == null) newNumber = number; if (Page.IsValid) { if (newNumber.MakeGuess(guess)) { result.InnerText = "Du gissade rätt! Det hemliga talet var " + newNumber.Number + "!" ; GuessButton.Visible = false; RetryButton.Visible = true; } else { result.InnerText = "Du gissade fel, försök igen! Du har " + newNumber.GuessesLeft + " gissningar kvar!"; if (guess > newNumber.ValueCheck) { result.InnerText = result.InnerText + " Din senaste gissning var för hög!"; } else if (guess < newNumber.ValueCheck) { result.InnerText = result.InnerText + " Din senaste gissning var för låg!"; } if (!(newNumber.CanMakeGuess)) { result.InnerText = "Du har tyvärr s**t på gissningar! Det hemliga talet var " + newNumber.Number + "!"; GuessButton.Visible = false; RetryButton.Visible = true; } } guesses.InnerText = "Dina gissningar: "; foreach (int i in newNumber.GuessedNumbers) { guesses.InnerText = guesses.InnerText + i + ", "; } } }
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 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 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."); }
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."); }
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++) { 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 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."); }
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."); } }
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."); }
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."); }
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."); }
protected void RetryButton_Click(object sender, EventArgs e) { newNumber = null; result.InnerText = ""; guesses.InnerText = ""; }
protected void Page_Load(object sender, EventArgs e) { //Kontroll av postback if (!IsPostBack) { //Skapar object och lägger den i sessionen theGuess Session["myGuess"] = new SecretNumber(); //Sparar sessionen i variabel för att kunna anropa objektet var theGuess = Session["myGuess"] as SecretNumber; } }