summaryrefslogtreecommitdiff
path: root/go/book-store/cases_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/book-store/cases_test.go')
-rw-r--r--go/book-store/cases_test.go87
1 files changed, 87 insertions, 0 deletions
diff --git a/go/book-store/cases_test.go b/go/book-store/cases_test.go
new file mode 100644
index 0000000..b42d263
--- /dev/null
+++ b/go/book-store/cases_test.go
@@ -0,0 +1,87 @@
+package bookstore
+
+// Source: exercism/problem-specifications
+// Commit: 33c6b60 book-store: Add test case to thwart list-order greedy solutions (#1297)
+// Problem Specifications Version: 1.4.0
+
+var testCases = []struct {
+ description string
+ basket []int
+ expected int
+}{
+ {
+ description: "Only a single book",
+ basket: []int{1},
+ expected: 800,
+ },
+ {
+ description: "Two of the same book",
+ basket: []int{2, 2},
+ expected: 1600,
+ },
+ {
+ description: "Empty basket",
+ basket: []int{},
+ expected: 0,
+ },
+ {
+ description: "Two different books",
+ basket: []int{1, 2},
+ expected: 1520,
+ },
+ {
+ description: "Three different books",
+ basket: []int{1, 2, 3},
+ expected: 2160,
+ },
+ {
+ description: "Four different books",
+ basket: []int{1, 2, 3, 4},
+ expected: 2560,
+ },
+ {
+ description: "Five different books",
+ basket: []int{1, 2, 3, 4, 5},
+ expected: 3000,
+ },
+ {
+ description: "Two groups of four is cheaper than group of five plus group of three",
+ basket: []int{1, 1, 2, 2, 3, 3, 4, 5},
+ expected: 5120,
+ },
+ {
+ description: "Two groups of four is cheaper than groups of five and three",
+ basket: []int{1, 1, 2, 3, 4, 4, 5, 5},
+ expected: 5120,
+ },
+ {
+ description: "Group of four plus group of two is cheaper than two groups of three",
+ basket: []int{1, 1, 2, 2, 3, 4},
+ expected: 4080,
+ },
+ {
+ description: "Two each of first 4 books and 1 copy each of rest",
+ basket: []int{1, 1, 2, 2, 3, 3, 4, 4, 5},
+ expected: 5560,
+ },
+ {
+ description: "Two copies of each book",
+ basket: []int{1, 1, 2, 2, 3, 3, 4, 4, 5, 5},
+ expected: 6000,
+ },
+ {
+ description: "Three copies of first book and 2 each of remaining",
+ basket: []int{1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 1},
+ expected: 6800,
+ },
+ {
+ description: "Three each of first 2 books and 2 each of remaining books",
+ basket: []int{1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 1, 2},
+ expected: 7520,
+ },
+ {
+ description: "Four groups of four are cheaper than two groups each of five and three",
+ basket: []int{1, 1, 2, 2, 3, 3, 4, 5, 1, 1, 2, 2, 3, 3, 4, 5},
+ expected: 10240,
+ },
+}