From e341a048fce6fedf8f70ebdf3bf80fa4f19b278f Mon Sep 17 00:00:00 2001 From: haopengzhan Date: Sat, 21 Oct 2023 07:04:27 +0000 Subject: [PATCH] Updated tiles_test following effective go format --- pkg/tiles_test.go | 84 +++++++++++++++++++++++++---------------------- readme.md | 5 +-- 2 files changed, 45 insertions(+), 44 deletions(-) diff --git a/pkg/tiles_test.go b/pkg/tiles_test.go index 06d8460..6389801 100644 --- a/pkg/tiles_test.go +++ b/pkg/tiles_test.go @@ -20,76 +20,80 @@ func TestPatternNormalization(t *testing.T) { func TestTileComparator(t *testing.T) { type testcase struct { - Args [2]string - Expected bool + Args [2]string + 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) } } } func TestSort(t *testing.T) { type testcase struct { - Args []string - Expected []string + Args []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 { - Args []string - Expected [][][]string + Name string + Args []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) - 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) - } + 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, tc.Want) { + log.Fatalf("TestCheckXushuTile(%v) = %v want %v", tc.Args, result, tc.Want) + } + }) + } } diff --git a/readme.md b/readme.md index 5a48a96..21fd660 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,3 @@ # A Majiang helper -## Dev diary - -S1: A helper to analysis the best way to achieve hu -S1.1: Without \ No newline at end of file +A Majiang helper to analyze hand tiles and given a suggestion on how to play \ No newline at end of file