module tests.calculator.steps; import cucumber.keywords; import unit_threaded; import tests.calculator.impl; import std.conv; import std.math; import std.stdio; @Given(r"^a calculator$") void initCalculator() { calculator = Calculator(); } @When(r"^the calculator computes PI$") void calculatorComputesPi() { calculator.computePi(); } @Then(r"^the calculator returns PI$") void calculatorReturns() { debug writeln("returns pi"); shouldBeTrue(closeEnough(calculator.result, PI)); } @When(`^the calculator adds up "?([0-9.]+)"? and "?([0-9.]+)"?$`) void whenAddsUp(in double a, in double b) { debug writeln("adding ", a, " to ", b); calculator.add(a, b); } @And(r"^the calculator adds up ([0-9.]+) and ([0-9.]+)$") void andAddsUp(in double a, in double b) { debug writeln("andAddsUp adding up ", a, " to ", b); calculator.add(a, b); } @When(`the calculator adds up "([0-9.]+)", "([0-9.]+)" and "([0-9.]+)"`) void whenAdds3(in double a, in double b, in double c) { debug writeln("whenAdds3 adding up ", a, ", ", b, " to ", c); calculator.add(a, b, c); } @But(r"^the calculator does not return 3$") void butDoesNot() { shouldBeFalse(closeEnough(calculator.result, 3)); } @Then(`^the calculator returns "(.+)"`) void thenReturnsPi(in string a) { debug writeln("returns capture"); shouldBeTrue(closeEnough(calculator.result, a.to!double)); }