summaryrefslogtreecommitdiff
path: root/go/book-store/cases_test.go
blob: b42d263b19220dc77297c001b62e37521035a525 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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,
	},
}