package Ġrs . d us k . world . interact . dialog ue Ċ Ċ import Ġio . mock k .* Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . jupiter . api . Assertions . assertTrue Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . k oin . test . mock . declare Mock Ċ import Ġrs . d us k . cache . definition . data . Item Definition Ċ import Ġrs . d us k . engine . action . Contexts Ċ import Ġrs . d us k . engine . client . cache Definition Module Ċ import Ġrs . d us k . engine . client . ui . Interfaces Ċ import Ġrs . d us k . engine . client . ui . dialog ue . Dialog ue Context Ċ import Ġrs . d us k . engine . client . ui . dialog ue . Dialog ues Ċ import Ġrs . d us k . engine . client . ui . open Ċ import Ġrs . d us k . engine . entity . character . player . Player Ċ import Ġrs . d us k . engine . entity . definition . Item Definitions Ċ import Ġrs . d us k . world . interact . dialog ue . type . destroy Ċ import Ġrs . d us k . world . script . K oin Mock Ċ Ċ internal Ġclass ĠDestroy Test Ġ: ĠK oin Mock () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġinterfaces : ĠInterfaces ĊĠĠĠ Ġlateinit Ġvar Ġmanager : ĠDialog ues ĊĠĠĠ Ġlateinit Ġvar Ġplayer : ĠPlayer ĊĠĠĠ Ġlateinit Ġvar Ġcontext : ĠDialog ue Context ĊĊĠĠĠ Ġoverride Ġval Ġmodules Ġ= ĠlistOf ( cache Definition Module ) ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock k Static (" rs . d us k . engine . client . ui . Interfaces Kt ") ĊĠĠĠĠĠĠĠ Ġplayer Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġinterfaces Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġmanager Ġ= Ġspy k ( Dialog ues ()) ĊĠĠĠĠĠĠĠ Ġcontext Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcontext . player Ġ} Ġreturns Ġplayer ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġplayer . open ( any ()) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġplayer . interfaces Ġ} Ġreturns Ġinterfaces ĊĠĠĠĠĠĠĠ Ġdeclare Mock < Item Definitions > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġget ( 1 2 3 4 ) Ġ} Ġreturns ĠItem Definition ( name Ġ= Ġ" magic ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Send Ġitem Ġdestroy `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmanager . start ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestroy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquestion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlines ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", Ġ 1 2 3 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrun Blocking ( Contexts . Game ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . open (" confirm _ destroy ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterfaces . send Text (" confirm _ destroy ", Ġ" line 1 ", Ġ" question < br > lines ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterfaces . send Text (" confirm _ destroy ", Ġ" item _ name ", Ġ" magic ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterfaces . send Item (" confirm _ destroy ", Ġ" item _ slot ", Ġ 1 2 3 4 , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Destroy Ġnot Ġsent Ġif Ġinterface Ġnot Ġopened `() Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġcontext . await < Boolean >( any ()) Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġplayer . open (" confirm _ destroy ") Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġmanager . start ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestroy (" question ", Ġ 1 2 3 4 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrun Blocking ( Contexts . Game ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Verify ( exact ly Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . await < Boolean >(" destroy ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterfaces . send Text (" confirm _ destroy ", Ġ" line 1 ", Ġ" question ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Destroy Ġreturns Ġboolean `() Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġcontext . await < Boolean >( any ()) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġmanager . start ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( destroy (" question ", Ġ 1 2 3 4 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }