From 7ba92be969e429a2dba28759f8b6e65ecd3deaa2 Mon Sep 17 00:00:00 2001 From: Kah Goh Date: Mon, 30 Mar 2026 14:58:37 +0800 Subject: [PATCH] Update satellites This updates satellites with new tests from the problem specs. --- exercises/practice/satellite/.meta/tests.toml | 22 ++++++++-- .../src/test/java/SatelliteTest.java | 43 +++++++++++++++++++ 2 files changed, 62 insertions(+), 3 deletions(-) diff --git a/exercises/practice/satellite/.meta/tests.toml b/exercises/practice/satellite/.meta/tests.toml index 8314daa43..d0ed5b6ac 100644 --- a/exercises/practice/satellite/.meta/tests.toml +++ b/exercises/practice/satellite/.meta/tests.toml @@ -1,6 +1,13 @@ -# This is an auto-generated file. Regular comments will be removed when this -# file is regenerated. Regenerating will not touch any manually added keys, -# so comments can be added in a "comment" key. +# This is an auto-generated file. +# +# Regenerating this file via `configlet sync` will: +# - Recreate every `description` key/value pair +# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications +# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion) +# - Preserve any other key/value pair +# +# As user-added comments (using the # character) will be removed when this file +# is regenerated, comments can be added via a `comment` key. [8df3fa26-811a-4165-9286-ff9ac0850d19] description = "Empty tree" @@ -19,3 +26,12 @@ description = "Reject inconsistent traversals of same length" [d86a3d72-76a9-43b5-9d3a-e64cb1216035] description = "Reject traversals with repeated items" + +[af31ae02-7e5b-4452-a990-bccb3fca9148] +description = "A degenerate binary tree" + +[ee54463d-a719-4aae-ade4-190d30ce7320] +description = "Another degenerate binary tree" + +[87123c08-c155-4486-90a4-e2f75b0f3e8f] +description = "Tree with many more items" diff --git a/exercises/practice/satellite/src/test/java/SatelliteTest.java b/exercises/practice/satellite/src/test/java/SatelliteTest.java index 7b3c62d93..a97672643 100644 --- a/exercises/practice/satellite/src/test/java/SatelliteTest.java +++ b/exercises/practice/satellite/src/test/java/SatelliteTest.java @@ -2,6 +2,7 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import java.util.List; + import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -86,4 +87,46 @@ public void rejectTraversalsWithRepeatedItems() { .isThrownBy(() -> satellite.treeFromTraversals(preorder, inorder)) .withMessage("traversals must contain unique items"); } + + @Disabled("Remove to run test") + @Test + @DisplayName("A degenerate binary tree") + public void degenerateBinaryTree() { + List preorder = List.of('a', 'b', 'c', 'd'); + List inorder = List.of('d', 'c', 'b', 'a'); + + Tree tree = satellite.treeFromTraversals(preorder, inorder); + + assertThat(tree.preorder()).containsExactlyElementsOf(preorder); + assertThat(tree.inorder()).containsExactlyElementsOf(inorder); + assertThat(tree.postorder()).containsExactly('d', 'c', 'b', 'a'); + } + + @Disabled("Remove to run test") + @Test + @DisplayName("Another degenerate binary tree") + public void anotherDegenerateBinaryTree() { + List preorder = List.of('a', 'b', 'c', 'd'); + List inorder = List.of('a', 'b', 'c', 'd'); + + Tree tree = satellite.treeFromTraversals(preorder, inorder); + + assertThat(tree.preorder()).containsExactlyElementsOf(preorder); + assertThat(tree.inorder()).containsExactlyElementsOf(inorder); + assertThat(tree.postorder()).containsExactly('d', 'c', 'b', 'a'); + } + + @Disabled("Remove to run test") + @Test + @DisplayName("Tree with many more items") + public void treeWithManyMoreItems() { + List preorder = List.of('a', 'b', 'd', 'g', 'h', 'c', 'e', 'f', 'i'); + List inorder = List.of('g', 'd', 'h', 'b', 'a', 'e', 'c', 'i', 'f'); + + Tree tree = satellite.treeFromTraversals(preorder, inorder); + + assertThat(tree.preorder()).containsExactlyElementsOf(preorder); + assertThat(tree.inorder()).containsExactlyElementsOf(inorder); + assertThat(tree.postorder()).containsExactly('g', 'h', 'd', 'b', 'e', 'i', 'f', 'c', 'a'); + } }