2
2
const { expect } = require ( 'chai' )
3
3
const { descrambleSignal } = require ( './display' )
4
4
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'
7
6
8
7
console . debug (
9
8
testSingle . split ( '|' ) [ 0 ] . trim ( )
@@ -17,11 +16,19 @@ describe('--- Day 8: Seven Segment Search ---', () => {
17
16
describe ( 'Part 1' , ( ) => {
18
17
describe ( 'descrambleSignal()' , ( ) => {
19
18
const testData = testSingle . split ( '|' ) [ 0 ] . trim ( )
20
- const result = descrambleSignal ( testData ) . segmentCodes
19
+ const { segmentCodes , charCodes } = descrambleSignal ( testData )
21
20
22
21
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 )
25
32
} )
26
33
} )
27
34
} )
0 commit comments