package Ġedu . gate ch . cs 2 3 4 0 . space tr ader redux Ċ Ċ import Ġedu . gate ch . cs 2 3 4 0 . space tr ader redux . domain . entities . Trade able Ċ import Ġedu . gate ch . cs 2 3 4 0 . space tr ader redux . domain . entities . ship . Cargo Hold Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . fail Ċ import Ġorg . junit . Test Ċ import Ġkotlin . random . Random Ċ Ċ class ĠT an ay UnitTest Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġcargo Hold Ġ: ĠC argo Hold ĊĠĠĠ Ġprivate Ġval Ġhi Capacity Ġ= Ġ 1 0 0 0 ĊĠĠĠ Ġprivate Ġval Ġlo Capacity Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġtrade able Ġ: ĠTrade able ĊĠĠĠ Ġprivate Ġvar Ġhi Capacity Left Ġ= Ġhi Capacity ĊĠĠĠ Ġprivate Ġvar Ġlo Capacity Left Ġ= Ġlo Capacity ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcargo Hold Ġ= ĠC argo Hold ( hi Capacity ) ĊĠĠĠĠĠĠĠ Ġtrade able Ġ= ĠTrade able . values ()[ Random . nextInt ( Trade able . values (). size )] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Hi Add Full Cargo Hold () Ġ{ ĊĠĠĠĠĠĠĠ Ġcargo Hold . add Items ( trade able , Ġhi Capacity ) ĊĠĠĠĠĠĠĠ Ġhi Capacity Left Ġ-= Ġhi Capacity ĊĠĠĠĠĠĠĠ ĠassertEquals ( hi Capacity Left , Ġcargo Hold . capacity Left ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Lo Add Full Cargo Hold () Ġ{ ĊĠĠĠĠĠĠĠ Ġcargo Hold Ġ= ĠC argo Hold ( lo Capacity ) ĊĠĠĠĠĠĠĠ Ġcargo Hold . add Items ( trade able , Ġlo Capacity ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( lo Capacity Left , Ġcargo Hold . capacity Left ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected = IllegalStateException :: class ) ĊĠĠĠ Ġfun Ġtest Lo Add Overflow Cargo Hold () Ġ{ ĊĠĠĠĠĠĠĠ Ġcargo Hold Ġ= ĠC argo Hold ( lo Capacity ) ĊĠĠĠĠĠĠĠ Ġcargo Hold . add Items ( trade able , Ġlo Capacity Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġfail () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Hi Add No Items Cargo Hold () Ġ{ ĊĠĠĠĠĠĠĠ Ġcargo Hold . add Items ( trade able , Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( hi Capacity , Ġcargo Hold . capacity Left ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected = IllegalStateException :: class ) ĊĠĠĠ Ġfun Ġtest Hi Add Overflow Cargo Hold () Ġ{ ĊĠĠĠĠĠĠĠ Ġcargo Hold . add Items ( trade able , Ġhi Capacity Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġfail () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected = IllegalStateException :: class ) ĊĠĠĠ Ġfun Ġtest Hi Add Random Cargo Hold () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrandom Ġ= ĠRandom ĊĠĠĠĠĠĠĠ Ġwhile Ġ( hi Capacity Left Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurr Addition Ġ= Ġrandom . nextInt ( 1 , Ġhi Capacity / 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhi Capacity Left Ġ-= Ġcurr Addition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcargo Hold . add Items ( trade able , Ġcurr Addition ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( hi Capacity Left , Ġcargo Hold . capacity Left ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfail () ĊĠĠĠ Ġ} Ċ }