diff --git a/exercises/practice/forth/.meta/config.json b/exercises/practice/forth/.meta/config.json index 85016dbdc..65de8e284 100644 --- a/exercises/practice/forth/.meta/config.json +++ b/exercises/practice/forth/.meta/config.json @@ -6,6 +6,7 @@ "aadityakulkarni", "FridaTveit", "hgvanpariya", + "jagdish-15", "jmrunkle", "kytrinyx", "lemoncurry", diff --git a/exercises/practice/forth/.meta/tests.toml b/exercises/practice/forth/.meta/tests.toml index c9c1d6377..d1e146a1e 100644 --- a/exercises/practice/forth/.meta/tests.toml +++ b/exercises/practice/forth/.meta/tests.toml @@ -24,6 +24,9 @@ description = "addition -> errors if there is nothing on the stack" [06efb9a4-817a-435e-b509-06166993c1b8] description = "addition -> errors if there is only one value on the stack" +[1e07a098-c5fa-4c66-97b2-3c81205dbc2f] +description = "addition -> more than two values on the stack" + [09687c99-7bbc-44af-8526-e402f997ccbf] description = "subtraction -> can subtract two numbers" @@ -33,6 +36,9 @@ description = "subtraction -> errors if there is nothing on the stack" [b3cee1b2-9159-418a-b00d-a1bb3765c23b] description = "subtraction -> errors if there is only one value on the stack" +[2c8cc5ed-da97-4cb1-8b98-fa7b526644f4] +description = "subtraction -> more than two values on the stack" + [5df0ceb5-922e-401f-974d-8287427dbf21] description = "multiplication -> can multiply two numbers" @@ -42,6 +48,9 @@ description = "multiplication -> errors if there is nothing on the stack" [8ba4b432-9f94-41e0-8fae-3b3712bd51b3] description = "multiplication -> errors if there is only one value on the stack" +[5cd085b5-deb1-43cc-9c17-6b1c38bc9970] +description = "multiplication -> more than two values on the stack" + [e74c2204-b057-4cff-9aa9-31c7c97a93f5] description = "division -> can divide two numbers" @@ -57,12 +66,21 @@ description = "division -> errors if there is nothing on the stack" [d5547f43-c2ff-4d5c-9cb0-2a4f6684c20d] description = "division -> errors if there is only one value on the stack" +[f224f3e0-b6b6-4864-81de-9769ecefa03f] +description = "division -> more than two values on the stack" + [ee28d729-6692-4a30-b9be-0d830c52a68c] description = "combined arithmetic -> addition and subtraction" [40b197da-fa4b-4aca-a50b-f000d19422c1] description = "combined arithmetic -> multiplication and division" +[f749b540-53aa-458e-87ec-a70797eddbcb] +description = "combined arithmetic -> multiplication and addition" + +[c8e5a4c2-f9bf-4805-9a35-3c3314e4989a] +description = "combined arithmetic -> addition and multiplication" + [c5758235-6eef-4bf6-ab62-c878e50b9957] description = "dup -> copies a value on the stack" diff --git a/exercises/practice/forth/src/test/java/ForthEvaluatorTest.java b/exercises/practice/forth/src/test/java/ForthEvaluatorTest.java index 9a43e11bf..bd36657b3 100644 --- a/exercises/practice/forth/src/test/java/ForthEvaluatorTest.java +++ b/exercises/practice/forth/src/test/java/ForthEvaluatorTest.java @@ -48,6 +48,13 @@ public void testErrorIfAdditionAttemptedWithOneNumberOnTheStack() { .withMessage("Addition requires that the stack contain at least 2 values"); } + @Disabled("Remove to run test") + @Test + public void testAdditionForMoreThanTwoValuesOnTheStack() { + assertThat(forthEvaluator.evaluateProgram(Collections.singletonList("1 2 3 +"))) + .containsExactly(1, 5); + } + @Disabled("Remove to run test") @Test public void testTwoNumbersCanBeSubtracted() { @@ -72,6 +79,13 @@ public void testErrorIfSubtractionAttemptedWithOneNumberOnTheStack() { .withMessage("Subtraction requires that the stack contain at least 2 values"); } + @Disabled("Remove to run test") + @Test + public void testSubtractionForMoreThanTwoValuesOnTheStack() { + assertThat(forthEvaluator.evaluateProgram(Collections.singletonList("1 12 3 -"))) + .containsExactly(1, 9); + } + @Disabled("Remove to run test") @Test public void testTwoNumbersCanBeMultiplied() { @@ -94,6 +108,13 @@ public void testErrorIfMultiplicationAttemptedWithOneNumberOnTheStack() { .withMessage("Multiplication requires that the stack contain at least 2 values"); } + @Disabled("Remove to run test") + @Test + public void testMultiplicationForMoreThanTwoValuesOnTheStack() { + assertThat(forthEvaluator.evaluateProgram(Collections.singletonList("1 2 3 *"))) + .containsExactly(1, 6); + } + @Disabled("Remove to run test") @Test public void testTwoNumbersCanBeDivided() { @@ -130,6 +151,13 @@ public void testErrorIfDivisionAttemptedWithOneNumberOnTheStack() { .withMessage("Division requires that the stack contain at least 2 values"); } + @Disabled("Remove to run test") + @Test + public void testDivisionForMoreThanTwoValuesOnTheStack() { + assertThat(forthEvaluator.evaluateProgram(Collections.singletonList("1 12 3 /"))) + .containsExactly(1, 4); + } + @Disabled("Remove to run test") @Test public void testCombinedAdditionAndSubtraction() { @@ -142,6 +170,18 @@ public void testCombinedMultiplicationAndDivision() { assertThat(forthEvaluator.evaluateProgram(Collections.singletonList("2 4 * 3 /"))).containsExactly(2); } + @Disabled("Remove to run test") + @Test + public void testCombinedMultiplicationAndAddition() { + assertThat(forthEvaluator.evaluateProgram(Collections.singletonList("1 3 4 * +"))).containsExactly(13); + } + + @Disabled("Remove to run test") + @Test + public void testCombinedAdditionAndMultiplication() { + assertThat(forthEvaluator.evaluateProgram(Collections.singletonList("1 3 4 + *"))).containsExactly(7); + } + @Disabled("Remove to run test") @Test public void testDupCopiesAValueOnTheStack() {