package Ġhr . un ip u . k sd toolkit Ċ Ċ import Ġhr . un ip u . k sd toolkit . entities .* Ċ import Ġhr . un ip u . k sd toolkit . integration . Euler Integration Ċ import Ġhr . un ip u . k sd toolkit . integration . Integration Ċ import Ġhr . un ip u . k sd toolkit . modules . Module Generic Compound De crease Ċ import Ġorg . hamcrest . Core Matchers .` is ` Ċ import Ġorg . hamcrest . Core Matchers . instance Of Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Assert . assertThat Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ /** Ċ Ġ* ĠUnit Ġtesting Ġall Ġentities : ĠModel , ĠConstant , ĠConverter , ĠFlow , ĠStock , ĠModule . Ċ Ġ* Ċ Ġ* Ġ@ author Ġ[ S ini Å¡ a ĠS ov il j ]( mailto : sin isa . so vil j @ un ip u . hr ) Ċ Ġ*/ Ċ class Ġ` 1 _ Entities Test ` Ġ{ ĊĠĠĠ Ġval Ġmodel : ĠModel ĊĠĠĠ Ġval ĠCONSTANT : ĠConstant ĊĠĠĠ Ġval Ġconverter : ĠConverter ĊĠĠĠ Ġval Ġflow : ĠFlow ĊĠĠĠ Ġval ĠStock : ĠStock ĊĠĠĠ Ġval ĠModule : ĠModule Generic Compound De crease ĊĊĊĠĠĠ Ġ// ĠPrepare Ġmodel Ġand Ġmodel Ġentities Ġfor Ġtesting . ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġmodel Ġ= ĠModel () ĊĊĠĠĠĠĠĠĠ Ġmodel . name Ġ= Ġ" Model _ name " ĊĠĠĠĠĠĠĠ Ġmodel . initial Time Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġmodel . final Time Ġ= Ġ 1 0 0 . 0 ĊĠĠĠĠĠĠĠ Ġmodel . time Step Ġ= Ġ 0 . 2 5 ĊĠĠĠĠĠĠĠ Ġmodel . integration Type Ġ= ĠE uler Integration () ĊĊĠĠĠĠĠĠĠ ĠCONSTANT Ġ= Ġmodel . constant (" CONSTANT _ NAME ") ĊĠĠĠĠĠĠĠ ĠCONSTANT . equation Ġ= Ġ{ Ġ 1 . 0 Ġ} ĊĊĠĠĠĠĠĠĠ Ġconverter Ġ= Ġmodel . converter (" converter _ name ") ĊĠĠĠĠĠĠĠ Ġconverter . equation Ġ= Ġ{ Ġ 2 Ġ* Ġ 1 . 0 Ġ} ĊĊĠĠĠĠĠĠĠ Ġflow Ġ= Ġmodel . flow (" flow _ name ") ĊĠĠĠĠĠĠĠ Ġflow . equation Ġ= Ġ{ Ġ 1 Ġ+ Ġ 1 . 0 Ġ} ĊĊĠĠĠĠĠĠĠ ĠStock Ġ= Ġmodel . stock (" Stock _ name ") ĊĠĠĠĠĠĠĠ ĠStock . initial Value Ġ= Ġ{ Ġ 0 . 0 Ġ} ĊĠĠĠĠĠĠĠ ĠStock . equation Ġ= Ġ{ Ġ- 1 . 0 Ġ} ĊĊĠĠĠĠĠĠĠ ĠModule Ġ= Ġmodel . create Module ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Module ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" hr . un ip u . k sd toolkit . modules . Module Generic Compound De crease " ĊĠĠĠĠĠĠĠ Ġ) Ġas ĠModule Generic Compound De crease ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test Ġfun Ġconstant Test () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠTesting Ġthat Ġconstant Ġis Ġcreated . ĊĠĠĠĠĠĠĠ ĠassertThat ( CONSTANT . name , Ġ` is ` (" CONSTANT _ NAME ")) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTesting Ġthat Ġconstant Ġvalue Ġis Ġset . ĊĠĠĠĠĠĠĠ ĠassertThat ( CONSTANT . equation ?. invoke () Ġas ĠDouble , Ġ` is `( 1 . 0 )) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test Ġfun Ġconverter Test () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠTesting Ġthat Ġconverter Ġis Ġcreated . ĊĠĠĠĠĠĠĠ ĠassertThat ( converter . name , Ġ` is ` (" converter _ name ")) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTesting Ġthat Ġconverter Ġequation Ġworks . ĊĠĠĠĠĠĠĠ ĠassertThat ( converter . equation ?. invoke () Ġas ĠDouble , Ġ` is `( 2 . 0 )) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test Ġfun Ġflow Test () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠTesting Ġthat Ġflow Ġis Ġcreated . ĊĠĠĠĠĠĠĠ ĠassertThat ( flow . name , Ġ` is ` (" flow _ name ")) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTesting Ġthat Ġflow Ġequation Ġworks . ĊĠĠĠĠĠĠĠ ĠassertThat ( flow . equation ?. invoke () Ġas ĠDouble , Ġ` is `( 2 . 0 )) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠAbstract Ġmethod ĠModel Entity Ġis Ġtested Ġusing Ġimplementation Ġof Ġconcrete Ġclasses . ĊĠĠĠ Ġ/* ĊĠĠĠ Ġ@ Test Ġfun Ġmodel Entity Test () Ġ{ Ġ} ĊĠĠĠĠ Ġ*/ ĊĊĊĠĠĠ Ġ@ Test Ġfun Ġstock Test () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠTesting Ġthat ĠStock Ġis Ġcreated . ĊĠĠĠĠĠĠĠ ĠassertThat ( Stock . name , Ġ` is ` (" Stock _ name ")) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTesting ĠStock Ġinitial Ġvalue Ġworks . ĊĠĠĠĠĠĠĠ ĠassertThat ( Stock . initial Value ?. invoke () Ġas ĠDouble , Ġ` is `( 0 . 0 )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTesting ĠStock Ġequation Ġworks . ĊĠĠĠĠĠĠĠ ĠassertThat ( Stock . equation ?. invoke () Ġas ĠDouble , Ġ` is ` (- 1 . 0 )) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test Ġfun Ġmodule Test () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠTesting Ġthat ĠModule Ġis Ġcreated . ĊĠĠĠĠĠĠĠ ĠassertThat ( Module . name , Ġ` is ` (" Module ")) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġthat Ġall ĠModule Ġentities Ġcan Ġbe Ġaccessed . ĊĠĠĠĠĠĠĠ ĠassertThat ( Module . entities . keys , Ġ` is `( set Of (" CONSTANT ", Ġ" INITIAL _ STO CK ", Ġ" Stock ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" in flow ", Ġ" out flow ", Ġ" converter " Ġ))) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTesting Ġequation Ġin ĠModule Ġworks . ĊĠĠĠĠĠĠĠ ĠassertThat ( Module . INITIAL _ STO CK . equation ?. invoke () Ġas ĠDouble , Ġ` is `( 1 0 0 . 0 )) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test Ġfun Ġmodel Test () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠTesting Ġthat Ġmodel Ġis Ġcreated . ĊĠĠĠĠĠĠĠ ĠassertThat ( model . name , Ġ` is ` (" Model _ name ")) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTesting Ġthat Ġsetup Ġworks Ġcorrectly . ĊĠĠĠĠĠĠĠ ĠassertThat ( model . initial Time . toDouble (), Ġ` is `( 0 . 0 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( model . final Time . toDouble (), Ġ` is `( 1 0 0 . 0 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( model . time Step . toDouble (), Ġ` is `( 0 . 2 5 )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTesting Ġthat Ġsetting Ġintegration Ġtype Ġworks Ġcorrectly . ĊĠĠĠĠĠĠĠ ĠassertThat ( model . integration Type , Ġinstance Of ( Euler Integration :: class . java )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTesting Ġthat Ġall Ġentities Ġare Ġin Ġthe Ġmodel . ĊĠĠĠĠĠĠĠ ĠassertThat ( model . entities , Ġ` is `( hash Map Of (" CONSTANT _ NAME " Ġto ĠCONSTANT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" converter _ name " Ġto Ġconverter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" flow _ name " Ġto Ġflow , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Stock _ name " Ġto ĠStock ))) ĊĠĠĠ Ġ} Ċ Ċ }