public void TestEquals() { SudokuDifficulty newDifficulty = SudokuPuzzleTest.Difficulty == SudokuDifficulty.None ? SudokuDifficulty.Easy : SudokuDifficulty.None; SudokuPuzzle puzzle = new SudokuPuzzle(this.Sudoku.Size, newDifficulty); SudokuGenerator.AddNumbers(puzzle); for (int i = 0; i < this.Sudoku.Size; i++) { for (int j = 0; j < this.Sudoku.Size; j++) { this.Sudoku[i, j] = puzzle[i, j]; } } Assert.AreEqual(this.Sudoku, puzzle); Assert.IsTrue(this.Sudoku.Equals(puzzle)); Assert.IsTrue(this.Sudoku == puzzle); Assert.IsFalse(this.Sudoku != puzzle); Assert.IsFalse(this.Sudoku == null); Assert.IsFalse(null == this.Sudoku); SudokuPuzzle nullPuzzle = null; Assert.IsTrue(null == nullPuzzle); this.Sudoku[0, 0] = 0; Assert.AreNotEqual(this.Sudoku, puzzle); }
public void TestGetIncorrect() { SudokuGenerator.AddNumbers(this.Sudoku); Random random = new Random(); for (int i = 0; i < SudokuPuzzle.MaximumSupportedSize * 2; i++) { int row = random.Next(this.Sudoku.Size), column = random.Next(this.Sudoku.Size); int number; do { number = random.Next(0, this.Sudoku.Size + 1); } while (this.Sudoku[row, column] == number); } IEnumerable <Tuple <int, int> > incorrect = this.Sudoku.GetIncorrect(); for (int i = 0; i < this.Sudoku.Size; i++) { for (int j = 0; j < this.Sudoku.Size; j++) { if (!this.Sudoku.IsCorrect(i, j)) { Assert.IsTrue(incorrect.Contains(new Tuple <int, int>(i, j))); } } } }
public void TestAddNumbers() { SudokuPuzzle sudoku = SudokuGenerator.AddNumbers(SudokuPuzzleTest.Size, SudokuPuzzleTest.Difficulty); Assert.ThrowsException <ArgumentNullException>(() => SudokuGenerator.AddNumbers(null)); Assert.ThrowsException <ArgumentException>(() => SudokuGenerator.AddNumbers(SudokuPuzzle.MaximumSupportedSize, SudokuDifficulty.None)); if (SudokuPuzzle.MaximumSupportedSize > 1) { Assert.ThrowsException <ArgumentException>(() => SudokuGenerator.AddNumbers(2, SudokuDifficulty.Easy)); } Assert.ThrowsException <ArgumentOutOfRangeException>(() => SudokuGenerator.AddNumbers(SudokuPuzzle.MaximumSupportedSize + 1, SudokuDifficulty.Easy)); Assert.ThrowsException <ArgumentOutOfRangeException>(() => SudokuGenerator.AddNumbers(-1, SudokuDifficulty.Easy)); for (int i = 0; i < sudoku.Size; i++) { for (int j = 0; j < sudoku.Size; j++) { int number = sudoku[i, j]; Assert.IsFalse(sudoku.RowContains(i, j, number, true)); Assert.IsFalse(sudoku.ColumnContains(i, j, number, true)); Assert.IsFalse(sudoku.BlockContains(i, j, number, true)); } } }
private void OnSingleButtonFragmentClick(Object sender, EventArgs e) { SingleButtonFragment singleButtonFragment = this.FragmentManager.FindFragmentByTag("button_fragment") as SingleButtonFragment; SudokuView sudokuView = this.View.FindViewById <SudokuView>(Resource.Id.sudoku_view); String addText = this.Resources.GetString(Resource.String.add_button_text); String removeText = this.Resources.GetString(Resource.String.remove_button_text); String playText = this.Resources.GetString(Resource.String.play_button_text); if (singleButtonFragment.Text == addText) { SudokuGenerator.AddNumbers(this.ViewModel.Sudoku); sudokuView.Update(); this.ViewModel.ButtonText = singleButtonFragment.Text = removeText; } else if (singleButtonFragment.Text == removeText) { SudokuGenerator.RemoveNumbers(this.ViewModel.Sudoku); sudokuView.Update(); this.ViewModel.ButtonText = singleButtonFragment.Text = playText; } else if (singleButtonFragment.Text == playText) { this.Stop(); FragmentTransaction ft = this.FragmentManager.BeginTransaction(); ft.Remove(singleButtonFragment); ft.Commit(); this.Activity.Intent.PutExtra("action", (int)ActionType.Play); this.Activity.Intent.Extras.PutInt("action", (int)ActionType.Play); ActionType action = (ActionType)this.Activity.Intent.Extras.GetInt("action", (int)ActionType.None); this.ViewModel.ButtonText = null; this.Start(); } }
public void TestRemoveNumbers() { Assert.ThrowsException <ArgumentNullException>(() => SudokuGenerator.RemoveNumbers(null)); SudokuPuzzle sudoku = SudokuGenerator.AddNumbers(SudokuPuzzleTest.Size, SudokuPuzzleTest.Difficulty); Console.WriteLine(sudoku); SudokuPuzzle original = (SudokuPuzzle)sudoku.Clone(); SudokuGenerator.RemoveNumbers(sudoku); Console.WriteLine(sudoku); SudokuSolver.RecursiveSolve(sudoku); Assert.AreEqual(original, sudoku); }
public void TestOperators() { SudokuGenerator.AddNumbers(this.Sudoku); SudokuPuzzle clone = (SudokuPuzzle)this.Sudoku.Clone(); Assert.AreEqual(this.Sudoku, clone); Assert.IsTrue(this.Sudoku.Equals(clone)); Assert.IsTrue(this.Sudoku == clone); int row = 0, column = 0; clone[row, column] = 0; Assert.AreNotEqual(this.Sudoku, clone); Assert.IsFalse(this.Sudoku.Equals(clone)); Assert.IsFalse(this.Sudoku == clone); Assert.IsTrue(this.Sudoku != clone); }
public void TestGetHashCode() { SudokuDifficulty newDifficulty = SudokuPuzzleTest.Difficulty == SudokuDifficulty.None ? SudokuDifficulty.Easy : SudokuDifficulty.None; SudokuPuzzle puzzle = new SudokuPuzzle(this.Sudoku.Size, newDifficulty); SudokuGenerator.AddNumbers(puzzle); for (int i = 0; i < this.Sudoku.Size; i++) { for (int j = 0; j < this.Sudoku.Size; j++) { this.Sudoku[i, j] = puzzle[i, j]; } } int hashCode = puzzle.GetHashCode(); Assert.AreEqual(this.Sudoku, puzzle); Assert.AreEqual(this.Sudoku.GetHashCode(), hashCode); this.Sudoku[0, 0] = 0; Assert.AreNotEqual(this.Sudoku, puzzle); Assert.AreNotEqual(this.Sudoku.GetHashCode(), hashCode); }
public void TestCheck() { SudokuGenerator.AddNumbers(this.Sudoku); Assert.IsTrue(this.Sudoku.Check()); SudokuGenerator.RemoveNumbers(this.Sudoku); Assert.IsFalse(this.Sudoku.Check()); SudokuSolver.RecursiveSolve(this.Sudoku); Assert.IsTrue(this.Sudoku.Check()); Random random = new Random(); int row, column; do { row = random.Next(this.Sudoku.Size); column = random.Next(this.Sudoku.Size); } while (this.Sudoku.CheckReadOnly(row, column)); int number = this.Sudoku[row, column]; this.Sudoku[row, column] = 0; Assert.IsFalse(this.Sudoku.Check()); this.Sudoku[row, column] = number; Assert.IsTrue(this.Sudoku.Check()); }