package Ġorg . know ledger . ledger . crypto Ċ Ċ import Ġassert k . assertThat Ċ import Ġassert k . assertions . contains Exactly Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . know ledger . base 6 4 . base 6 4 Encoded Ċ import Ġorg . know ledger . testing . core . apply Hash In Pairs Ċ import Ġorg . know ledger . testing . core . random Ċ import Ġorg . know ledger . testing . ledger . test Hash er Ċ import Ġorg . tiny log . kotlin . Logger ĊĊ Ċ class ĠTest Hash ing Pairs Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcrypt er Ġ= Ġtest Hash er ĊĠĠĠ Ġprivate Ġval Ġhash Size Ġ= Ġ 1 6 ĊĠĠĠ Ġprivate Ġval Ġmin Bound Ġ= Ġ 1 2 ĊĠĠĠ Ġprivate Ġval Ġrandom Hashes Ġ= ĠArray ( random . random Int ( min Bound ) Ġ+ Ġ 8 ) Ġ{ ĊĠĠĠĠĠĠĠ ĠHash ( random . random ByteArray ( hash Size )) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` pair Ġcrypt ing Ġbal anced `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġcrypt er . apply Hash ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcrypt er . apply Hash ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcrypt er . apply Hash ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 0 ] Ġ+ Ġrandom Hashes [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġcrypt er . apply Hash ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 2 ] Ġ+ Ġrandom Hashes [ 3 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġcrypt er . apply Hash ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcrypt er . apply Hash ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 4 ] Ġ+ Ġrandom Hashes [ 5 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġcrypt er . apply Hash ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 6 ] Ġ+ Ġrandom Hashes [ 7 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Ġ= Ġapply Hash In Pairs ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcrypt er , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 2 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 4 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 5 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 6 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 7 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠLogger . debug Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Test : Ġ${ test . base 6 4 Encoded ()} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Expected : Ġ${ expected . base 6 4 Encoded ()} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( expected . bytes ). contains Exactly (* test . bytes ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` pair Ġcrypt ing Ġun balanced `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġcrypt er . apply Hash ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcrypt er . apply Hash ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcrypt er . apply Hash ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 0 ] Ġ+ Ġrandom Hashes [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġcrypt er . apply Hash ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 2 ] Ġ+ Ġrandom Hashes [ 3 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġcrypt er . apply Hash ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcrypt er . apply Hash ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 4 ] Ġ+ Ġrandom Hashes [ 5 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ Ġcrypt er . apply Hash ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 4 ] Ġ+ Ġrandom Hashes [ 5 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Ġ= Ġapply Hash In Pairs ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcrypt er , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 2 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 4 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Hashes [ 5 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠLogger . info Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Test : Ġ${ test . base 6 4 Encoded ()} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Expected : Ġ${ expected . base 6 4 Encoded ()} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ ĠassertThat ( expected . bytes ). contains Exactly (* test . bytes ) ĊĠĠĠ Ġ} Ċ } ĊĊ