package Ġorg . g ort tar . test . io Ċ Ċ import Ġassert k . assertThat Ċ import Ġassert k . assertions . contains Exactly Ċ import Ġassert k . assertions . isEmpty Ċ import Ġorg . g ort tar . test . io . Operation Type .* Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ class ĠIO Recorder Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` operation Chunks Ġempty Ġrecorder `() Ġ= ĠassertThat ( IO Recorder (). chunks ). isEmpty () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrecord Byte () Ġ= ĠIO Recorder (). run Ġ{ ĊĠĠĠĠĠĠĠ Ġrecord Byte (' a '. to Byte (), ĠIN ) ĊĠĠĠĠĠĠĠ ĠassertThat ( chunks ). contains Exactly ( IO Operation Chunk ( IN , Ġ" a ")) ĊĊĠĠĠĠĠĠĠ Ġrecord Byte (' b '. to Byte (), ĠIN ) ĊĠĠĠĠĠĠĠ ĠassertThat ( chunks ). contains Exactly ( IO Operation Chunk ( IN , Ġ" ab ")) ĊĊĠĠĠĠĠĠĠ Ġrecord Byte (' c '. to Byte (), ĠOUT ) ĊĠĠĠĠĠĠĠ ĠassertThat ( chunks ). contains Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( IN , Ġ" ab "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( OUT , Ġ" c ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrecord Byte (' d '. to Byte (), ĠERR ) ĊĠĠĠĠĠĠĠ ĠassertThat ( chunks ). contains Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( IN , Ġ" ab "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( OUT , Ġ" c "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( ERR , Ġ" d ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` record Bytes Ġempty Ġarray `() Ġ= ĠIO Recorder (). run Ġ{ ĊĠĠĠĠĠĠĠ Ġrecord Bytes ( byte ArrayOf (), ĠIN ) ĊĠĠĠĠĠĠĠ ĠassertThat ( chunks ). contains Exactly ( IO Operation Chunk ( IN , Ġ"")) ĊĊĠĠĠĠĠĠĠ Ġrecord Bytes ( byte ArrayOf (), ĠIN ) ĊĠĠĠĠĠĠĠ ĠassertThat ( chunks ). contains Exactly ( IO Operation Chunk ( IN , Ġ"")) ĊĊĠĠĠĠĠĠĠ Ġrecord Bytes ( byte ArrayOf (), ĠOUT ) ĊĠĠĠĠĠĠĠ ĠassertThat ( chunks ). contains Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( IN , Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( OUT , Ġ"") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrecord Bytes ( byte ArrayOf (), ĠERR ) ĊĠĠĠĠĠĠĠ ĠassertThat ( chunks ). contains Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( IN , Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( OUT , Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( ERR , Ġ"") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Suppress (" Spell Checking Inspection ") ĊĠĠĠ Ġfun Ġ` record Bytes Ġnon Ġempty Ġarray `() Ġ= ĠIO Recorder (). run Ġ{ ĊĠĠĠĠĠĠĠ Ġrecord Bytes (" ab ". toByteArray (), ĠIN ) ĊĠĠĠĠĠĠĠ ĠassertThat ( chunks ). contains Exactly ( IO Operation Chunk ( IN , Ġ" ab ")) ĊĊĠĠĠĠĠĠĠ Ġrecord Bytes (" cd ". toByteArray (), ĠIN ) ĊĠĠĠĠĠĠĠ ĠassertThat ( chunks ). contains Exactly ( IO Operation Chunk ( IN , Ġ" abcd ")) ĊĊĠĠĠĠĠĠĠ Ġrecord Bytes (" ef ". toByteArray (), ĠOUT ) ĊĠĠĠĠĠĠĠ ĠassertThat ( chunks ). contains Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( IN , Ġ" abcd "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( OUT , Ġ" ef ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrecord Bytes (" gh ". toByteArray (), ĠERR ) ĊĠĠĠĠĠĠĠ ĠassertThat ( chunks ). contains Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( IN , Ġ" abcd "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( OUT , Ġ" ef "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( ERR , Ġ" gh ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Suppress (" Spell Checking Inspection ") ĊĠĠĠ Ġfun Ġ` record Bytes Ġoff Ġlen `() Ġ= ĠIO Recorder (). run Ġ{ ĊĠĠĠĠĠĠĠ Ġrecord Bytes ( bytes Ġ= Ġ" abcd ". toByteArray (), Ġoperation Type Ġ= ĠIN , Ġoff Ġ= Ġ 1 , Ġlen Ġ= Ġ 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( chunks ). contains Exactly ( IO Operation Chunk ( IN , Ġ" bc ")) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠRecord IO Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrecord IO Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġrecord IO (" hello \ n ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Start ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġread Line Ġ= Ġread Line () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Read : Ġ$ readLine ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println (" Err Read : Ġ$ readLine ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" End ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . print (" Err End ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcr Ġ= Ġif Ġ( actual . first (). content . take Last ( 2 ). first () Ġ== Ġ'\ r ') Ġ"\ r \ n " ĊĠĠĠĠĠĠĠ Ġelse Ġ"\ n " ĊĠĠĠĠĠĠĠ ĠassertThat ( actual ). contains Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( OUT , Ġ" Start $ cr "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( IN , Ġ" hello \ n "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( OUT , Ġ" Read : Ġhello $ cr "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( ERR , Ġ" Err Read : Ġhello $ cr "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( OUT , Ġ" End $ cr "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIO Operation Chunk ( ERR , Ġ" Err End $ cr ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }