import { expect } from "chai" ; import { InitMessage } from "../../lib/messages/InitMessage" ; describe ( "InitMessage" , ( ) => { it ( "should have correct default values" , ( ) => { const obj = new InitMessage ( ) ; expect ( obj . type ) . to . equal ( 16 ) ; expect ( obj . features . toNumber ( ) ) . to . equal ( 0 ) ; } ) ; describe ( ".serialize" , ( ) => { it ( "should serialize type" , ( ) => { const obj = new InitMessage ( ) ; const result = obj . serialize ( ) ; expect ( result . toString ( "hex" ) ) . to . equal ( "001000000000" ) ; } ) ; it ( "should serialize features" , ( ) => { const obj = new InitMessage ( ) ; obj . features . set ( 3 ) ; const result = obj . serialize ( ) ; expect ( result . toString ( "hex" ) ) . to . equal ( "00100000000108" ) ; } ) ; it ( "should serialize network tlv" , ( ) => { const obj = new InitMessage ( ) ; obj . chainHashes . push ( Buffer . alloc ( 32 , 255 ) ) ; const result = obj . serialize ( ) ; expect ( result . toString ( "hex" ) ) . to . equal ( "0010000000000120ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" ) ; } ) ; it ( "should serialize network tlv" , ( ) => { const obj = new InitMessage ( ) ; obj . chainHashes . push ( Buffer . alloc ( 32 , 0xff ) ) ; obj . chainHashes . push ( Buffer . alloc ( 32 , 0xee ) ) ; const result = obj . serialize ( ) ; expect ( result . toString ( "hex" ) ) . to . equal ( "0010000000000140ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" ) ; } ) ; } ) ; describe ( ".deserialize" , ( ) => { const remote = "0010000102000180" ; it ( "should deserialize type" , ( ) => { const result = InitMessage . deserialize ( Buffer . from ( remote , "hex" ) ) ; expect ( result . type ) . to . equal ( 16 ) ; } ) ; it ( "should deserialize globalFeatures" , ( ) => { const result = InitMessage . deserialize ( Buffer . from ( remote , "hex" ) ) ; expect ( result . features . toNumber ( ) ) . to . equal ( 0x82 ) ; } ) ; it ( "should deserialize localFeatures" , ( ) => { const result = InitMessage . deserialize ( Buffer . from ( remote , "hex" ) ) ; expect ( result . features . toNumber ( ) ) . to . equal ( 0x82 ) ; } ) ; it ( "should deserialize network tlv" , ( ) => { const result = InitMessage . deserialize ( Buffer . from ( "0010000000000140ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" , "hex" ) ) ; expect ( result . chainHashes . length ) . to . equal ( 2 ) ; expect ( result . chainHashes [ 0 ] . toString ( "hex" ) ) . to . equal ( "ff" . repeat ( 32 ) ) ; expect ( result . chainHashes [ 1 ] . toString ( "hex" ) ) . to . equal ( "ee" . repeat ( 32 ) ) ; } ) ; } ) ; } ) ;