From 4e7f6e017b6db20607446eb0db5b727b1ffce3dd Mon Sep 17 00:00:00 2001 From: Glenn Jackman Date: Mon, 15 Dec 2025 10:55:21 -0500 Subject: [PATCH] new satellite tests --- exercises/practice/satellite/satellite.bats | 80 +++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/exercises/practice/satellite/satellite.bats b/exercises/practice/satellite/satellite.bats index 3c597e7f..3eb80684 100644 --- a/exercises/practice/satellite/satellite.bats +++ b/exercises/practice/satellite/satellite.bats @@ -60,3 +60,83 @@ END_JSON shopt -s nocasematch assert_output "traversals must contain unique elements" } + +@test "A degenerate binary tree" { + [[ $BATS_RUN_SKIPPED == "true" ]] || skip + run bash satellite.sh "a b c d" "d c b a" + assert_success + expectedJson=$(cat << END_JSON + { + "v": "a", + "l": { + "v": "b", + "l": { + "v": "c", + "l": { "v": "d", "l": {}, "r": {} }, + "r": {} + }, + "r": {} + }, + "r": {} + } +END_JSON +) + # compare without spaces + [[ "${output//[[:space:]]/}" == "${expectedJson//[[:space:]]/}" ]] +} + +@test "Another degenerate binary tree" { + [[ $BATS_RUN_SKIPPED == "true" ]] || skip + run bash satellite.sh "a b c d" "a b c d" + assert_success + expectedJson=$(cat << END_JSON + { + "v": "a", + "l": {}, + "r": { + "v": "b", + "l": {}, + "r": { + "v": "c", + "l": {}, + "r": { "v": "d", "l": {}, "r": {} } + } + } + } +END_JSON +) + # compare without spaces + [[ "${output//[[:space:]]/}" == "${expectedJson//[[:space:]]/}" ]] +} + +@test "Tree with many more items" { + [[ $BATS_RUN_SKIPPED == "true" ]] || skip + run bash satellite.sh "a b d g h c e f i" "g d h b a e c i f" + assert_success + expectedJson=$(cat << END_JSON + { + "v": "a", + "l": { + "v": "b", + "l": { + "v": "d", + "l": { "v": "g", "l": {}, "r": {} }, + "r": { "v": "h", "l": {}, "r": {} } + }, + "r": {} + }, + "r": { + "v": "c", + "l": { "v": "e", "l": {}, "r": {} }, + "r": { + "v": "f", + "l": { "v": "i", "l": {}, "r": {} }, + "r": {} + } + } + } +END_JSON +) + # compare without spaces + [[ "${output//[[:space:]]/}" == "${expectedJson//[[:space:]]/}" ]] +}