/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 ĠN ie k ĠH aar man Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . n ha ar man . expect Ċ Ċ import Ġorg . junit . Test Ċ Ċ class ĠMatcher Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġexample _ toBe The Same As () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĠAny () ĊĊĠĠĠĠĠĠĠ Ġexpect ( a ). toBe The Same As ( a ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġexample _ toBe () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠData ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠData ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġexpect ( actual ). toBe ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġexample _ toBe Null () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactual : ĠInt ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġexpect ( actual ). toBe Null () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġto Be The Same As _ with Equal References _ accept s () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĠAny () ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠMatcher ( a ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠWhen Ġ*/ ĊĠĠĠĠĠĠĠ Ġmatcher . toBe The Same As ( a ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠ Ġawesome () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġto Be The Same As _ with Une qual References _ fails () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠData ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠData ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠMatcher ( actual ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠ Ġexpect Error With Message (" but Ġwas ") Ġwhen _ Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatcher . toBe The Same As ( expected ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġto Not Be The Same As _ with Equal References _ fails () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĠAny () ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠMatcher ( a ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠ Ġexpect Error With Message (" not Ġto Ġbe ") Ġon Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatcher . to Not Be The Same As ( a ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġto Not Be The Same As _ with Une qual References _ accept s () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠData ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠData ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠMatcher ( actual ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠ Ġmatcher . to Not Be The Same As ( expected ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠ Ġawesome () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġto Be _ with Equal References _ are Accepted () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠData ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠMatcher ( data ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠWhen Ġ*/ ĊĠĠĠĠĠĠĠ Ġmatcher . toBe ( data ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠ Ġawesome () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġto Be _ with Equal Items _ are Accepted () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= ĠData ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= ĠData ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠMatcher ( first ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠWhen Ġ*/ ĊĠĠĠĠĠĠĠ Ġmatcher . toBe ( second ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠ Ġawesome () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġto Be _ with Subtype _ isNot Accepted () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= ĠData ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= ĠSub data ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠMatcher ( first ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠ Ġexpect Error With Message (" but Ġwas ") Ġon Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatcher . toBe ( second ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġto Be _ with Une qual Items _ isNot Accepted () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠMatcher ( first ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠ Ġexpect Error With Message (" but Ġwas ") Ġon Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatcher . toBe ( second ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġto Be _ with NullValue _ isNot Accepted () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠMatcher < Int >( null ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠ Ġexpect Error With Message (" but Ġwas "). when _ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatcher . toBe ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġto BeNull _ with NullValue _ accept s () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠMatcher < Int >( null ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠWhen Ġ*/ ĊĠĠĠĠĠĠĠ Ġmatcher . toBe Null () ĊĊĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠ Ġawesome () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġto BeNull _ with NonNull Value _ fails () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠMatcher ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠ Ġexpect Error With Message (" Expected Ġ 3 Ġto Ġbe Ġnull .") Ġon Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatcher . toBe Null () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġto Not BeNull _ with NullValue _ fails () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠMatcher < Int >( null ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠWhen Ġ*/ ĊĠĠĠĠĠĠĠ Ġexpect Error With Message (" to Ġnot Ġbe Ġnull ") Ġon Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatcher . to Not BeNull () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠ Ġawesome () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġto Not BeNull _ with NonNull Value _ accept s () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠMatcher ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠWhen Ġ*/ ĊĠĠĠĠĠĠĠ Ġmatcher . to Not BeNull () ĊĊĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠ Ġawesome () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġto Be InstanceOf _ with Same Class _ accept s () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠMatcher ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠWhen Ġ*/ ĊĠĠĠĠĠĠĠ Ġmatcher . toBe InstanceOf < Int >() ĊĊĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠ Ġawesome () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġto Be InstanceOf _ with Subclass _ accept s () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠMatcher ( Sub data ( 4 )) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠWhen Ġ*/ ĊĠĠĠĠĠĠĠ Ġmatcher . toBe InstanceOf < Data >() ĊĊĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠ Ġawesome () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġto Be InstanceOf _ not An InstanceOf _ fails () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠGiven Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠMatcher ( Data ( 4 )) ĊĊĠĠĠĠĠĠĠ Ġ/* ĠThen Ġ*/ ĊĠĠĠĠĠĠĠ Ġexpect Error With Message (" to Ġbe Ġan Ġinstance Ġof ") Ġon Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠWhen Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatcher . toBe InstanceOf < Sub data >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġclass ĠData ( val Ġvalue : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( other Ġ!= Ġnull Ġ&& Ġthis . java Class Ġ== Ġother . java Class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġother Ġas ĠData ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . value Ġ== Ġdata . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ" Data ( value =$ value )" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠSub data ( value : ĠInt ) Ġ: ĠData ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ" Sub data ( value =$ value )" ĊĠĠĠ Ġ} Ċ } Ċ