Updated tiles_test following effective go format
This commit is contained in:
+37
-33
@@ -21,21 +21,21 @@ func TestPatternNormalization(t *testing.T) {
|
||||
func TestTileComparator(t *testing.T) {
|
||||
type testcase struct {
|
||||
Args [2]string
|
||||
Expected bool
|
||||
Want bool
|
||||
}
|
||||
testcases := []testcase{
|
||||
{Args: [2]string{"1W", "6W"}, Expected: true},
|
||||
{Args: [2]string{"9W", "1B"}, Expected: true},
|
||||
{Args: [2]string{"4W", "BA"}, Expected: true},
|
||||
{Args: [2]string{"BE", "NA"}, Expected: false},
|
||||
{Args: [2]string{"1W", "6W"}, Want: true},
|
||||
{Args: [2]string{"9W", "1B"}, Want: true},
|
||||
{Args: [2]string{"4W", "BA"}, Want: true},
|
||||
{Args: [2]string{"BE", "NA"}, Want: false},
|
||||
}
|
||||
for _, v := range testcases {
|
||||
result, err := TileComparator(v.Args[0], v.Args[1])
|
||||
if err != nil {
|
||||
log.Fatalf("Failed in comparing tiles: %v", err)
|
||||
}
|
||||
if result != v.Expected {
|
||||
log.Fatalf("Failed in comparing tiles %s vs %s, expectd: %t, got %t", v.Args[0], v.Args[1], v.Expected, result)
|
||||
if result != v.Want {
|
||||
log.Fatalf("Failed in comparing tiles %s vs %s, expectd: %t, got %t", v.Args[0], v.Args[1], v.Want, result)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -43,53 +43,57 @@ func TestTileComparator(t *testing.T) {
|
||||
func TestSort(t *testing.T) {
|
||||
type testcase struct {
|
||||
Args []string
|
||||
Expected []string
|
||||
Want []string
|
||||
}
|
||||
testcases := []testcase{
|
||||
{Args: []string{"7B", "4T", "2T", "3W", "5W", "4W", "BA", "DO"}, Expected: []string{"3W", "4W", "5W", "2T", "4T", "7B", "DO", "BA"}},
|
||||
{Args: []string{"8B", "8B", "7B", "6B", "5W", "4W", "4W", "4W"}, Expected: []string{"4W", "4W", "4W", "5W", "6B", "7B", "8B", "8B"}},
|
||||
{Args: []string{"BA", "BA", "BA", "BA", "XI", "XI", "XI", "NA"}, Expected: []string{"XI", "XI", "XI", "NA", "BA", "BA", "BA", "BA"}},
|
||||
{Args: []string{"7B", "4T", "2T", "3W", "5W", "4W", "BA", "DO"}, Want: []string{"3W", "4W", "5W", "2T", "4T", "7B", "DO", "BA"}},
|
||||
{Args: []string{"8B", "8B", "7B", "6B", "5W", "4W", "4W", "4W"}, Want: []string{"4W", "4W", "4W", "5W", "6B", "7B", "8B", "8B"}},
|
||||
{Args: []string{"BA", "BA", "BA", "BA", "XI", "XI", "XI", "NA"}, Want: []string{"XI", "XI", "XI", "NA", "BA", "BA", "BA", "BA"}},
|
||||
}
|
||||
for _, v := range testcases {
|
||||
err := Sort(v.Args)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed in sorting tiles: %v", err)
|
||||
}
|
||||
if !reflect.DeepEqual(v.Args, v.Expected) {
|
||||
log.Fatalf("Failed in sorting tiles expectd: %v, got %v", v.Expected, v.Args)
|
||||
if !reflect.DeepEqual(v.Args, v.Want) {
|
||||
log.Fatalf("Failed in sorting tiles expectd: %v, got %v", v.Want, v.Args)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCheckXushuTile(t *testing.T) {
|
||||
type testcase struct {
|
||||
Name string
|
||||
Args []string
|
||||
Expected [][][]string
|
||||
Want [][][]string
|
||||
}
|
||||
testcases := []testcase{
|
||||
{Args: []string{}, Expected: [][][]string{}},
|
||||
{Args: []string{"4W", "4W"}, Expected: [][][]string{{{"4W", "4W"}}}},
|
||||
{Args: []string{"4W", "4W", "4W", "4W"}, Expected: [][][]string{{{"4W", "4W", "4W", "4W"}}, {{"4W", "4W"}, {"4W", "4W"}}}},
|
||||
{Args: []string{"2W", "3W", "3W", "4W", "4W", "4W", "5W", "5W", "6W"}, Expected: [][][]string{{{"2W", "3W", "4W"}, {"3W", "4W", "5W"}, {"4W", "5W", "6W"}}}},
|
||||
{Args: []string{"2W", "3W", "3W", "4W", "4W", "4W", "5W", "5W", "5W", "5W", "6W"}, Expected: [][][]string{{{"2W", "3W", "4W"}, {"3W", "4W", "5W"}, {"4W", "5W", "6W"}, {"5W", "5W"}}}},
|
||||
{Args: []string{"3W", "3W", "3W", "4W", "4W", "4W", "5W", "5W", "5W"}, Expected: [][][]string{{{"3W", "3W", "3W"}, {"4W", "4W", "4W"}, {"5W", "5W", "5W"}}, {{"3W", "4W", "5W"}, {"3W", "4W", "5W"}, {"3W", "4W", "5W"}}}},
|
||||
{Args: []string{"3W", "3W", "3W", "3W", "4W", "4W", "4W", "4W", "5W", "5W", "5W", "5W"}, Expected: [][][]string{{{"3W", "3W", "3W", "3W"}, {"4W", "4W", "4W", "4W"}, {"5W", "5W", "5W", "5W"}}, {{"3W", "4W", "5W"}, {"3W", "3W", "3W"}, {"4W", "4W", "4W"}, {"5W", "5W", "5W"}}, {{"3W", "4W", "5W"}, {"3W", "4W", "5W"}, {"3W", "4W", "5W"}, {"3W", "4W", "5W"}}, {{"3W", "3W"}, {"3W", "3W"}, {"4W", "4W"}, {"4W", "4W"}, {"5W", "5W"}, {"5W", "5W"}}}},
|
||||
{Args: []string{"1W", "4W", "7W"}, Expected: [][][]string{{{"1W"}, {"4W"}, {"7W"}}}},
|
||||
{Args: []string{"4W", "7W"}, Expected: [][][]string{{{"4W"}, {"7W"}}}},
|
||||
{Args: []string{"1W", "4W"}, Expected: [][][]string{{{"1W"}, {"4W"}}}},
|
||||
{Args: []string{"1W", "7W"}, Expected: [][][]string{{{"1W"}, {"7W"}}}},
|
||||
{Args: []string{"1W", "1W", "9W"}, Expected: [][][]string{{{"1W"}, {"1W"}, {"9W"}}}},
|
||||
{Args: []string{"1W", "9W", "9W"}, Expected: [][][]string{{{"1W"}, {"9W"}, {"9W"}}}},
|
||||
{Args: []string{"1W", "9W"}, Expected: [][][]string{{{"1W"}, {"9W"}}}},
|
||||
{Args: []string{"1W", "3W", "5W"}, Expected: [][][]string{}},
|
||||
{Name: "空牌组", Args: []string{}, Want: [][][]string{}},
|
||||
{Name: "一对", Args: []string{"4W", "4W"}, Want: [][][]string{{{"4W", "4W"}}}},
|
||||
{Name: "四张齐", Args: []string{"4W", "4W", "4W", "4W"}, Want: [][][]string{{{"4W", "4W", "4W", "4W"}}, {{"4W", "4W"}, {"4W", "4W"}}}},
|
||||
{Name: "三个顺子", Args: []string{"2W", "3W", "3W", "4W", "4W", "4W", "5W", "5W", "6W"}, Want: [][][]string{{{"2W", "3W", "4W"}, {"3W", "4W", "5W"}, {"4W", "5W", "6W"}}}},
|
||||
{Name: "三个顺子+将牌", Args: []string{"2W", "3W", "3W", "4W", "4W", "4W", "5W", "5W", "5W", "5W", "6W"}, Want: [][][]string{{{"2W", "3W", "4W"}, {"3W", "4W", "5W"}, {"4W", "5W", "6W"}, {"5W", "5W"}}}},
|
||||
{Name: "三同顺或三同刻", Args: []string{"3W", "3W", "3W", "4W", "4W", "4W", "5W", "5W", "5W"}, Want: [][][]string{{{"3W", "3W", "3W"}, {"4W", "4W", "4W"}, {"5W", "5W", "5W"}}, {{"3W", "4W", "5W"}, {"3W", "4W", "5W"}, {"3W", "4W", "5W"}}}},
|
||||
{Name: "三步四张齐", Args: []string{"3W", "3W", "3W", "3W", "4W", "4W", "4W", "4W", "5W", "5W", "5W", "5W"}, Want: [][][]string{{{"3W", "3W", "3W", "3W"}, {"4W", "4W", "4W", "4W"}, {"5W", "5W", "5W", "5W"}}, {{"3W", "4W", "5W"}, {"3W", "3W", "3W"}, {"4W", "4W", "4W"}, {"5W", "5W", "5W"}}, {{"3W", "4W", "5W"}, {"3W", "4W", "5W"}, {"3W", "4W", "5W"}, {"3W", "4W", "5W"}}, {{"3W", "3W"}, {"3W", "3W"}, {"4W", "4W"}, {"4W", "4W"}, {"5W", "5W"}, {"5W", "5W"}}}},
|
||||
{Name: "三张不靠", Args: []string{"1W", "4W", "7W"}, Want: [][][]string{{{"1W"}, {"4W"}, {"7W"}}}},
|
||||
{Name: "两张不靠#1", Args: []string{"4W", "7W"}, Want: [][][]string{{{"4W"}, {"7W"}}}},
|
||||
{Name: "两张不靠#2", Args: []string{"1W", "4W"}, Want: [][][]string{{{"1W"}, {"4W"}}}},
|
||||
{Name: "两张不靠#3", Args: []string{"1W", "7W"}, Want: [][][]string{{{"1W"}, {"7W"}}}},
|
||||
{Name: "", Args: []string{"1W", "1W", "9W"}, Want: [][][]string{{{"1W"}, {"1W"}, {"9W"}}}},
|
||||
{Name: "", Args: []string{"1W", "9W", "9W"}, Want: [][][]string{{{"1W"}, {"9W"}, {"9W"}}}},
|
||||
{Name: "", Args: []string{"1W", "9W"}, Want: [][][]string{{{"1W"}, {"9W"}}}},
|
||||
{Name: "无组合", Args: []string{"1W", "3W", "5W"}, Want: [][][]string{}},
|
||||
}
|
||||
for _, v := range testcases {
|
||||
result, err := CheckXushuTile(v.Args)
|
||||
for _, tc := range testcases {
|
||||
t.Run(tc.Name, func(t *testing.T) {
|
||||
result, err := CheckXushuTile(tc.Args)
|
||||
if err != nil {
|
||||
log.Printf("Failed in dividing tiles: %v", err)
|
||||
}
|
||||
if !reflect.DeepEqual(result, v.Expected) {
|
||||
log.Fatalf("Failed in dividing tiles expectd: %v, got %v", v.Expected, result)
|
||||
if !reflect.DeepEqual(result, tc.Want) {
|
||||
log.Fatalf("TestCheckXushuTile(%v) = %v want %v", tc.Args, result, tc.Want)
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user