testeranto
Version:
the AI powered BDD test framework for typescript projects
214 lines (204 loc) • 6.85 kB
text/typescript
// import { ITestSpecification } from "testeranto/src/CoreTypes";
import { ITestSpecification } from "../src/CoreTypes";
import { I, O } from "./Calculator.test.types";
export const specification: ITestSpecification<I, O> = (
Suite,
Given,
When,
Then
) => {
return [
Suite.Default("Testing Calculator operations", {
// Basic number input
testEmptyDisplay: Given.Default(
["pressing nothing, the display is empty"],
[],
[]
),
testSingleDigit: Given.Default(
["entering a number puts it on the display"],
[],
[]
),
testMultipleDigits: Given.Default(
["entering multiple digits concatenates them"],
[],
[]
),
testLargeNumber: Given.Default(
["entering a large number works correctly"],
[],
[]
),
// Basic operations
testAdditionExpression: Given.Default(
["addition expression is displayed correctly"],
[],
[]
),
testIncompleteAddition: Given.Default(
["incomplete addition expression is displayed correctly"],
[],
[]
),
testSubtractionExpression: Given.Default(
["subtraction expression is displayed correctly"],
[],
[]
),
testMultiplicationExpression: Given.Default(
["multiplication expression is displayed correctly"],
[],
[]
),
testDivisionExpression: Given.Default(
["division expression is displayed correctly"],
[],
[]
),
// Complex expressions
testMixedOperations: Given.Default(
["mixed operations are displayed correctly"],
[],
[]
),
testLongExpression: Given.Default(
["long complex expression is displayed correctly"],
[
When.press("1"), When.press("+"), When.press("2"),
When.press("*"), When.press("3"), When.press("-"),
When.press("4"), When.press("/"), When.press("5")
],
[]
),
// Calculation tests
testSimpleAddition: Given.Default(
["simple addition calculation"],
[
When.press("2"), When.press("3"), When.press("+"),
When.press("4"), When.press("5"), When.enter()
],
[]
),
testSimpleSubtraction: Given.Default(
["simple subtraction calculation"],
[
When.press("9"), When.press("5"), When.press("-"),
When.press("3"), When.press("2"), When.enter()
],
[]
),
testSimpleMultiplication: Given.Default(
["simple multiplication calculation"],
[
When.press("6"), When.press("*"), When.press("7"),
When.enter()
],
[]
),
testSimpleDivision: Given.Default(
["simple division calculation"],
[
When.press("8"), When.press("4"), When.press("/"),
When.press("2"), When.enter()
],
[]
),
// Edge cases
testClearOperation: Given.Default(
["clear operation resets the display"],
[
When.press("1"), When.press("2"), When.press("3"),
When.press("C"), When.press("4")
],
[]
),
testStartingWithOperator: Given.Default(
["starting with operator should work"],
[],
[]
),
testMultipleOperators: Given.Default(
["multiple operators in sequence"],
[],
[]
),
// Decimal numbers
testDecimalInput: Given.Default(
["decimal number input"],
[],
[]
),
testDecimalCalculation: Given.Default(
["decimal calculation"],
[
When.press("3"), When.press("."), When.press("1"), When.press("+"),
When.press("1"), When.press("."), When.press("8"), When.press("6"),
When.enter()
],
[]
),
// Complex calculations
testOrderOfOperations: Given.Default(
["order of operations is respected"],
[
When.press("2"), When.press("+"), When.press("3"),
When.press("*"), When.press("4"), When.enter()
],
[]
),
testParenthesesExpression: Given.Default(
["parentheses in expression"],
[
When.press("("), When.press("2"), When.press("+"),
When.press("3"), When.press(")"), When.press("*"),
When.press("4"), When.enter()
],
[]
),
// Error cases
testDivisionByZero: Given.Default(
["division by zero shows error"],
[
When.press("5"), When.press("/"), When.press("0"),
When.enter()
],
[]
),
testInvalidExpression: Given.Default(
["invalid expression shows error"],
[
When.press("2"), When.press("+"), When.press("+"),
When.press("3"), When.enter()
],
[]
),
// Memory functions
testMemoryStoreRecall: Given.Default(
["memory store and recall"],
[
When.press("1"), When.press("2"), When.press("3"),
When.press("MS"), When.press("C"), When.press("MR")
],
[]
),
testMemoryClear: Given.Default(
["memory clear"],
[
When.press("4"), When.press("5"), When.press("6"),
When.press("MS"), When.press("MC"), When.press("MR")
],
[]
),
testMemoryAddition: Given.Default(
["memory addition"],
[
When.press("1"), When.press("0"), When.press("M+"),
When.press("2"), When.press("0"), When.press("M+"),
When.press("MR")
],
[]
)
}),
];
};