/* ĊĠĠ ĠCopyright Ġ 2 0 1 7 - 2 0 2 1 ĠChar les ĠK orn . ĊĊĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); ĊĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĊĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat ĊĊĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 ĊĊĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware ĊĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĊĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . ĊĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand ĊĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ */ Ċ Ċ package Ġb ate ct . docker Ċ Ċ import Ġb ate ct . test utils . create ForEach Test Ċ import Ġb ate ct . test utils . equalTo Ċ import Ġcom . nat pr y ce . ham k rest . assertion . assertThat Ċ import Ġok io . Buffer Ċ import Ġok io . sink Ċ import Ġorg . spe k framework . spe k 2 . Spe k Ċ import Ġorg . spe k framework . spe k 2 . style . specification . describe Ċ import Ġjava . io . ByteArray OutputStream Ċ Ċ object ĠT ee Spec Ġ: ĠSpe k ({ ĊĠĠĠ Ġdescribe (" a Ġtee Ġsink ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoutput 1 Ġby Ġcreate ForEach Test Ġ{ ĠByteArrayOutputStream () Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġoutput 2 Ġby Ġcreate ForEach Test Ġ{ ĠByteArrayOutputStream () Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsink Ġby Ġcreate ForEach Test Ġ{ ĠT ee ( output 1 . sink (), Ġoutput 2 . sink ()) Ġ} ĊĊĠĠĠĠĠĠĠ Ġdescribe (" when Ġa Ġsingle Ġwrite Ġis Ġmade ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠbeforeEach Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠBuffer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . writeString (" hello ", ĠChar sets . UTF _ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsink . write ( buffer , Ġ" hello ". toByteArray ( Charsets . UTF _ 8 ). size . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" writes Ġthe Ġdata Ġto Ġall Ġdest inations ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( output 1 . toString (), ĠequalTo (" hello ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( output 2 . toString (), ĠequalTo (" hello ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdescribe (" when Ġmultiple Ġwrites Ġare Ġmade ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠbeforeEach Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠBuffer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . writeString (" hello ", ĠChar sets . UTF _ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsink . write ( buffer , Ġ" hello ". toByteArray ( Charsets . UTF _ 8 ). size . to Long ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . writeString (" Ġanother Ġhello ", ĠChar sets . UTF _ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsink . write ( buffer , Ġ" Ġanother Ġhello ". toByteArray ( Charsets . UTF _ 8 ). size . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" writes Ġthe Ġdata Ġto Ġall Ġdest inations ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( output 1 . toString (), ĠequalTo (" hello Ġanother Ġhello ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( output 2 . toString (), ĠequalTo (" hello Ġanother Ġhello ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ