package Ġio . mock k . gh Ċ Ċ import Ġio . mock k . Mock K Exception Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . slot Ċ import Ġio . mock k . verify Ċ import Ġio . mock k . verify Order Ċ import Ġkotlin . test . Before Test Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assert Fails With Ċ Ċ class ĠIssue 3 5 2 Test Ġ{ ĊĊĠĠĠ Ġopen Ġclass ĠMock ed Subject Ġ{ ĊĠĠĠĠĠĠĠ Ġopen Ġfun Ġdo Something ( id : ĠString ?, Ġdata : ĠAny ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Not Ġmocked Ġ: (" ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġmock Ġ= Ġmock k < Mock ed Subject >() ĊĊĠĠĠ Ġ@ Before Test ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmock . do Something (" 1 ", Ġ" data 1 ") Ġ} Ġreturns Ġ" result 1 " ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmock . do Something (" 2 ", Ġ" data 2 ") Ġ} Ġreturns Ġ" result 2 " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` It Ġthrows Ġa ĠMock k Exception Ġwhen Ġverify ing Ġthe Ġsame Ġfunction Ġtwice Ġwith Ġslots `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmock . do Something (" 1 ", Ġ" data 1 ") ĊĠĠĠĠĠĠĠ Ġmock . do Something (" 2 ", Ġ" data 2 ") ĊĊĠĠĠĠĠĠĠ Ġval Ġdata Slot Id 1 Ġ= Ġslot < String >() ĊĠĠĠĠĠĠĠ Ġval Ġdata Slot Id 2 Ġ= Ġslot < String >() ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < Mock K Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmock . do Something (" 1 ", Ġcapture ( data Slot Id 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmock . do Something (" 2 ", Ġcapture ( data Slot Id 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` It Ġdoes Ġnot Ġthrow Ġa ĠMock k Exception Ġwhen Ġthere Ġare Ġmultiple Ġtests Ġverify ing Ġwith Ġslots `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmock . do Something (" 1 ", Ġ" data 1 ") ĊĊĠĠĠĠĠĠĠ Ġval Ġslot Ġ= Ġslot < String >() ĊĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock . do Something (" 1 ", Ġcapture ( slot )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" data 1 ", Ġslot . captured ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Another Ġtest Ġto Ġtest Ġthe Ġco ex istence Ġof Ġtests Ġwith Ġslots `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmock . do Something (" 1 ", Ġ" data 1 ") ĊĊĠĠĠĠĠĠĠ Ġval Ġslot Ġ= Ġslot < String >() ĊĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock . do Something (" 1 ", Ġcapture ( slot )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" data 1 ", Ġslot . captured ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` It Ġallows Ġmultiple Ġcapt ur ings Ġof Ġthe Ġsame Ġfunction Ġusing Ġa Ġmutable List `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmock . do Something (" 1 ", Ġ" data 1 ") ĊĠĠĠĠĠĠĠ Ġmock . do Something (" 2 ", Ġ" data 2 ") ĊĊĠĠĠĠĠĠĠ Ġval Ġslot List Ġ= Ġmutable ListOf < String >() ĊĊĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock . do Something (" 1 ", Ġcapture ( slot List )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock . do Something (" 2 ", Ġcapture ( slot List )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" data 1 ", Ġslot List [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals (" data 2 ", Ġslot List [ 1 ]) ĊĠĠĠ Ġ} Ċ Ċ } Ċ