22const { expect } = require ( 'chai' )
33const { descrambleSignal } = require ( './display' )
44
5- const testSingle = `acedgfb cdfbe gcdfa fbcad dab cefabd cdfgeb eafb cagedb ab |
6- cdfeb fcadb cdfeb cdbaf`
5+ const testSingle = 'acedgfb cdfbe gcdfa fbcad dab cefabd cdfgeb eafb cagedb ab | cdfeb fcadb cdfeb cdbaf'
76
87console . debug (
98 testSingle . split ( '|' ) [ 0 ] . trim ( )
@@ -17,11 +16,19 @@ describe('--- Day 8: Seven Segment Search ---', () => {
1716 describe ( 'Part 1' , ( ) => {
1817 describe ( 'descrambleSignal()' , ( ) => {
1918 const testData = testSingle . split ( '|' ) [ 0 ] . trim ( )
20- const result = descrambleSignal ( testData ) . segmentCodes
19+ const { segmentCodes , charCodes } = descrambleSignal ( testData )
2120
2221 it ( 'takes scambled string of 10 codes and identifies the letters matching each seven-digit-display segment' , ( ) => {
23- expect ( result . length ) . to . equal ( 7 )
24- expect ( result . filter ( ( code ) => ! [ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' ] . includes ( code ) ) . length ) . to . equal ( 0 )
22+ expect ( segmentCodes . length ) . to . equal ( 7 )
23+ expect ( segmentCodes . filter ( ( code ) => ! [ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' ] . includes ( code ) ) . length ) . to . equal ( 0 )
24+ } )
25+
26+ it ( 'produces a list of character codes for each number that can be displayed' , ( ) => {
27+ // There should be exactly 10 numbers
28+ expect ( charCodes . length ) . to . equal ( 10 )
29+ // lengths of each code is predictable as each number has a specific count of segments
30+ const expectedLengths = [ 6 , 2 , 5 , 5 , 4 , 5 , 6 , 3 , 7 , 6 ]
31+ expect ( charCodes . map ( code => code . length ) ) . to . deep . equal ( expectedLengths )
2532 } )
2633 } )
2734 } )
0 commit comments