From 662945ee82a671a15672a6f705e99e59a2af0c53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A1s=20B=20Nagy?= <20251272+BNAndras@users.noreply.github.com> Date: Mon, 5 Jan 2026 21:41:30 -0800 Subject: [PATCH] sync `satellite` tests --- exercises/practice/satellite/.meta/tests.toml | 22 ++++- .../practice/satellite/satellite.spec.js | 89 +++++++++++++++++++ 2 files changed, 108 insertions(+), 3 deletions(-) diff --git a/exercises/practice/satellite/.meta/tests.toml b/exercises/practice/satellite/.meta/tests.toml index 8314daa436..d0ed5b6ac5 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/satellite.spec.js b/exercises/practice/satellite/satellite.spec.js index 1c401ffecb..e120338463 100644 --- a/exercises/practice/satellite/satellite.spec.js +++ b/exercises/practice/satellite/satellite.spec.js @@ -49,4 +49,93 @@ describe('Satellite', () => { treeFromTraversals(preorder, inorder); }).toThrow(new Error('traversals must contain unique items')); }); + + xtest('A degenerate binary tree', () => { + const preorder = ['a', 'b', 'c', 'd']; + const inorder = ['d', 'c', 'b', 'a']; + const expected = { + value: 'a', + left: { + value: 'b', + left: { + value: 'c', + left: { + value: 'd', + left: {}, + right: {}, + }, + right: {}, + }, + right: {}, + }, + right: {}, + }; + expect(treeFromTraversals(preorder, inorder)).toEqual(expected); + }); + + xtest('Another degenerate binary tree', () => { + const preorder = ['a', 'b', 'c', 'd']; + const inorder = ['a', 'b', 'c', 'd']; + const expected = { + value: 'a', + left: {}, + right: { + value: 'b', + left: {}, + right: { + value: 'c', + left: {}, + right: { + value: 'd', + left: {}, + right: {}, + }, + }, + }, + }; + expect(treeFromTraversals(preorder, inorder)).toEqual(expected); + }); + + xtest('Tree with many more items', () => { + const preorder = ['a', 'b', 'd', 'g', 'h', 'c', 'e', 'f', 'i']; + const inorder = ['g', 'd', 'h', 'b', 'a', 'e', 'c', 'i', 'f']; + const expected = { + value: 'a', + left: { + value: 'b', + left: { + value: 'd', + left: { + value: 'g', + left: {}, + right: {}, + }, + right: { + value: 'h', + left: {}, + right: {}, + }, + }, + right: {}, + }, + right: { + value: 'c', + left: { + value: 'e', + left: {}, + right: {}, + }, + right: { + value: 'f', + left: { + value: 'i', + left: {}, + right: {}, + }, + right: {}, + }, + }, + }; + expect(treeFromTraversals(preorder, inorder)).toEqual(expected); + }); });