package Ġorg . test it . p act . provider . http Ċ Ċ import Ġau . com . di us . p act . model . Interaction Ċ import Ġau . com . di us . p act . model . Request Response Interaction Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . do Throw Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . in Order Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . assert Throws ĊĊ Ċ internal Ġclass ĠProvider State Handler Test Ġ{ ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` if Ġthere Ġare Ġno Ġprovider Ġstates Ġdefined Ġfor Ġan Ġinteraction Ġa Ġcallback Ġhandler Ġis Ġnot Ġneeded `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcut Ġ= ĠProvider State Handler ( null ) ĊĠĠĠĠĠĠĠ Ġval Ġinteraction Ġ= Ġinteraction (" no Ġstates ", Ġempty List ()) ĊĠĠĠĠĠĠĠ Ġcut . prepare ( interaction ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` if Ġthere Ġare Ġprovider Ġstates Ġdefined Ġfor Ġan Ġinteraction Ġa Ġcallback Ġhandler Ġis Ġneeded `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcut Ġ= ĠProvider State Handler ( null ) ĊĠĠĠĠĠĠĠ Ġval Ġinteraction Ġ= Ġinteraction (" one Ġstate ", ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider State (" some Ġstate Ġdescription ") ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertThrows < Provider State Handler Not Set Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcut . prepare ( interaction ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` provider Ġstate Ġmethods Ġare Ġcalled Ġin Ġorder `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdelegate Ġ= Ġmock < Callback Delegate >() ĊĠĠĠĠĠĠĠ Ġval Ġcut Ġ= ĠProvider State Handler ( Callback Handler ( delegate )) ĊĠĠĠĠĠĠĠ Ġval Ġinteraction Ġ= Ġinteraction (" var ious Ġstates ", ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider State (" some Ġstate Ġdescription "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider State (" some Ġother Ġstate Ġdescription ", ĠLinkedHashMap < String , ĠString >(). apply Ġ{ Ġput (" foo ", Ġ" bar ") Ġ}) ĊĠĠĠĠĠĠĠ Ġ)) ĊĊĠĠĠĠĠĠĠ Ġcut . prepare ( interaction ) ĊĊĠĠĠĠĠĠĠ Ġwith ( in Order ( delegate )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( delegate ). some State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( delegate ). some Other State ( map Of (" foo " Ġto Ġ" bar ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify No More Interactions () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` provider Ġstate Ġmethods Ġdont Ġhave Ġto Ġmatch Ġcase `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdelegate Ġ= Ġmock < Callback Delegate >() ĊĠĠĠĠĠĠĠ Ġval Ġcut Ġ= ĠProvider State Handler ( Callback Handler ( delegate )) ĊĠĠĠĠĠĠĠ Ġval Ġinteraction Ġ= Ġinteraction (" var ious Ġstates ", ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider State (" So Me ĠSt At E ĠDe Sc Ri Pt Io N ") ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġcut . prepare ( interaction ) ĊĠĠĠĠĠĠĠ Ġverify ( delegate ). some State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` un resolved Ġprovider Ġstate Ġmethods Ġthrow Ġexception `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdelegate Ġ= Ġmock < Callback Delegate >() ĊĠĠĠĠĠĠĠ Ġval Ġcut Ġ= ĠProvider State Handler ( Callback Handler ( delegate )) ĊĠĠĠĠĠĠĠ Ġval Ġinteraction Ġ= Ġinteraction (" unknown Ġstate ", ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider State (" unknown Ġstate Ġdescription ") ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertThrows < Provider State Method NotFoundException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcut . prepare ( interaction ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` provider Ġstate Ġmethod Ġexceptions Ġare Ġthrow Ġwrapped Ġin Ġcustom Ġexception Ġtype `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdelegate Ġ= Ġmock < Callback Delegate > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġsome State () Ġ} Ġdo Throw ĠRuntimeException () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcut Ġ= ĠProvider State Handler ( Callback Handler ( delegate )) ĊĠĠĠĠĠĠĠ Ġval Ġinteraction Ġ= Ġinteraction (" one Ġstate Ġwith Ġexception ", ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider State (" some Ġstate Ġdescription ") ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertThrows < Provider State Invocation Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcut . prepare ( interaction ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` mal formed Ġstate Ġmethods Ġthrow Ġexception Ġ- Ġwrong Ġargument Ġtype `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcut Ġ= ĠProvider State Handler ( M all formed Callback Handler ()) ĊĠĠĠĠĠĠĠ Ġval Ġinteraction Ġ= Ġinteraction (" mal formed Ġstate ", ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider State (" non Ġmap Ġmethod Ġargument ") ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertThrows < Malformed Provider State Method Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcut . prepare ( interaction ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġ` mal formed Ġstate Ġmethods Ġthrow Ġexception Ġ- Ġnumber Ġof Ġarguments `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcut Ġ= ĠProvider State Handler ( M all formed Callback Handler ()) ĊĠĠĠĠĠĠĠ Ġval Ġinteraction Ġ= Ġinteraction (" mal formed Ġstate ", ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider State (" more Ġthan Ġone Ġmethod Ġargument ") ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ ĠassertThrows < Malformed Provider State Method Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcut . prepare ( interaction ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠCallback Handler ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelegate : ĠCallback Delegate ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Provider State (" some Ġstate Ġdescription ") ĊĠĠĠĠĠĠĠ Ġfun Ġsome State () Ġ= Ġdelegate . some State () ĊĊĠĠĠĠĠĠĠ Ġ@ Provider State (" some Ġother Ġstate Ġdescription ") ĊĠĠĠĠĠĠĠ Ġfun Ġsome Other State ( parameters : ĠMap < String , ĠAny >) Ġ= Ġdelegate . some Other State ( parameters ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠM all formed Callback Handler Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Provider State (" non Ġmap Ġmethod Ġargument ") ĊĠĠĠĠĠĠĠ Ġfun Ġsome State ( arg 0 : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Provider State (" more Ġthan Ġone Ġmethod Ġargument ") ĊĠĠĠĠĠĠĠ Ġfun Ġsome Other State ( arg 0 : ĠMap < String , ĠAny >, Ġarg 1 : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠCallback Delegate Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġsome State () ĊĠĠĠĠĠĠĠ Ġfun Ġsome Other State ( parameters : ĠMap < String , ĠAny >) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprovider State ( name : ĠString , Ġparameters : ĠMap < String , ĠAny > Ġ= Ġmap Of ()) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġau . com . di us . p act . model . Provider State ( name , Ġparameters ) ĊĊĠĠĠ Ġfun Ġinteraction ( description : ĠString , Ġprovider States : ĠList < au . com . di us . p act . model . Provider State >): ĠInteraction Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRequest Response Interaction ( description , Ġprovider States ) ĊĠĠĠ Ġ} Ċ Ċ }