11/* eslint-env mocha */
22const { expect } = require ( 'chai' )
3- const { parseGame, validateGame, checksumGameSet, validateDraw } = require ( './game' )
3+ const { parseGame, validateGame, checksumGameSet, validateDraw, countCubesNeeded , power } = require ( './game' )
44const { linesToArray } = require ( '../../2018/inputParser' )
55const fs = require ( 'fs' )
66const path = require ( 'path' )
@@ -164,7 +164,7 @@ describe('--- Day 2: Cube Conundrum ---', () => {
164164 } )
165165 } )
166166
167- describe ( 'integration test' , ( ) => {
167+ describe . skip ( 'integration test' , ( ) => {
168168 let initData
169169 before ( ( done ) => {
170170 fs . readFile ( filePath , { encoding : 'utf8' } , ( err , rawData ) => {
@@ -186,4 +186,43 @@ describe('--- Day 2: Cube Conundrum ---', () => {
186186 } )
187187 } )
188188 } )
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+ } )
189228} )
0 commit comments