package Ġdev . paul shields . a oc Ċ Ċ import Ġassert k . assertThat Ċ import Ġassert k . assertions . contains Only Ċ import Ġassert k . assertions . isEqualTo Ċ import Ġdev . paul shields . a oc . test common . run Test Ċ import Ġorg . junit . jupiter . api . Nested Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . Test Factory Ċ Ċ class ĠDay 1 6 Test Ġ{ ĊĠĠĠ Ġ@ Test Factory ĊĠĠĠ Ġfun Ġ` should Ġcorrectly Ġcount Ġall Ġpacket Ġversions Ġfrom Ġpackets `() Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ" 8 A 0 0 4 A 8 0 1 A 8 0 0 2 F 4 7 8 " Ġto Ġ 1 6 , ĊĠĠĠĠĠĠĠ Ġ" 6 2 0 0 8 0 0 0 1 6 1 1 5 6 2 C 8 8 0 2 1 1 8 E 3 4 " Ġto Ġ 1 2 , ĊĠĠĠĠĠĠĠ Ġ" C 0 0 1 5 0 0 0 0 1 6 1 1 5 A 2 E 0 8 0 2 F 1 8 2 3 4 0 " Ġto Ġ 2 3 , ĊĠĠĠĠĠĠĠ Ġ" A 0 0 1 6 C 8 8 0 1 6 2 0 1 7 C 3 6 8 6 B 1 8 A 3 D 4 7 8 0 " Ġto Ġ 3 1 ) ĊĠĠĠĠĠĠĠ Ġ. run Test Ġ{ Ġ( packet Trans mission , Ġexpected Sum ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsum All Version Numbers In Bits Packets ( packet Trans mission ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). isEqualTo ( expected Sum ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Factory ĊĠĠĠ Ġfun Ġ` should Ġcorrectly Ġcalculate Ġthe Ġresult Ġfrom Ġall ĠB ITS Ġpackets `() Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ" C 2 0 0 B 4 0 A 8 2 " Ġto Ġ 3 L , ĊĠĠĠĠĠĠĠ Ġ" 0 4 0 0 5 AC 3 3 8 9 0 " Ġto Ġ 5 4 L , ĊĠĠĠĠĠĠĠ Ġ" 8 8 0 0 8 6 C 3 E 8 8 1 1 2 " Ġto Ġ 7 L , ĊĠĠĠĠĠĠĠ Ġ" CE 0 0 C 4 3 D 8 8 1 1 2 0 " Ġto Ġ 9 L , ĊĠĠĠĠĠĠĠ Ġ" D 8 0 0 5 AC 2 A 8 F 0 " Ġto Ġ 1 L , ĊĠĠĠĠĠĠĠ Ġ" F 6 0 0 BC 2 D 8 F " Ġto Ġ 0 L , ĊĠĠĠĠĠĠĠ Ġ" 9 C 0 0 5 AC 2 F 8 F 0 " Ġto Ġ 0 L , ĊĠĠĠĠĠĠĠ Ġ" 9 C 0 1 4 1 0 8 0 2 5 0 3 2 0 F 1 8 0 2 1 0 4 A 0 8 " Ġto Ġ 1 L ) ĊĠĠĠĠĠĠĠ Ġ. run Test Ġ{ Ġ( packet Trans mission , Ġexpected Result ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcalculate Result From All Bits Packets ( packet Trans mission ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains Only ( expected Result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass ĠPacket De coding Tests Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` should Ġdecode Ġliteral Ġpacket `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġliteral Packet Ġ= Ġ" D 2 FE 2 8 " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdecode Packets ( literal Packet ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains Only ( Literal Packet ( 6 , Ġ 2 0 2 1 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` should Ġdecode Ġoperator Ġpacket Ġusing Ġthe Ġnumber Ġof Ġpackets Ġdata Ġlength `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoperator Packet Ġ= Ġ" 3 8 0 0 6 F 4 5 2 9 1 2 0 0 " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdecode Packets ( operator Packet ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains Only ( Operator Packet ( 1 , ĠOperator Packet Type . LESS _ THAN , ĠlistOf ( Literal Packet ( 6 , Ġ 1 0 ), ĠLiteral Packet ( 2 , Ġ 2 0 )))) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` should Ġdecode Ġoperator Ġpacket Ġusing Ġthe Ġlength Ġof Ġdata Ġcontaining Ġsub packets `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoperator Packet Ġ= Ġ" EE 0 0 D 4 0 C 8 2 3 0 6 0 " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdecode Packets ( operator Packet ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( result ). contains Only ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOperator Packet ( 7 , ĠOperator Packet Type . MAXIMUM , ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLiteral Packet ( 2 , Ġ 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLiteral Packet ( 4 , Ġ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLiteral Packet ( 1 , Ġ 3 )))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ