package Ġio . sentry . protocol Ċ Ċ import Ġjava . util . Collections Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNotNull Ċ import Ġkotlin . test . assertNot Same Ċ import Ġkotlin . test . assertNull Ċ Ċ class ĠRequest Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` cl oning Ġrequest Ġw ont Ġhave Ġthe Ġsame Ġreferences `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġcreate Request () ĊĠĠĠĠĠĠĠ Ġval Ġclone Ġ= Ġrequest . clone () ĊĊĠĠĠĠĠĠĠ ĠassertNotNull ( clone ) ĊĠĠĠĠĠĠĠ Ġassert Not Same ( request , Ġclone ) ĊĊĠĠĠĠĠĠĠ Ġassert Not Same ( request . others , Ġclone . others ) ĊĊĠĠĠĠĠĠĠ Ġassert Not Same ( request . unknown , Ġclone . unknown ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` cl oning Ġrequest Ġwill Ġhave Ġthe Ġsame Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġcreate Request () ĊĠĠĠĠĠĠĠ Ġval Ġclone Ġ= Ġrequest . clone () ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" get ", Ġclone . method ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" http :// localhost : 8 0 8 0 ", Ġclone . url ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" ? foo = bar ", Ġclone . queryString ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" envs ", Ġclone . envs !! [" envs "]) ĊĠĠĠĠĠĠĠ ĠassertEquals (" others ", Ġclone . others !! [" others "]) ĊĠĠĠĠĠĠĠ ĠassertEquals (" unknown ", Ġclone . unknown !! [" unknown "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` cl oning Ġrequest Ġand Ġchanging Ġthe Ġoriginal Ġvalues Ġw ont Ġchange Ġthe Ġclone Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġcreate Request () ĊĠĠĠĠĠĠĠ Ġval Ġclone Ġ= Ġrequest . clone () ĊĊĠĠĠĠĠĠĠ Ġrequest . method Ġ= Ġ" post " ĊĠĠĠĠĠĠĠ Ġrequest . url Ġ= Ġ" http :// another - host : 8 0 8 1 /" ĊĠĠĠĠĠĠĠ Ġrequest . queryString Ġ= Ġ"? xxx = yyy " ĊĠĠĠĠĠĠĠ Ġrequest . envs !! [" envs "] Ġ= Ġ" new En vs " ĊĠĠĠĠĠĠĠ Ġrequest . others !! [" others "] Ġ= Ġ" new Others " ĊĠĠĠĠĠĠĠ Ġrequest . others !! [" another One "] Ġ= Ġ" another One " ĊĠĠĠĠĠĠĠ Ġval Ġnew Unknown Ġ= Ġmap Of ( Pair (" unknown ", Ġ" new Unknown "), ĠPair (" other Unknown ", Ġ" other Unknown ")) ĊĠĠĠĠĠĠĠ Ġrequest . accept Unknown Properties ( new Unknown ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" get ", Ġclone . method ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" http :// localhost : 8 0 8 0 ", Ġclone . url ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" ? foo = bar ", Ġclone . queryString ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" envs ", Ġclone . envs !! [" envs "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġclone . envs !!. size ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" others ", Ġclone . others !! [" others "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġclone . others !!. size ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" unknown ", Ġclone . unknown !! [" unknown "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġclone . unknown !!. size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` setting Ġnull Ġothers Ġdo Ġnot Ġcrash `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġcreate Request () ĊĠĠĠĠĠĠĠ Ġrequest . others Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ ĠassertNull ( request . others ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġset En vs Ġreceives Ġimmutable Ġmap Ġas Ġan Ġargument , Ġits Ġstill Ġpossible Ġto Ġadd Ġmore Ġenv Ġto Ġthe Ġrequest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenv s Ġ= ĠCollections . unmodifiable Map ( map Of (" env 1 " Ġto Ġ" value 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenv s !! [" env 2 "] Ġ= Ġ" value 2 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertNotNull ( request . envs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( map Of (" env 1 " Ġto Ġ" value 1 ", Ġ" env 2 " Ġto Ġ" value 2 "), Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġset Other Ġreceives Ġimmutable Ġmap Ġas Ġan Ġargument , Ġits Ġstill Ġpossible Ġto Ġadd Ġmore Ġothers Ġto Ġthe Ġrequest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġothers Ġ= ĠCollections . unmodifiable Map ( map Of (" key 1 " Ġto Ġ" value 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġothers !! [" key 2 "] Ġ= Ġ" value 2 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertNotNull ( request . others ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( map Of (" key 1 " Ġto Ġ" value 1 ", Ġ" key 2 " Ġto Ġ" value 2 "), Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġset Headers Ġreceives Ġimmutable Ġmap Ġas Ġan Ġargument , Ġits Ġstill Ġpossible Ġto Ġadd Ġmore Ġheaders Ġto Ġthe Ġrequest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Ġ= ĠCollections . unmodifiable Map ( map Of (" key 1 " Ġto Ġ" value 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders !! [" key 2 "] Ġ= Ġ" value 2 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertNotNull ( request . headers ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( map Of (" key 1 " Ġto Ġ" value 1 ", Ġ" key 2 " Ġto Ġ" value 2 "), Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Request (): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRequest (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ= Ġ" get " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ" http :// localhost : 8 0 8 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠqueryString Ġ= Ġ"? foo = bar " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenv s Ġ= Ġmutable Map Of ( Pair (" envs ", Ġ" envs ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġothers Ġ= Ġmutable Map Of ( Pair (" others ", Ġ" others ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Others ( others ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunknown Ġ= Ġmap Of ( Pair (" unknown ", Ġ" unknown ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccept Unknown Properties ( unknown ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ