@@ -20,105 +20,155 @@ protected function setUp(): void
20
20
21
21
/**
22
22
* uuid: 3993a824-c20e-493d-b3c9-ee8a7753ee59
23
+ * @testdox No Items
23
24
*/
24
25
public function testNoItems (): void
25
26
{
26
- $ this ->assertEquals (0 , $ this ->knapsack ->getMaximumValue (100 , []));
27
+ $ expected = 0 ;
28
+ $ maximumWeight = 100 ;
29
+ $ items = [];
30
+
31
+ $ knapsack = new Knapsack ();
32
+ $ actual = $ knapsack ->getMaximumValue ($ maximumWeight , $ items );
33
+
34
+ $ this ->assertEquals ($ expected , $ actual );
27
35
}
28
36
29
37
/**
30
38
* uuid: 1d39e98c-6249-4a8b-912f-87cb12e506b0
39
+ * @testdox One item, too heavy
31
40
*/
32
41
public function testOneItemTooHeavy (): void
33
42
{
34
- $ items = [[ 'weight ' => 100 , 'value ' => 1 ]];
35
- $ this ->assertEquals (0 , $ this ->knapsack ->getMaximumValue (10 , $ items ));
43
+ $ expected = 0 ;
44
+ $ maximumWeight = 10 ;
45
+ $ items = [['weight ' => 100 , 'value ' => 1 ]];
46
+
47
+ $ knapsack = new Knapsack ();
48
+ $ actual = $ knapsack ->getMaximumValue ($ maximumWeight , $ items );
49
+
50
+ $ this ->assertEquals ($ expected , $ actual );
36
51
}
37
52
38
53
/**
39
54
* uuid: 833ea310-6323-44f2-9d27-a278740ffbd8
55
+ * @testdox Five items (cannot be greedy by weight)
40
56
*/
41
57
public function testFiveItemsCannotBeGreedyByWeight (): void
42
58
{
59
+ $ expected = 21 ;
60
+ $ maximumWeight = 10 ;
43
61
$ items = [
44
- [ 'weight ' => 2 , 'value ' => 5 ],
45
- [ 'weight ' => 2 , 'value ' => 5 ],
46
- [ 'weight ' => 2 , 'value ' => 5 ],
47
- [ 'weight ' => 2 , 'value ' => 5 ],
48
- [ 'weight ' => 10 , 'value ' => 21 ],
62
+ ['weight ' => 2 , 'value ' => 5 ],
63
+ ['weight ' => 2 , 'value ' => 5 ],
64
+ ['weight ' => 2 , 'value ' => 5 ],
65
+ ['weight ' => 2 , 'value ' => 5 ],
66
+ ['weight ' => 10 , 'value ' => 21 ],
49
67
];
50
- $ this ->assertEquals (21 , $ this ->knapsack ->getMaximumValue (10 , $ items ));
68
+
69
+ $ knapsack = new Knapsack ();
70
+ $ actual = $ knapsack ->getMaximumValue ($ maximumWeight , $ items );
71
+
72
+ $ this ->assertEquals ($ expected , $ actual );
51
73
}
52
74
53
75
/**
54
76
* uuid: 277cdc52-f835-4c7d-872b-bff17bab2456
77
+ * @testdox Five items (cannot be greedy by value)
55
78
*/
56
79
public function testFiveItemsCannotBeGreedyByValue (): void
57
80
{
81
+ $ expected = 80 ;
82
+ $ maximumWeight = 10 ;
58
83
$ items = [
59
- [ 'weight ' => 2 , 'value ' => 20 ],
60
- [ 'weight ' => 2 , 'value ' => 20 ],
61
- [ 'weight ' => 2 , 'value ' => 20 ],
62
- [ 'weight ' => 2 , 'value ' => 20 ],
63
- [ 'weight ' => 10 , 'value ' => 50 ],
84
+ ['weight ' => 2 , 'value ' => 20 ],
85
+ ['weight ' => 2 , 'value ' => 20 ],
86
+ ['weight ' => 2 , 'value ' => 20 ],
87
+ ['weight ' => 2 , 'value ' => 20 ],
88
+ ['weight ' => 10 , 'value ' => 50 ],
64
89
];
65
- $ this ->assertEquals (80 , $ this ->knapsack ->getMaximumValue (10 , $ items ));
90
+
91
+ $ knapsack = new Knapsack ();
92
+ $ actual = $ knapsack ->getMaximumValue ($ maximumWeight , $ items );
93
+
94
+ $ this ->assertEquals ($ expected , $ actual );
66
95
}
67
96
68
97
/**
69
98
* uuid: 81d8e679-442b-4f7a-8a59-7278083916c9
99
+ * @testdox Example knapsack
70
100
*/
71
101
public function testExampleKnapsack (): void
72
102
{
103
+ $ expected = 90 ;
104
+ $ maximumWeight = 10 ;
73
105
$ items = [
74
- [ 'weight ' => 5 , 'value ' => 10 ],
75
- [ 'weight ' => 4 , 'value ' => 40 ],
76
- [ 'weight ' => 6 , 'value ' => 30 ],
77
- [ 'weight ' => 4 , 'value ' => 50 ],
106
+ ['weight ' => 5 , 'value ' => 10 ],
107
+ ['weight ' => 4 , 'value ' => 40 ],
108
+ ['weight ' => 6 , 'value ' => 30 ],
109
+ ['weight ' => 4 , 'value ' => 50 ],
78
110
];
79
- $ this ->assertEquals (90 , $ this ->knapsack ->getMaximumValue (10 , $ items ));
111
+
112
+ $ knapsack = new Knapsack ();
113
+ $ actual = $ knapsack ->getMaximumValue ($ maximumWeight , $ items );
114
+
115
+ $ this ->assertEquals ($ expected , $ actual );
80
116
}
81
117
82
118
/**
83
119
* uuid: f23a2449-d67c-4c26-bf3e-cde020f27ecc
120
+ * @testdox 8 items
84
121
*/
85
122
public function testEightItems (): void
86
123
{
124
+ $ expected = 900 ;
125
+ $ maximumWeight = 104 ;
87
126
$ items = [
88
- [ 'weight ' => 25 , 'value ' => 350 ],
89
- [ 'weight ' => 35 , 'value ' => 400 ],
90
- [ 'weight ' => 45 , 'value ' => 450 ],
91
- [ 'weight ' => 5 , 'value ' => 20 ],
92
- [ 'weight ' => 25 , 'value ' => 70 ],
93
- [ 'weight ' => 3 , 'value ' => 8 ],
94
- [ 'weight ' => 2 , 'value ' => 5 ],
95
- [ 'weight ' => 2 , 'value ' => 5 ],
127
+ ['weight ' => 25 , 'value ' => 350 ],
128
+ ['weight ' => 35 , 'value ' => 400 ],
129
+ ['weight ' => 45 , 'value ' => 450 ],
130
+ ['weight ' => 5 , 'value ' => 20 ],
131
+ ['weight ' => 25 , 'value ' => 70 ],
132
+ ['weight ' => 3 , 'value ' => 8 ],
133
+ ['weight ' => 2 , 'value ' => 5 ],
134
+ ['weight ' => 2 , 'value ' => 5 ],
96
135
];
97
- $ this ->assertEquals (900 , $ this ->knapsack ->getMaximumValue (104 , $ items ));
136
+
137
+ $ knapsack = new Knapsack ();
138
+ $ actual = $ knapsack ->getMaximumValue ($ maximumWeight , $ items );
139
+
140
+ $ this ->assertEquals ($ expected , $ actual );
98
141
}
99
142
100
143
/**
101
144
* uuid: 7c682ae9-c385-4241-a197-d2fa02c81a11
145
+ * @testdox 15 items
102
146
*/
103
147
public function testFifteenItems (): void
104
148
{
149
+ $ expected = 1458 ;
150
+ $ maximumWeight = 750 ;
105
151
$ items = [
106
- [ 'weight ' => 70 , 'value ' => 135 ],
107
- [ 'weight ' => 73 , 'value ' => 139 ],
108
- [ 'weight ' => 77 , 'value ' => 149 ],
109
- [ 'weight ' => 80 , 'value ' => 150 ],
110
- [ 'weight ' => 82 , 'value ' => 156 ],
111
- [ 'weight ' => 87 , 'value ' => 163 ],
112
- [ 'weight ' => 90 , 'value ' => 173 ],
113
- [ 'weight ' => 94 , 'value ' => 184 ],
114
- [ 'weight ' => 98 , 'value ' => 192 ],
115
- [ 'weight ' => 106 , 'value ' => 201 ],
116
- [ 'weight ' => 110 , 'value ' => 210 ],
117
- [ 'weight ' => 113 , 'value ' => 214 ],
118
- [ 'weight ' => 115 , 'value ' => 221 ],
119
- [ 'weight ' => 118 , 'value ' => 229 ],
120
- [ 'weight ' => 120 , 'value ' => 240 ],
152
+ ['weight ' => 70 , 'value ' => 135 ],
153
+ ['weight ' => 73 , 'value ' => 139 ],
154
+ ['weight ' => 77 , 'value ' => 149 ],
155
+ ['weight ' => 80 , 'value ' => 150 ],
156
+ ['weight ' => 82 , 'value ' => 156 ],
157
+ ['weight ' => 87 , 'value ' => 163 ],
158
+ ['weight ' => 90 , 'value ' => 173 ],
159
+ ['weight ' => 94 , 'value ' => 184 ],
160
+ ['weight ' => 98 , 'value ' => 192 ],
161
+ ['weight ' => 106 , 'value ' => 201 ],
162
+ ['weight ' => 110 , 'value ' => 210 ],
163
+ ['weight ' => 113 , 'value ' => 214 ],
164
+ ['weight ' => 115 , 'value ' => 221 ],
165
+ ['weight ' => 118 , 'value ' => 229 ],
166
+ ['weight ' => 120 , 'value ' => 240 ],
121
167
];
122
- $ this ->assertEquals (1458 , $ this ->knapsack ->getMaximumValue (750 , $ items ));
168
+
169
+ $ knapsack = new Knapsack ();
170
+ $ actual = $ knapsack ->getMaximumValue ($ maximumWeight , $ items );
171
+
172
+ $ this ->assertEquals ($ expected , $ actual );
123
173
}
124
174
}
0 commit comments