package Ġorg . spe k framework . spe k 2 . integration Ċ Ċ import Ġorg . spe k framework . spe k 2 . Spe k Ċ import Ġorg . spe k framework . spe k 2 . style . specification . Suite Ċ import Ġorg . spe k framework . spe k 2 . style . specification . describe Ċ import Ġkotlin . math . pow Ċ import Ġkotlin . test . assertEquals Ċ Ċ open Ġclass ĠCalculator Ġ{ ĊĠĠĠ Ġfun Ġadd ( x : ĠInt , Ġy : ĠInt ) Ġ= Ġx Ġ+ Ġy Ċ } Ċ Ċ class ĠAdvanced Calculator : ĠCalculator () Ġ{ ĊĠĠĠ Ġfun Ġpow ( x : ĠInt , Ġy : ĠInt ) Ġ= Ġx . toDouble (). pow ( y ). toInt () Ċ } ĊĊ Ċ object ĠCalculator Specs : ĠSpe k ({ ĊĠĠĠ Ġfun ĠSuite . be haves Like AC al cul ator () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalculator Ġby Ġmemoized < Calculator >() ĊĊĠĠĠĠĠĠĠ Ġit (" 1 Ġ+ Ġ 2 Ġ= Ġ 3 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġcalculator . add ( 1 , Ġ 2 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" Calculator ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalculator Ġby Ġmemoized Ġ{ ĠCalculator () Ġ} ĊĊĠĠĠĠĠĠĠ Ġbehaves Like AC al cul ator () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" Advanced Calculator ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalculator Ġby Ġmemoized Ġ{ ĠAdvanced Calculator () Ġ} ĊĊĠĠĠĠĠĠĠ Ġbehaves Like AC al cul ator () ĊĊĠĠĠĠĠĠĠ Ġit (" 2 Ġ^ Ġ 3 Ġ= Ġ 8 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 8 , Ġcalculator . pow ( 2 , Ġ 3 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ