import Ġorg . junit . Assert Ċ import Ġorg . junit . Test Ċ Ċ interface ĠStrategy Ġ{ ĊĊĠĠĠ Ġfun Ġcalculate ( a : ĠInt , Ġb : ĠInt ): ĠInt Ċ Ċ } Ċ Ċ class ĠAdd Strategy Ġ: ĠStrategy Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcalculate ( a : ĠInt , Ġb : ĠInt ): ĠInt Ġ= Ġa Ġ+ Ġb Ċ Ċ } Ċ Ċ class ĠSubtract Strategy Ġ: ĠStrategy Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcalculate ( a : ĠInt , Ġb : ĠInt ): ĠInt Ġ= Ġa Ġ- Ġb Ċ Ċ } Ċ Ċ class ĠCalculator ( private Ġval Ġstrategy : ĠStrategy ) Ġ{ ĊĊĠĠĠ Ġfun Ġcalculate ( a : ĠInt , Ġb : ĠInt ): ĠInt Ġ= Ġstrategy . calculate ( a , Ġb ) Ċ Ċ } Ċ Ċ class ĠTest Strategy Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Strategy () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadd Ġ= ĠCalculator ( Add Strategy ()) ĊĠĠĠĠĠĠĠ Ġval Ġsubtract Ġ= ĠCalculator ( Subtract Strategy ()) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( add . calculate ( 1 , Ġ 2 ) Ġ== Ġ 3 ) ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( subtract . calculate ( 1 , Ġ 2 ) Ġ== Ġ- 1 ) ĊĠĠĠ Ġ} Ċ Ċ }