@@ -16,7 +16,7 @@ public class IntCodeTestCase {
16
16
public void test1 () {
17
17
final List <Long > program = asList (1 , 9 , 10 , 3 , 2 , 3 , 11 , 0 , 99 , 30 , 40 , 50 );
18
18
19
- final List <Long > result = setUpIntCode (). run (program );
19
+ final List <Long > result = runIntCode (program );
20
20
21
21
assertThat (result ).isEqualTo (asList (3500 , 9 , 10 , 70 , 2 , 3 , 11 , 0 , 99 , 30 , 40 , 50 ));
22
22
}
@@ -25,7 +25,7 @@ public void test1() {
25
25
public void test2 () {
26
26
final List <Long > program = asList (1 , 0 , 0 , 0 , 99 );
27
27
28
- final List <Long > result = setUpIntCode (). run (program );
28
+ final List <Long > result = runIntCode (program );
29
29
30
30
assertThat (result ).isEqualTo (asList (2 , 0 , 0 , 0 , 99 ));
31
31
}
@@ -34,18 +34,19 @@ public void test2() {
34
34
public void test3 () {
35
35
final List <Long > program = asList (1 , 1 , 1 , 4 , 99 , 5 , 6 , 0 , 99 );
36
36
37
- final List <Long > result = setUpIntCode (). run (program );
37
+ final List <Long > result = runIntCode (program );
38
38
39
39
assertThat (result ).isEqualTo (asList (30 , 1 , 1 , 4 , 2 , 5 , 6 , 0 , 99 ));
40
40
}
41
41
42
42
@ Test
43
43
public void testInputOutput () {
44
44
final List <Long > program = asList (3 , 0 , 4 , 0 , 99 );
45
- final IntCode intCode = setUpIntCode ();
45
+ final IntCode intCode = setUpIntCode (program );
46
46
final Deque <Long > output = new ArrayDeque <>();
47
47
48
- final List <Long > result = intCode .run (program , 123 , output );
48
+ intCode .run (123 , output );
49
+ final List <Long > result = intCode .getProgram ();
49
50
50
51
assertThat (output .getLast ()).isEqualTo (123 );
51
52
assertThat (result ).isEqualTo (asList (123 , 0 , 4 , 0 , 99 ));
@@ -55,7 +56,7 @@ public void testInputOutput() {
55
56
public void testModes1 () {
56
57
final List <Long > program = asList (1002 , 4 , 3 , 4 , 33 );
57
58
58
- final List <Long > result = setUpIntCode (). run (program );
59
+ final List <Long > result = runIntCode (program );
59
60
60
61
assertThat (result ).isEqualTo (asList (1002 , 4 , 3 , 4 , 99 ));
61
62
}
@@ -64,7 +65,7 @@ public void testModes1() {
64
65
public void testModes2 () {
65
66
final List <Long > program = asList (1101 , 100 , -1 , 4 , 0 );
66
67
67
- final List <Long > result = setUpIntCode (). run (program );
68
+ final List <Long > result = runIntCode (program );
68
69
69
70
assertThat (result ).isEqualTo (asList (1101 , 100 , -1 , 4 , 99 ));
70
71
}
@@ -187,7 +188,7 @@ public void test6() {
187
188
public void testExpand () {
188
189
final List <Long > program = asList (1001 , 5 , 10 , 7 , 99 );
189
190
190
- final List <Long > result = setUpIntCode (). run (program );
191
+ final List <Long > result = runIntCode (program );
191
192
192
193
assertThat (result ).isEqualTo (asList (1001 , 5 , 10 , 7 , 99 , 0 , 0 , 10 ));
193
194
}
@@ -198,7 +199,7 @@ public void test7() {
198
199
1008 , 100 , 16 , 101 , 1006 , 101 , 0 , 99 );
199
200
final Deque <Long > output = new ArrayDeque <>();
200
201
201
- setUpIntCode ().run (program , null , output );
202
+ setUpIntCode (program ).run (null , output );
202
203
203
204
assertThat (output .stream ().collect (toList ())).isEqualTo (program );
204
205
}
@@ -208,7 +209,7 @@ public void test8() {
208
209
final List <Long > program = asList (1102 , 34915192 , 34915192 , 7 , 4 , 7 , 99 , 0 );
209
210
final Deque <Long > output = new ArrayDeque <>();
210
211
211
- setUpIntCode ().run (program , null , output );
212
+ setUpIntCode (program ).run (null , output );
212
213
213
214
assertThat (output .getLast ()).isEqualTo (34_915_192L * 34_915_192L );
214
215
}
@@ -218,16 +219,16 @@ public void test9() {
218
219
final List <Long > program = List .of (104L , 1125899906842624L , 99L );
219
220
final Deque <Long > output = new ArrayDeque <>();
220
221
221
- setUpIntCode ().run (program , null , output );
222
+ setUpIntCode (program ).run (null , output );
222
223
223
224
assertThat (output .getLast ()).isEqualTo (1_125_899_906_842_624L );
224
225
}
225
226
226
227
private void assertIntCode (final List <Long > program , final long input , final long result ) {
227
- final IntCode intCode = setUpIntCode ();
228
+ final IntCode intCode = setUpIntCode (program );
228
229
final Deque <Long > output = new ArrayDeque <>();
229
230
230
- intCode .run (program , input , output );
231
+ intCode .run (input , output );
231
232
232
233
assertThat (output .getLast ()).isEqualTo (result );
233
234
}
@@ -236,7 +237,13 @@ private List<Long> asList(final Integer... ints) {
236
237
return Stream .of (ints ).map (Integer ::longValue ).collect (toList ());
237
238
}
238
239
239
- private IntCode setUpIntCode () {
240
- return new IntCode (!System .getProperties ().containsKey ("NDEBUG" ));
240
+ private List <Long > runIntCode (final List <Long > program ) {
241
+ final IntCode intCode = setUpIntCode (program );
242
+ intCode .run (program );
243
+ return intCode .getProgram ();
244
+ }
245
+
246
+ private IntCode setUpIntCode (final List <Long > program ) {
247
+ return new IntCode (program , !System .getProperties ().containsKey ("NDEBUG" ));
241
248
}
242
249
}
0 commit comments