1
1
/* eslint-env mocha */
2
2
const { expect } = require ( 'chai' )
3
- const { parseGame, validateGame, checksumGameSet, validateDraw } = require ( './game' )
3
+ const { parseGame, validateGame, checksumGameSet, validateDraw, countCubesNeeded , power } = require ( './game' )
4
4
const { linesToArray } = require ( '../../2018/inputParser' )
5
5
const fs = require ( 'fs' )
6
6
const path = require ( 'path' )
@@ -164,7 +164,7 @@ describe('--- Day 2: Cube Conundrum ---', () => {
164
164
} )
165
165
} )
166
166
167
- describe ( 'integration test' , ( ) => {
167
+ describe . skip ( 'integration test' , ( ) => {
168
168
let initData
169
169
before ( ( done ) => {
170
170
fs . readFile ( filePath , { encoding : 'utf8' } , ( err , rawData ) => {
@@ -186,4 +186,43 @@ describe('--- Day 2: Cube Conundrum ---', () => {
186
186
} )
187
187
} )
188
188
} )
189
+
190
+ describe ( 'Part 2' , ( ) => {
191
+ describe ( 'countCubesNeeded' , ( ) => {
192
+ it ( 'counts how many cubes are needed for a game' , ( ) => {
193
+ const data = [
194
+ 'Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green' ,
195
+ 'Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue' ,
196
+ 'Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red' ,
197
+ 'Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red' ,
198
+ 'Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green'
199
+ ]
200
+ const result = [
201
+ { r : 4 , g : 2 , b : 6 } ,
202
+ { r : 1 , g : 3 , b : 4 } ,
203
+ { r : 20 , g : 13 , b : 6 } ,
204
+ { r : 14 , g : 3 , b : 15 } ,
205
+ { r : 6 , g : 3 , b : 2 }
206
+ ]
207
+ data . forEach ( ( game , idx ) => {
208
+ expect ( countCubesNeeded ( parseGame ( game ) ) ) . to . deep . equal ( result [ idx ] )
209
+ } )
210
+ } )
211
+ } )
212
+ describe ( 'power' , ( ) => {
213
+ it ( 'calculates the power for a game' , ( ) => {
214
+ const data = [
215
+ 'Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green' ,
216
+ 'Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue' ,
217
+ 'Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red' ,
218
+ 'Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red' ,
219
+ 'Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green'
220
+ ]
221
+ const result = [ 48 , 12 , 1560 , 630 , 36 ]
222
+ data . forEach ( ( game , idx ) => {
223
+ expect ( power ( parseGame ( game ) ) ) . to . equal ( result [ idx ] )
224
+ } )
225
+ } )
226
+ } )
227
+ } )
189
228
} )
0 commit comments