import Ġio . kot est . matchers . double s . shouldBe Exactly Ċ import Ġio . kot est . matchers . ints . shouldBe Exactly Ċ import Ġio . kot est . matchers . types . should Have Same HashCode As Ċ import Ġio . lac una . art if ex . Vec 2 Ċ import Ġkotlin . test . Test Ċ import Ġorg . open rnd r . k art if ex . Vec 2 Ġas ĠK Vec 2 Ċ Ċ class ĠTest Vec 2 Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Hash () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv 2 Ġ= ĠVec 2 ( 0 . 0 , Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkv 2 Ġ= ĠK Vec 2 ( 0 . 0 , Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 2 . should Have Same HashCode As ( kv 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv 2 Ġ= ĠVec 2 ( 2 . 0 , Ġ 2 . 1 2 3 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkv 2 Ġ= ĠK Vec 2 ( 2 . 0 , Ġ 2 . 1 2 3 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 2 . should Have Same HashCode As ( kv 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Compare () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv 2 Ġ= ĠVec 2 ( 0 . 0 , Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġkv 2 Ġ= ĠK Vec 2 ( 0 . 0 , Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġv 2 . compareTo ( v 2 ). shouldBe Exactly ( kv 2 . compareTo ( kv 2 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġv 2 a Ġ= ĠVec 2 ( 1 . 0 , Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġkv 2 a Ġ= ĠK Vec 2 ( 1 . 0 , Ġ 0 . 0 ) ĊĊĠĠĠĠĠĠĠ Ġv 2 a . compareTo ( v 2 ). shouldBe Exactly ( kv 2 a . compareTo ( kv 2 )) ĊĠĠĠĠĠĠĠ Ġv 2 . compareTo ( v 2 a ). shouldBe Exactly ( kv 2 . compareTo ( kv 2 a )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Pseudo Norm () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv 2 Ġ= ĠVec 2 ( 2 1 0 0 . 0 , Ġ 3 2 2 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġpn Ġ= Ġv 2 . pseudo Norm () ĊĊĠĠĠĠĠĠĠ Ġval Ġkv 2 Ġ= ĠK Vec 2 ( 2 1 0 0 . 0 , Ġ 3 2 2 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġk pn Ġ= Ġkv 2 . pseudo Norm () ĊĠĠĠĠĠĠĠ Ġpn . x . shouldBe Exactly ( k pn . x ) ĊĠĠĠĠĠĠĠ Ġpn . y . shouldBe Exactly ( k pn . y ) ĊĠĠĠ Ġ} Ċ }