/* Ċ Ġ* ĠCopyright Ġ 2 0 1 4 - 2 0 1 9 ĠJetBrains Ġs . r . o Ġand Ġcontributors . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense . Ċ Ġ*/ Ċ Ċ package Ġio . ktor . tests . utils Ċ Ċ import Ġio . ktor . server . util .* Ċ import Ġio . ktor . util .* Ċ import Ġkotlin . test .* Ċ Ċ @ Opt In ( Internal API :: class ) Ċ class ĠCopy On Write HashMap Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmap Ġ= ĠCopy On Write HashMap < String , ĠString >() ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġs moke () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( null , Ġmap [" k 1 "]) ĊĠĠĠĠĠĠĠ Ġmap [" k 1 "] Ġ= Ġ" v 1 " ĊĠĠĠĠĠĠĠ ĠassertEquals (" v 1 ", Ġmap [" k 1 "]) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( null , Ġmap [" k 2 "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( null , Ġmap . put (" k 2 ", Ġ" v 2 ")) ĊĠĠĠĠĠĠĠ ĠassertEquals (" v 2 ", Ġmap . put (" k 2 ", Ġ" v 3 ")) ĊĠĠĠĠĠĠĠ ĠassertEquals (" v 3 ", Ġmap . remove (" k 2 ")) ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" v 3 1 ", Ġmap . compute If Absent (" k 3 ") Ġ{ Ġ" v 3 1 " Ġ}) ĊĠĠĠĠĠĠĠ ĠassertEquals (" v 3 1 ", Ġmap . compute If Absent (" k 3 ") Ġ{ Ġ" v 3 2 " Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Empty () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertNull ( map [" k 1 "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Existing () Ġ{ ĊĠĠĠĠĠĠĠ Ġmap . put (" k 1 ", Ġ" v 1 ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" v 1 ", Ġmap [" k 1 "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġput New And Replace () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( null , Ġmap . put (" k 1 ", Ġ" v 1 ")) ĊĠĠĠĠĠĠĠ ĠassertEquals (" v 1 ", Ġmap . put (" k 1 ", Ġ" v 2 ")) ĊĠĠĠĠĠĠĠ ĠassertEquals (" v 2 ", Ġmap . put (" k 1 ", Ġ" v 3 ")) ĊĠĠĠĠĠĠĠ ĠassertEquals (" v 3 ", Ġmap [" k 1 "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġput Many () Ġ{ ĊĠĠĠĠĠĠĠ Ġrepeat ( 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( map . put (" k -$ it ", Ġ" v -$ it ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrepeat ( 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" v -$ it ", Ġmap [" k -$ it "]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Remove Missing () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertNull ( map [" k "]) ĊĠĠĠĠĠĠĠ ĠassertNull ( map . remove (" k ")) ĊĠĠĠĠĠĠĠ ĠassertNull ( map [" k "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Remove Existing () Ġ{ ĊĠĠĠĠĠĠĠ Ġmap . put (" k 1 ", Ġ" v 1 ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" v 1 ", Ġmap . remove (" k 1 ")) ĊĠĠĠĠĠĠĠ ĠassertNull ( map . remove (" k 1 ")) ĊĠĠĠĠĠĠĠ ĠassertNull ( map [" k 1 "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Remove Only Specified () Ġ{ ĊĠĠĠĠĠĠĠ Ġmap . put (" k 1 ", Ġ" v 1 ") ĊĠĠĠĠĠĠĠ Ġmap . put (" k 2 ", Ġ" v 2 ") ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" v 1 ", Ġmap [" k 1 "]) ĊĠĠĠĠĠĠĠ ĠassertEquals (" v 2 ", Ġmap [" k 2 "]) ĊĠĠĠĠĠĠĠ ĠassertEquals (" v 1 ", Ġmap . remove (" k 1 ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( null , Ġmap [" k 1 "]) ĊĠĠĠĠĠĠĠ ĠassertEquals (" v 2 ", Ġmap [" k 2 "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Compute If Absent Missing () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertNull ( map [" k 1 "]) ĊĠĠĠĠĠĠĠ ĠassertEquals (" v 1 ", Ġmap . compute If Absent (" k 1 ") Ġ{ Ġ" v 1 " Ġ}) ĊĠĠĠĠĠĠĠ ĠassertEquals (" v 1 ", Ġmap [" k 1 "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Compute If Absent Existing () Ġ{ ĊĠĠĠĠĠĠĠ Ġmap . put (" k 1 ", Ġ" v 0 ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" v 0 ", Ġmap . compute If Absent (" k 1 ") Ġ{ Ġfail (" should n 't Ġbe Ġinvoked ") Ġ}) ĊĠĠĠĠĠĠĠ ĠassertEquals (" v 0 ", Ġmap [" k 1 "]) ĊĠĠĠ Ġ} Ċ } Ċ