module tests.calculator.feature; import tests.calculator.steps; import tests.calculator.impl; import cucumber; import cucumber.reflection; import unit_threaded; import std.math; void testCalculatorSteps() { const givenStep = " Given a calculator"; writelnUt("Checking the step \"", givenStep, "\" is not null"); shouldBeTrue(cast(bool)findMatch!"tests.calculator.steps"(givenStep)); const whenStep = " When the calculator adds up \"3\", \"4\" and \"5\""; writelnUt(`Calling the step "`, whenStep, `"`); findMatch!"tests.calculator.steps"(whenStep)(); } void testCalculator() { const results = runFeature!"tests.calculator.steps"(["Feature: A feature", " Scenario: scenario", " Given a calculator", " When the calculator adds up \"3\", \"4\" and \"5\"", " Then the calculator returns \"12\""]); shouldEqual(calculator.result, 12); shouldEqual(results.toString, "1 scenario (1 passed)"); } void testCalculator2() { const results = runFeature!"tests.calculator.steps"(["Feature: A feature", " Scenario: scenario", " Given a calculator", " When the calculator adds up 1 and 2", " And the calculator adds up 3 and 0.14159265", " Then the calculator returns PI", " But the calculator does not return 3"]); writelnUt("Calculator result: ", calculator.result); shouldBeFalse(closeEnough(calculator.result, 3)); }