package Ġtop . der ek dev . kotlin util . collection ĊĊ Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNot Equals Ċ import Ġkotlin . test . assertNot Same Ċ Ċ /* Ċ Ġ* Ċ Ġ* Ġ@ author : Ġdere k Ċ Ġ* Ġ@ create : Ġ 8 / 1 2 / 2 0 Ġ 1 0 : 4 4 Ġpm Ċ Ġ**/ Ċ Ċ class ĠMutable Pair Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` mutable Pair Of `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpair Ġ: ĠMutable Pair < Int , ĠString > Ġ= Ġmutable Pair Of ( 1 , Ġ" a ") ĊĠĠĠĠĠĠĠ Ġval Ġsnap Shot 1 Ġ= Ġpair . snapshot ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġsnap Shot 1 . first ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" a ", Ġsnap Shot 1 . second ) ĊĊĠĠĠĠĠĠĠ Ġpair . use Ġ{ Ġfirst , Ġsecond Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġfirst ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" a ", Ġsecond ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpair . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġfirst ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" a ", Ġsecond ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġfirst ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" a ", Ġsecond ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Ġ= Ġ" b " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġfirst ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" b ", Ġsecond ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpair . use Self Ġ{ Ġfirst , Ġsecond Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġfirst ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" b ", Ġsecond ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . first Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġfirst ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġthis . first ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" b ", Ġsecond ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġsnap Shot 1 . first ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" a ", Ġsnap Shot 1 . second ) ĊĠĠĠĠĠĠĠ Ġval Ġsnap Shot 2 Ġ= Ġpair . snapshot ĊĠĠĠĠĠĠĠ Ġval Ġsnap Shot 3 Ġ= Ġpair . snapshot ĊĊĠĠĠĠĠĠĠ Ġassert Not Equals ( snap Shot 1 , Ġsnap Shot 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( snap Shot 2 , Ġsnap Shot 3 ) ĊĠĠĠĠĠĠĠ Ġassert Not Same ( snap Shot 2 , Ġsnap Shot 3 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġsnap Shot 2 . first ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" b ", Ġsnap Shot 2 . second ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` mutable Pair Of Null `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpair Ġ= Ġmutable Pair Of < Int ?, ĠString ? >( null , Ġnull ) ĊĠĠĠĠĠĠĠ Ġpair . use Ġ{ Ġfirst , Ġsecond Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( first , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( second , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpair . set ( 1 , Ġnull ) ĊĠĠĠĠĠĠĠ Ġpair . use Ġ{ Ġa , Ġb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġa ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( null , Ġb ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsnapshot 1 Ġ= Ġpair . snapshot ĊĠĠĠĠĠĠĠ Ġsnapshot 1 . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġfirst ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( null , Ġsecond ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpair . first Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġsnapshot 2 Ġ= Ġpair . snapshot ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( snapshot 1 , Ġsnapshot 2 ) ĊĠĠĠ Ġ} ĊĊ Ċ }