package Ġlt . lib red rop . peer discovery . data Ċ Ċ import Ġkotlinx . io . core . read Bytes Ċ import Ġlt . lib red rop . peer discovery . test . TestData Ċ import Ġlt . lib red rop . peer discovery . test . assertEquals Bytes Ċ import Ġlt . new orld . k upiter . test Factory Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Test Factory Ċ import Ġorg . yaml . s na key aml . Yaml Ċ import Ġjava . io . File Ċ Ċ class ĠPeer Test Ġ{ ĊĠĠĠ Ġval Ġyaml Ġ= ĠYaml () ĊĊĠĠĠ Ġval ĠtestData Dir Ġ= ĠFile (" specs / testData / v 0 1 ") ĊĊĠĠĠ Ġ@ Test Factory ĊĠĠĠ Ġfun Ġserialize () Ġ= Ġtest Factory Ġ{ ĊĠĠĠĠĠĠĠ ĠtestData Dir . list Files Ġ{ Ġfile : ĠFile Ġ-> Ġfile . extension Ġ== Ġ" yml " Ġ}. forEach Ġ{ Ġfile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest ( file . name Without Extension ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata : ĠTest Data Ġ= Ġyaml . load As ( file . inputStream (), ĠTest Data :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpeer Ġ= Ġdata . get Peer () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals Bytes ( data . getResult Binary (). read Bytes (), Ġpeer . create Binary Message (). read Bytes ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Factory ĊĠĠĠ Ġfun Ġdeserialize () Ġ= Ġtest Factory Ġ{ ĊĠĠĠĠĠĠĠ ĠtestData Dir . list Files Ġ{ Ġfile : ĠFile Ġ-> Ġfile . extension Ġ== Ġ" yml " Ġ}. forEach Ġ{ Ġfile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer ( file . name Without Extension ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata : ĠTest Data Ġ= Ġyaml . load As ( file . inputStream (), ĠTest Data :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpeer Ġ= ĠPeer . from Binary ( data . getResult Binary ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest (" peer Ġinfo ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( data . get Peer (), Ġpeer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġdata . meta ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest (" meta : Ġ$ key ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmeta Info Ġ= Ġpeer . meta Info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> ĠassertEquals ( value , Ġmeta Info . getString ( key )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> ĠassertEquals ( value , Ġmeta Info . getInt ( key )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> ĠassertEquals ( value , Ġmeta Info . getBoolean ( key )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠByteArray Ġ-> ĠassertEquals Bytes ( value , Ġmeta Info . get ByteArray ( key )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException ("${ value . java Class } Ġis Ġnot Ġsupported ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ