/** Ċ Ġ* ĠCopyright Ġ 2 0 1 6 Ġ- Ġ 2 0 2 2 ĠV y ache sl av ĠL uk ian ov Ġ( https :// github . com / pen em ue ) Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* Ġhttps :// 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 . github . pen em ue . ke ap Ċ Ċ import Ġorg . junit . Assert .* Ċ import Ġorg . junit . Test Ċ import Ġjava . io .* Ċ import Ġjava . util .* Ċ Ċ const Ġval ĠSIZE Ġ= Ġ 1 0 0 0 Ċ Ċ /** Ċ Ġ* ĠPriority Queue Ġtests Ġadapted Ġfrom ĠD ou g ĠL ea 's Ġtests Ġfor Ġ[ java . util . Priority Queue ]: Ċ Ġ* Ġhttps :// svn . apache . org / repos / as f / har mony / standard / class lib / trunk / modules / concurrent / src / test / java / Priority Queue Test . java . Ċ Ġ*/ Ċ class ĠPriority Queue Tests Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġqueue Ġof Ġgiven Ġsize Ġcontaining Ġconsecutive ĊĠĠĠĠ Ġ* ĠIn te gers Ġ 0 Ġ... Ġn . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġpopulated Queue ( n : ĠInt ): ĠPriority Queue < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= ĠPriority Queue < Int >( n ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( q . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġn Ġ- Ġ 1 Ġdown To Ġ 0 Ġstep Ġ 2 ) ĠassertTrue ( q . offer ( i )) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġn Ġ% Ġ 2 Ġuntil Ġn Ġstep Ġ 2 ) ĠassertTrue ( q . offer ( i )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( q . isEmpty ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( n , Ġq . size ) ĊĠĠĠĠĠĠĠ Ġreturn Ġq ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġnew Ġqueue Ġcreated Ġby Ġdefault Ġconstructor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Constructor 0 () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , ĠPriority Queue < Int >(). size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġnew Ġqueue Ġhas Ġun bounded Ġcapacity ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Constructor 1 () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , ĠPriority Queue < Int >( SIZE ). size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructor Ġthrows ĠI AE Ġif Ġ Ġcapacity Ġargument Ġnon positive ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Constructor 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPriority Queue < Int >( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( success : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitial izing Ġfrom ĠCollection Ġof Ġnull Ġelements Ġthrows ĠN PE ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Constructor 4 () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġints Ġ= ĠarrayOf Null s < Int >( SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPriority Queue ( Arrays . asList < Int >(* ints )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( success : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitial izing Ġfrom ĠCollection Ġwith Ġsome Ġnull Ġelements Ġthrows ĠN PE ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Constructor 5 () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġints Ġ= ĠarrayOf Null s < Int >( SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠSIZE Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġints [ i ] Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPriority Queue ( Arrays . asList < Int >(* ints )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( success : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠQueue Ġcontains Ġall Ġelements Ġof Ġcollection Ġused Ġto Ġinitialize ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Constructor 6 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġints Ġ= ĠarrayOf Null s < Int >( SIZE ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġints [ i ] Ġ= Ġi ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= ĠPriority Queue ( Arrays . asList < Int >(* ints )) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ints [ i ], Ġq . poll ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġcomparator Ġused Ġin Ġconstructor Ġis Ġused ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Constructor 7 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcmp Ġ= ĠMy Reverse Comparator () ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= ĠPriority Queue ( SIZE , Ġcmp ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( cmp , Ġq . comparator ()) ĊĠĠĠĠĠĠĠ Ġval Ġints Ġ= ĠarrayOf Null s < Int >( SIZE ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġints [ i ] Ġ= Ġi ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġq . addAll ( Arrays . asList < Int >(* ints )) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin ĠSIZE Ġ- Ġ 1 Ġdown To Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ints [ i ], Ġq . poll ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠisEmpty Ġis Ġtrue Ġbefore Ġadd , Ġfalse Ġafter ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Empty () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= ĠPriority Queue < Int >( 2 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( q . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġq . add ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( q . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġq . add ( 2 ) ĊĠĠĠĠĠĠĠ Ġq . remove () ĊĠĠĠĠĠĠĠ Ġq . remove () ĊĠĠĠĠĠĠĠ ĠassertTrue ( q . isEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġsize Ġchanges Ġwhen Ġelements Ġadded Ġand Ġremoved ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Size () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġpopulated Queue ( SIZE ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( SIZE Ġ- Ġi , Ġq . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq . remove () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( i , Ġq . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq . add ( i ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOffer Ġof Ġcomp arable Ġelement Ġsucceeds ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Offer () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= ĠPriority Queue < Int >( 1 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( q . offer ( 0 )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( q . offer ( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOffer Ġof Ġnon - Comparable Ġthrows ĠC CE ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Offer Non Comparable () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġq Ġ= ĠPriority Queue < Any >( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq . offer ( Any ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq . offer ( Any ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq . offer ( Any ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( success : ĠClass CastException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġadd Ġof Ġcomp arable Ġsucceeds ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Add () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= ĠPriority Queue < Int >( SIZE ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( i , Ġq . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( q . add ( i )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġadd All Ġof Ġa Ġcollection Ġwith Ġnull Ġelements Ġthrows ĠN PE ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Add All 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġq Ġ= ĠPriority Queue < Int >( SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġints Ġ= ĠarrayOf Null s < Int >( SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq . addAll ( Arrays . asList < Int >(* ints )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( success : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġadd All Ġof Ġa Ġcollection Ġwith Ġany Ġnull Ġelements Ġthrows ĠN PE Ġafter ĊĠĠĠĠ Ġ* Ġpossibly Ġadding Ġsome Ġelements ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Add All 3 () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġq Ġ= ĠPriority Queue < Int >( SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġints Ġ= ĠarrayOf Null s < Int >( SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠSIZE Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġints [ i ] Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq . addAll ( Arrays . asList < Int >(* ints )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( success : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠQueue Ġcontains Ġall Ġelements Ġof Ġsuccessful Ġadd All ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Add All 5 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġempty Ġ= ĠarrayOf Null s < Int >( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġints Ġ= ĠarrayOf Null s < Int >( SIZE ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġints [ i ] Ġ= ĠSIZE Ġ- Ġ 1 Ġ- Ġi ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= ĠPriority Queue < Int >( SIZE ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( q . addAll ( Arrays . asList < Int >(* empty ))) ĊĠĠĠĠĠĠĠ ĠassertTrue ( q . addAll ( Arrays . asList < Int >(* ints ))) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( i , Ġq . poll ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġpoll Ġsucceeds Ġunless Ġempty ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Poll () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġpopulated Queue ( SIZE ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( i , Ġ( q . poll () Ġas ĠInt ). toInt ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertNull ( q . poll ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġpeek Ġreturns Ġnext Ġelement , Ġor Ġnull Ġif Ġempty ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Peek () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġpopulated Queue ( SIZE ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( i , Ġ( q . peek () Ġas ĠInt ). toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq . poll () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( q . peek () Ġ== Ġnull Ġ|| Ġi Ġ!= Ġ( q . peek () Ġas ĠInt ). toInt ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertNull ( q . peek ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġelement Ġreturns Ġnext Ġelement , Ġor Ġthrows ĠN SE E Ġif Ġempty ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Element () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġpopulated Queue ( SIZE ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( i , Ġ( q . element () Ġas ĠInt ). toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq . poll () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq . element () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( success : ĠNoSuch ElementException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġremove Ġremoves Ġnext Ġelement , Ġor Ġthrows ĠN SE E Ġif Ġempty ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Remove () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġpopulated Queue ( SIZE ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( i , Ġ( q . remove () Ġas ĠInt ). toInt ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq . remove () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( success : ĠNoSuch ElementException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Remove 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġpopulated Queue ( SIZE ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin ĠSIZE Ġ- Ġ 1 Ġdown To Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( q . remove ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( i , Ġq . size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq . remove () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( success : ĠNoSuch ElementException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġremove ( x ) Ġremoves Ġx Ġand Ġreturns Ġtrue Ġif Ġpresent ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Remove Element () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġpopulated Queue ( SIZE ) ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( q . remove ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ+= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( q . remove ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( q . remove ( i Ġ+ Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ+= Ġ 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( q . isEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġcontains ( x ) Ġreports Ġtrue Ġwhen Ġelements Ġadded Ġbut Ġnot Ġyet Ġremoved ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Contains () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġpopulated Queue ( SIZE ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( q . contains ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq . poll () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( q . contains ( i )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġclear Ġremoves Ġall Ġelements ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Clear () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġpopulated Queue ( SIZE ) ĊĠĠĠĠĠĠĠ Ġq . clear () ĊĠĠĠĠĠĠĠ ĠassertTrue ( q . isEmpty ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġq . size ) ĊĠĠĠĠĠĠĠ Ġq . add ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( q . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġq . clear () ĊĠĠĠĠĠĠĠ ĠassertTrue ( q . isEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġcontains All ( c ) Ġis Ġtrue Ġwhen Ġc Ġcontains Ġa Ġsubset Ġof Ġelements ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Contains All () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġpopulated Queue ( SIZE ) ĊĠĠĠĠĠĠĠ Ġval Ġp Ġ= ĠPriority Queue < Int >( SIZE ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( q . contains All ( p )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( p . contains All ( q )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp . add ( i ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( p . contains All ( q )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġretain All ( c ) Ġret ains Ġonly Ġthose Ġelements Ġof Ġc Ġand Ġreports Ġtrue Ġif Ġchanged ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Ret ain All () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġpopulated Queue ( SIZE ) ĊĠĠĠĠĠĠĠ Ġval Ġp Ġ= Ġpopulated Queue ( SIZE ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchanged Ġ= Ġq . retain All ( p ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( changed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( changed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( q . contains All ( p )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( SIZE Ġ- Ġi , Ġq . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp . remove () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġremove All ( c ) Ġremoves Ġonly Ġthose Ġelements Ġof Ġc Ġand Ġreports Ġtrue Ġif Ġchanged ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest RemoveAll () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 Ġuntil ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġpopulated Queue ( SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Ġ= Ġpopulated Queue ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( q . removeAll ( p )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( SIZE Ġ- Ġi , Ġq . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil Ġi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( q . contains ( p . remove ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġto Array Ġcontains Ġall Ġelements ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest ToArray () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġpopulated Queue ( SIZE ) ĊĠĠĠĠĠĠĠ Ġval Ġo Ġ= Ġq . to Typed Array () ĊĠĠĠĠĠĠĠ ĠArrays . sort ( o ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġo . indices ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( o [ i ], Ġq . poll ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġto Array ( a ) Ġcontains Ġall Ġelements ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest ToArray 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġpopulated Queue ( SIZE ) ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" VARIABLE _ WITH _ RED UND ANT _ INITIAL IZER ") ĊĠĠĠĠĠĠĠ Ġvar Ġints Ġ= ĠarrayOf Null s < Int >( SIZE ) ĊĠĠĠĠĠĠĠ Ġints Ġ= Ġq . to Typed Array () ĊĠĠĠĠĠĠĠ ĠArrays . sort ( ints ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġints . indices ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ints [ i ], Ġq . poll ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġiterator Ġiter ates Ġthrough Ġall Ġelements ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Iterator () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġpopulated Queue ( SIZE ) ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġit Ġ= Ġq . iterator () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( it . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( q . contains ( it . next ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ i ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( i , ĠSIZE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġiterator . remove Ġremoves Ġcurrent Ġelement ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Iterator Remove () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= ĠPriority Queue < Int >( 3 ) ĊĠĠĠĠĠĠĠ Ġq . add ( 1 ) ĊĠĠĠĠĠĠĠ Ġq . add ( 2 ) ĊĠĠĠĠĠĠĠ Ġq . add ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġit : ĠMutable Iterator < *> Ġ= Ġq . iterator () ĊĠĠĠĠĠĠĠ Ġit . next () ĊĠĠĠĠĠĠĠ Ġit . remove () ĊĊĠĠĠĠĠĠĠ Ġit Ġ= Ġq . iterator () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġit . next ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġit . next ()) ĊĠĠĠĠĠĠĠ ĠassertFalse ( it . hasNext ()) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠtoString Ġcontains Ġto Strings Ġof Ġelements ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest ToString () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġpopulated Queue ( SIZE ) ĊĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġq . toString () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠSIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( s . indexOf ( i . toString ()) Ġ>= Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġdeserialized Ġserialized Ġqueue Ġhas Ġsame Ġelements ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Serialization () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġpopulated Queue ( SIZE ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbout Ġ= ĠByteArrayOutputStream ( 1 0 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= ĠObject OutputStream ( Buffered OutputStream ( b out )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . write Object ( q ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . close () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbin Ġ= ĠByteArrayInputStream ( b out . toByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠObject InputStream ( Buffered InputStream ( bin )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġinput . read Object () Ġas ĠPriority Queue < *> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( q . size , Ġr . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(! q . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( q . remove (), Ġr . remove ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshould Throw () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġclass ĠMy Reverse Comparator Ġ: ĠComparator < Int > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcompare ( x : ĠInt , Ġy : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x Ġ< Ġy ) Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x Ġ> Ġy ) Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ