// 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 := Dice{1, 1, 1, 2, 6} if d.Sum(1) != 3 { t.Errorf("Sum(1) of %v should be 3", d) } d = Dice{1, 1, 1, 2, 6} if d.Sum(2) != 2 { t.Errorf("Sum(2) of %v should be 2", d) } d = Dice{1, 1, 1, 2, 6} if d.Sum(0) != 11 { t.Errorf("Sum(0) of %v should be 11", d) } d = Dice{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) { dice := []Dice{{1, 2, 3, 3, 3}, {1, 4, 4, 4, 5}, {2, 2, 2, 3, 6}, {1, 1, 1, 1, 1}} for _, d := range dice { if !d.IsThreeOfAKind() { t.Errorf("%v is three of a kind", d) } } dice = []Dice{{1, 2, 3, 3, 4}, {1, 4, 4, 5, 5}, {1, 2, 2, 3, 6}, {1, 1, 2, 5, 6}} for _, d := range dice { if d.IsThreeOfAKind() { t.Errorf("%v is not three of a kind", d) } } } func TestIsFourOfAKind(t *testing.T) { dice := []Dice{{1, 3, 3, 3, 3}, {1, 4, 4, 4, 4}, {2, 2, 2, 2, 6}, {1, 1, 1, 1, 1}} for _, d := range dice { if !d.IsFourOfAKind() { t.Errorf("%v is four of a kind", d) } } dice = []Dice{{1, 2, 3, 3, 4}, {1, 4, 4, 5, 5}, {1, 2, 2, 3, 6}, {1, 1, 2, 5, 6}} for _, d := range dice { if d.IsFourOfAKind() { t.Errorf("%v is not four of a kind", d) } } } func TestIsFullHouse(t *testing.T) { dice := []Dice{{1, 1, 3, 3, 3}, {1, 1, 4, 4, 4}, {2, 2, 2, 6, 6}} for _, d := range dice { if !d.IsFullHouse() { t.Errorf("%v is a full house", d) } } dice = []Dice{{1, 2, 3, 3, 4}, {1, 4, 4, 5, 5}, {1, 2, 2, 3, 6}, {1, 1, 2, 5, 6}} for _, d := range dice { if d.IsFullHouse() { t.Errorf("%v is not a full house", d) } } } func TestIsSmallStraight(t *testing.T) { dice := []Dice{{1, 2, 3, 4, 6}, {1, 1, 2, 3, 4}, {2, 3, 4, 5, 6}, {1, 2, 3, 3, 4}} for _, d := range dice { if !d.IsSmallStraight() { t.Errorf("%v is a small straight", d) } } dice = []Dice{{1, 2, 3, 3, 5}, {1, 4, 4, 5, 5}, {1, 2, 2, 3, 6}, {1, 1, 2, 5, 6}} for _, d := range dice { if d.IsSmallStraight() { t.Errorf("%v is not a small straight", d) } } } func TestIsLargeStraight(t *testing.T) { dice := []Dice{{1, 2, 3, 4, 5}, {2, 3, 4, 5, 6}} for _, d := range dice { if !d.IsLargeStraight() { t.Errorf("%v is a large straight", d) } } dice = []Dice{{1, 2, 3, 3, 4}, {1, 4, 4, 5, 5}, {1, 2, 2, 3, 6}, {1, 1, 2, 5, 6}} for _, d := range dice { if d.IsLargeStraight() { t.Errorf("%v is not a large straight", d) } } } func TestIsYahtzee(t *testing.T) { dice := []Dice{{3, 3, 3, 3, 3}, {1, 1, 1, 1, 1}} for _, d := range dice { if !d.IsYahtzee() { t.Errorf("%v is a yahtzee", d) } } dice = []Dice{{1, 2, 3, 3, 4}, {1, 4, 4, 5, 5}, {1, 2, 2, 3, 6}, {1, 1, 2, 5, 6}} for _, d := range dice { if d.IsYahtzee() { t.Errorf("%v is not a yahtzee", d) } } }