/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠRed ĠHat , ĠInc . Ġand / or Ġits Ġaffiliates . Ċ Ġ* Ċ Ġ* Ġ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 Ġorg . acme . kotlin . school time tab ling . rest Ċ Ċ import Ġio . quarkus . test . junit . Qu ark us Test Ċ import Ġorg . acme . kotlin . school time tab ling . domain . Time Table Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . Timeout Ċ import Ġorg . opt apl anner . core . api . solver . Solver Status Ċ import Ġjavax . inject . Inject ĊĊ Ċ @ Qu ark us Test Ċ class ĠTime Table Resource Test Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġtime Table Resource : ĠTime Table Resource ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Timeout ( 6 0 0 _ 0 0 0 ) ĊĠĠĠ Ġ@ Throws ( InterruptedException :: class ) ĊĠĠĠ Ġfun Ġsolve Demo Data Until Fe asible () Ġ{ ĊĠĠĠĠĠĠĠ Ġtime Table Resource . solve () ĊĠĠĠĠĠĠĠ Ġvar Ġtime Table : ĠTime Table Ġ= Ġtime Table Resource . getTime Table () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( time Table . solver Status Ġ!= ĠSolver Status . NOT _ SOL V ING ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠQuick Ġpolling Ġ( not Ġa ĠTest ĠThread ĠSleep Ġanti - pattern ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTest Ġis Ġstill Ġfast Ġon Ġfast Ġmachines Ġand Ġdoesn 't Ġrandomly Ġfail Ġon Ġslow Ġmachines . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 2 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Table Ġ= Ġtime Table Resource . getTime Table () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( time Table . lesson List . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġfor Ġ( lesson Ġin Ġtime Table . lesson List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertNotNull ( lesson . times lot ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssertions . assertNotNull ( lesson . room ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( time Table . score !!. is Fe asible ) ĊĠĠĠ Ġ} ĊĠĠĠĠ Ċ } Ċ