package Ġfr . o 8 0 Ċ Ċ import Ġorg . junit . jupiter . api . DisplayName Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertTrue ĊĊ Ċ class ĠQuad Tree Impl Test Ġ{ ĊĠĠĠ Ġ// ĠTODO ĠCheck Ġwe Ġcan 't Ġadd Ġoutside Ġof ĠQuad Tree ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ DisplayName (" A ĠQuad Tree Ġshould Ġnot Ġadd Ġa Ġpoint Ġoutside Ġof Ġits Ġrange ") ĊĠĠĠ Ġfun Ġshould Not Add Point () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġquad Tree Ġ= ĠQuad Tree Impl ( 4 , ĠRectangle ( Point ( 0 f , Ġ 0 f ), ĠPoint ( 1 0 0 f , Ġ 1 0 0 f ))) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point (- 1 f , Ġ 1 2 f )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġquad Tree . points . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ DisplayName (" A ĠQuad Tree Ġshould Ġadd Ġa Ġpoint ") ĊĠĠĠ Ġfun Ġshould Add Point () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġquad Tree Ġ= ĠQuad Tree Impl ( 4 , ĠRectangle ( Point ( 0 f , Ġ 0 f ), ĠPoint ( 1 0 0 f , Ġ 1 0 0 f ))) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 1 3 f , Ġ 1 2 f )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġquad Tree . points . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Point ( 1 3 f , Ġ 1 2 f ), Ġquad Tree . points [ 0 ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ DisplayName (" A ĠQuad Tree Ġshould Ġadd Ġmore Ġpoints Ġthan Ġits Ġsize ") ĊĠĠĠ Ġfun Ġshould Add Too Many Points () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġquad Tree Ġ= ĠQuad Tree Impl ( 4 , ĠRectangle ( Point ( 0 f , Ġ 0 f ), ĠPoint ( 1 0 0 f , Ġ 1 0 0 f ))) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 1 3 f , Ġ 1 2 f )) ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 1 4 f , Ġ 1 4 f )) ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 1 5 f , Ġ 1 5 f )) ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 1 6 f , Ġ 1 6 f )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠN W ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 1 f , Ġ 4 9 . 5 f )) ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 2 9 f , Ġ 1 3 . 0 1 f )) ĊĠĠĠĠĠĠĠ Ġ// ĠSW ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 2 . 3 f , Ġ 5 1 . 8 f )) ĊĠĠĠĠĠĠĠ Ġ// ĠNE ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 5 1 . 3 f , Ġ 1 2 . 0 1 f )) ĊĠĠĠĠĠĠĠ Ġ// ĠSE ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 5 5 f , Ġ 8 7 f )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġquad Tree . points . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġquad Tree . north West ?. points ?. size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġquad Tree . south West ?. points ?. size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġquad Tree . north East ?. points ?. size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġquad Tree . south East ?. points ?. size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ DisplayName (" Intersect Ġwith Ġwith Ġsmall ĠQuad Tree ") ĊĠĠĠ Ġfun Ġshould Intersect Small Quad Tree () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġquad Tree Ġ= ĠQuad Tree Impl ( 4 , ĠRectangle ( 0 f , Ġ 0 f , Ġ 2 4 f , Ġ 3 7 f )) ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 1 3 f , Ġ 1 2 f )) ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 2 3 f , Ġ 3 5 f )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġintersection Ġ= Ġquad Tree . intersection With ( Rectangle ( 1 0 f , Ġ 1 1 f , Ġ 1 4 f , Ġ 2 7 f )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġintersection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Point ( 1 3 f , Ġ 1 2 f ), Ġintersection [ 0 ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ DisplayName (" Intersect Ġwith Ġwith Ġbig ĠQuad Tree ") ĊĠĠĠ Ġfun Ġshould Intersect Big Quad Tree () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġquad Tree Ġ= ĠQuad Tree Impl ( 4 , ĠRectangle ( 0 f , Ġ 0 f , Ġ 1 0 0 f , Ġ 1 0 0 f )) ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 5 0 f , Ġ 1 5 f )) ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 1 0 f , Ġ 5 0 f )) ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 4 4 f , Ġ 5 6 f )) ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 4 7 f , Ġ 4 7 f )) Ġ// ĠIn Ġthe Ġzone ĊĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 4 9 f , Ġ 4 9 f )) Ġ// ĠIn Ġthe Ġzone ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 4 9 f , Ġ 5 1 f )) Ġ// ĠIn Ġthe Ġzone ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 5 1 f , Ġ 5 1 f )) Ġ// ĠIn Ġthe Ġzone ĊĠĠĠĠĠĠĠ Ġquad Tree . add ( Point ( 5 1 f , Ġ 4 9 f )) Ġ// ĠIn Ġthe Ġzone ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġintersection Ġ= Ġquad Tree . intersection With ( Rectangle ( 4 5 f , Ġ 4 5 f , Ġ 5 5 f , Ġ 5 5 f )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġquad Tree . points . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 5 , Ġintersection . size ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( Point ( 4 7 f , Ġ 4 7 f ) Ġin Ġintersection ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( Point ( 4 9 f , Ġ 4 9 f ) Ġin Ġintersection ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( Point ( 4 9 f , Ġ 5 1 f ) Ġin Ġintersection ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( Point ( 5 1 f , Ġ 5 1 f ) Ġin Ġintersection ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( Point ( 5 1 f , Ġ 4 9 f ) Ġin Ġintersection ) ĊĠĠĠ Ġ} Ċ Ċ }