/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠPoly ĠForest , ĠLLC Ċ Ġ* Ċ Ġ* Ġ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 . ac orn ui . math Ċ Ċ import Ġcom . ac orn ui . serialization . json Parse Ċ import Ġcom . ac orn ui . serialization . json String ify Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertFalse Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠRectangle Test Ġ{ Ċ ĉ @ Test Ċ ĉ fun Ġserialize () Ġ{ Ċĉ ĉ val Ġv Ġ= ĠFoo 6 4 8 ( Rectangle ( 1 . 1 , Ġ 2 . 1 , Ġ 3 . 1 , Ġ 4 . 1 )) Ċĉ ĉ val Ġstr Ġ= Ġjson String ify ( Foo 6 4 8 . serializer (), Ġv ) Ċĉ ĉ assertEquals (""" {" rect ":[ 1 . 1 , 2 . 1 , 3 . 1 , 4 . 1 ]} """, Ġstr ) Ċĉ ĉ assertEquals ( v , Ġjson Parse ( Foo 6 4 8 . serializer (), Ġ""" {" rect ":[ 1 . 1 , 2 . 1 , 3 . 1 , 4 . 1 ]} "" ")) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġarea () Ġ{ Ċĉ ĉ assertEquals ( 1 2 . 0 , ĠRectangle ( 1 . 0 , Ġ 2 . 0 , Ġ 3 . 0 , Ġ 4 . 0 ). area ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġcontains Point () Ġ{ Ċĉ ĉ assertTrue ( Rectangle ( 1 . 0 , Ġ 2 . 0 , Ġ 3 . 0 , Ġ 4 . 0 ). contains ( 2 . 0 , Ġ 3 . 0 )) Ċĉ ĉ assertTrue ( Rectangle ( 1 . 0 , Ġ 2 . 0 , Ġ 3 . 0 , Ġ 4 . 0 ). contains ( 3 . 9 9 , Ġ 5 . 9 9 )) Ċĉ ĉ assertFalse ( Rectangle ( 1 . 0 , Ġ 2 . 0 , Ġ 3 . 0 , Ġ 4 . 0 ). contains ( 0 . 0 , Ġ 2 . 0 )) Ċĉ ĉ assertFalse ( Rectangle ( 1 . 0 , Ġ 2 . 0 , Ġ 3 . 0 , Ġ 4 . 0 ). contains ( 2 . 0 , Ġ 0 . 0 )) Ċĉ ĉ assertTrue ( Rectangle (- 1 . 0 , Ġ 2 . 0 , Ġ 3 . 0 , Ġ 4 . 0 ). contains ( 0 . 0 , Ġ 5 . 0 )) Ċĉ ĉ assertTrue ( Rectangle (- 1 . 0 , Ġ- 2 . 0 , Ġ 3 . 0 , Ġ 4 . 0 ). contains ( 1 . 0 , Ġ 1 . 0 )) ĊĊĉ ĉ // ĠAfter ĠTop / Left Ġedge Ċĉ ĉ assertTrue ( Rectangle ( 1 . 0 , Ġ 2 . 0 , Ġ 3 . 0 , Ġ 4 . 0 ). contains ( 1 . 0 , Ġ 2 . 0 )) Ċĉ ĉ assertTrue ( Rectangle ( 1 . 0 , Ġ 2 . 0 , Ġ 3 . 0 , Ġ 4 . 0 ). contains ( 1 . 0 , Ġ 3 . 0 )) ĊĊĉ ĉ // ĠAfter ĠBottom / Right Ġedge Ċĉ ĉ assertFalse ( Rectangle ( 1 . 0 , Ġ 2 . 0 , Ġ 3 . 0 , Ġ 4 . 0 ). contains ( 4 . 0 , Ġ 6 . 0 )) Ċĉ ĉ assertFalse ( Rectangle ( 1 . 0 , Ġ 2 . 0 , Ġ 3 . 0 , Ġ 4 . 0 ). contains ( 4 . 0 , Ġ 5 . 0 )) Ċĉ ĉ assertFalse ( Rectangle ( 1 . 0 , Ġ 2 . 0 , Ġ 3 . 0 , Ġ 4 . 0 ). contains ( 3 . 0 , Ġ 6 . 0 )) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġcontains Rectangle () Ġ{ Ċĉ ĉ assertTrue ( Ċĉĉ ĉ Rectangle ( 1 . 0 , Ġ 2 . 0 , Ġ 3 . 0 , Ġ 4 . 0 ). contains ( Rectangle ( 1 . 0 , Ġ 2 . 0 , Ġ 3 . 0 , Ġ 4 . 0 )) Ċĉ ĉ ) Ċĉ ĉ assertFalse ( Ċĉĉ ĉ Rectangle ( 1 . 0 , Ġ 2 . 0 , Ġ 3 . 0 , Ġ 4 . 0 ). contains ( Rectangle ( 1 . 0 , Ġ 2 . 0 , Ġ 3 . 0 , Ġ 5 . 0 )) Ċĉ ĉ ) Ċĉ ĉ assertFalse ( Ċĉĉ ĉ Rectangle ( 1 . 0 , Ġ 2 . 0 , Ġ 3 . 0 , Ġ 4 . 0 ). contains ( Rectangle ( 1 . 0 , Ġ 2 . 0 , Ġ 4 . 0 , Ġ 4 . 0 )) Ċĉ ĉ ) Ċĉ ĉ assertTrue ( Ċĉĉ ĉ Rectangle ( 1 . 0 , Ġ 2 . 0 , Ġ 3 . 0 , Ġ 4 . 0 ). contains ( Rectangle ( 1 . 0 , Ġ 2 . 0 , Ġ 2 . 0 , Ġ 3 . 0 )) Ċĉ ĉ ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġintersect s Rectangle () Ġ{ Ċĉ ĉ assertTrue ( Ċĉĉ ĉ Rectangle ( 0 . 0 , Ġ 0 . 0 , Ġ 4 . 0 , Ġ 2 . 0 ). intersect s ( Rectangle ( 2 . 0 , Ġ 0 . 0 , Ġ 4 . 0 , Ġ 2 . 0 )) Ċĉ ĉ ) Ċĉ ĉ assertFalse ( Ċĉĉ ĉ Rectangle ( 0 . 0 , Ġ 0 . 0 , Ġ 4 . 0 , Ġ 2 . 0 ). intersect s ( Rectangle ( 4 . 0 , Ġ 0 . 0 , Ġ 4 . 0 , Ġ 2 . 0 )) Ċĉ ĉ ) Ċĉ ĉ assertFalse ( Ċĉĉ ĉ Rectangle ( 0 . 0 , Ġ 0 . 0 , Ġ 4 . 0 , Ġ 2 . 0 ). intersect s ( Rectangle ( 0 . 0 , Ġ 2 . 0 , Ġ 4 . 0 , Ġ 2 . 0 )) Ċĉ ĉ ) Ċĉ ĉ assertTrue ( Ċĉĉ ĉ Rectangle ( 0 . 0 , Ġ 0 . 0 , Ġ 4 . 0 , Ġ 2 . 0 ). intersect s ( Rectangle ( 0 . 0 , Ġ 1 . 0 , Ġ 4 . 0 , Ġ 2 . 0 )) Ċĉ ĉ ) Ċĉ ĉ assertTrue ( Ċĉĉ ĉ Rectangle ( 3 . 0 , Ġ 0 . 0 , Ġ 4 . 0 , Ġ 2 . 0 ). intersect s ( Rectangle ( 0 . 0 , Ġ 0 . 0 , Ġ 3 . 0 1 , Ġ 2 . 0 )) Ċĉ ĉ ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġintersect s Rectangle With Out () Ġ{ Ċĉ ĉ assertEquals ( Ċĉĉ ĉ Rectangle ( 2 . 0 , Ġ 0 . 0 , Ġ 2 . 0 , Ġ 2 . 0 ), Ċĉĉ ĉ Rectangle ( 0 . 0 , Ġ 0 . 0 , Ġ 4 . 0 , Ġ 2 . 0 ). intersection ( Rectangle ( 2 . 0 , Ġ 0 . 0 , Ġ 4 . 0 , Ġ 2 . 0 )) Ċĉ ĉ ) Ċĉ ĉ assertEquals ( Ċĉĉ ĉ Rectangle ( 0 . 0 , Ġ 1 . 0 , Ġ 4 . 0 , Ġ 1 . 0 ), Ċĉĉ ĉ Rectangle ( 0 . 0 , Ġ 0 . 0 , Ġ 4 . 0 , Ġ 2 . 0 ). intersection ( Rectangle ( 0 . 0 , Ġ 1 . 0 , Ġ 4 . 0 , Ġ 2 . 0 )) Ċĉ ĉ ) Ċĉ ĉ assertEquals ( Ċĉĉ ĉ Rectangle ( 3 . 0 , Ġ 0 . 0 , Ġ 1 . 0 , Ġ 2 . 0 ), Ċĉĉ ĉ Rectangle ( 3 . 0 , Ġ 0 . 0 , Ġ 4 . 0 , Ġ 2 . 0 ). intersection ( Rectangle ( 0 . 0 , Ġ 0 . 0 , Ġ 4 . 0 , Ġ 2 . 0 )) Ċĉ ĉ ) Ċĉ ĉ assertEquals ( Ċĉĉ ĉ Rectangle ( 3 . 0 , Ġ 3 . 0 , Ġ 1 . 0 , Ġ 1 . 0 ), Ċĉĉ ĉ Rectangle ( 3 . 0 , Ġ 3 . 0 , Ġ 4 . 0 , Ġ 2 . 0 ). intersection ( Rectangle ( 0 . 0 , Ġ 0 . 0 , Ġ 4 . 0 , Ġ 4 . 0 )) Ċĉ ĉ ) Ċ ĉ } Ċ Ċ } Ċ Ċ @ Serializable Ċ private Ġdata Ġclass ĠFoo 6 4 8 ( val Ġrect : ĠRectangle )