aboutsummaryrefslogtreecommitdiff
path: root/logic/dice_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'logic/dice_test.go')
-rw-r--r--logic/dice_test.go115
1 files changed, 115 insertions, 0 deletions
diff --git a/logic/dice_test.go b/logic/dice_test.go
new file mode 100644
index 0000000..2a6c67c
--- /dev/null
+++ b/logic/dice_test.go
@@ -0,0 +1,115 @@
+// Copyright (c) 2016 Florian Fischer. All rights reserved.
+// Use of this source code is governed by a MIT license found in the LICENSE file.
+
+package logic
+
+import "testing"
+
+func TestSum(t *testing.T) {
+ d := Dices{1, 1, 1, 2, 6}
+ if d.Sum(1) != 3 {
+ t.Errorf("Sum(1) of %v should be 3", d)
+ }
+ d = Dices{1, 1, 1, 2, 6}
+ if d.Sum(2) != 2 {
+ t.Errorf("Sum(2) of %v should be 2", d)
+ }
+ d = Dices{1, 1, 1, 2, 6}
+ if d.Sum(0) != 11 {
+ t.Errorf("Sum(0) of %v should be 11", d)
+ }
+ d = Dices{1, 1, 1, 2, 6}
+ if d.Sum(3) != 0 {
+ t.Errorf("Sum(3) of %v should be 0", d)
+ }
+}
+
+func TestIsThreeOfAKind(t *testing.T) {
+ dices := []Dices{Dices{1, 2, 3, 3, 3}, Dices{1, 4, 4, 4, 5}, Dices{2, 2, 2, 3, 6}, Dices{1, 1, 1, 1, 1}}
+ for _, d := range dices {
+ if !d.IsThreeOfAKind() {
+ t.Errorf("%v is three of a kind", d)
+ }
+ }
+ dices = []Dices{Dices{1, 2, 3, 3, 4}, Dices{1, 4, 4, 5, 5}, Dices{1, 2, 2, 3, 6}, Dices{1, 1, 2, 5, 6}}
+ for _, d := range dices {
+ if d.IsThreeOfAKind() {
+ t.Errorf("%v is not three of a kind", d)
+ }
+ }
+}
+
+func TestIsFourOfAKind(t *testing.T) {
+ dices := []Dices{Dices{1, 3, 3, 3, 3}, Dices{1, 4, 4, 4, 4}, Dices{2, 2, 2, 2, 6}, Dices{1, 1, 1, 1, 1}}
+ for _, d := range dices {
+ if !d.IsFourOfAKind() {
+ t.Errorf("%v is four of a kind", d)
+ }
+ }
+ dices = []Dices{Dices{1, 2, 3, 3, 4}, Dices{1, 4, 4, 5, 5}, Dices{1, 2, 2, 3, 6}, Dices{1, 1, 2, 5, 6}}
+ for _, d := range dices {
+ if d.IsFourOfAKind() {
+ t.Errorf("%v is not four of a kind", d)
+ }
+ }
+}
+
+func TestIsFullHouse(t *testing.T) {
+ dices := []Dices{Dices{1, 1, 3, 3, 3}, Dices{1, 1, 4, 4, 4}, Dices{2, 2, 2, 6, 6}}
+ for _, d := range dices {
+ if !d.IsFullHouse() {
+ t.Errorf("%v is a full house", d)
+ }
+ }
+ dices = []Dices{Dices{1, 2, 3, 3, 4}, Dices{1, 4, 4, 5, 5}, Dices{1, 2, 2, 3, 6}, Dices{1, 1, 2, 5, 6}}
+ for _, d := range dices {
+ if d.IsFullHouse() {
+ t.Errorf("%v is not a full house", d)
+ }
+ }
+}
+
+func TestIsSmallStraight(t *testing.T) {
+ dices := []Dices{Dices{1, 2, 3, 4, 6}, Dices{1, 1, 2, 3, 4}, Dices{2, 3, 4, 5, 6}, Dices{1, 2, 3, 3, 4}}
+ for _, d := range dices {
+ if !d.IsSmallStraight() {
+ t.Errorf("%v is a small straight", d)
+ }
+ }
+ dices = []Dices{Dices{1, 2, 3, 3, 5}, Dices{1, 4, 4, 5, 5}, Dices{1, 2, 2, 3, 6}, Dices{1, 1, 2, 5, 6}}
+ for _, d := range dices {
+ if d.IsSmallStraight() {
+ t.Errorf("%v is not a small straight", d)
+ }
+ }
+}
+
+func TestIsLargeStraight(t *testing.T) {
+ dices := []Dices{Dices{1, 2, 3, 4, 5}, Dices{2, 3, 4, 5, 6}}
+ for _, d := range dices {
+ if !d.IsLargeStraight() {
+ t.Errorf("%v is a large straight", d)
+ }
+ }
+ dices = []Dices{Dices{1, 2, 3, 3, 4}, Dices{1, 4, 4, 5, 5}, Dices{1, 2, 2, 3, 6}, Dices{1, 1, 2, 5, 6}}
+ for _, d := range dices {
+ if d.IsLargeStraight() {
+ t.Errorf("%v is not a large straight", d)
+ }
+ }
+}
+
+func TestIsYahtzee(t *testing.T) {
+ dices := []Dices{Dices{3, 3, 3, 3, 3}, Dices{1, 1, 1, 1, 1}}
+ for _, d := range dices {
+ if !d.IsYahtzee() {
+ t.Errorf("%v is a yahtzee", d)
+ }
+ }
+ dices = []Dices{Dices{1, 2, 3, 3, 4}, Dices{1, 4, 4, 5, 5}, Dices{1, 2, 2, 3, 6}, Dices{1, 1, 2, 5, 6}}
+ for _, d := range dices {
+ if d.IsYahtzee() {
+ t.Errorf("%v is not a yahtzee", d)
+ }
+ }
+}