{ "exercise": "binary-search-tree", "version": "1.0.0", "comments": [ "Each test case assumes an empty/new tree.", "As per exercism/problem-specifications#996 key 'treeData' counts as an input", "to test generators.", "The key 'treeData' represents an array of numbers for which the data should be ", "inserted/added to the tree as it appears in the array from left to right.", "e.g. treeData: ['2', '1', '3', '6', '7', '5']", "Insert 2. Insert 1. Insert 3. Insert 6, so on...", "This canonical-data does not restrict the data type of array elements to either", "strings or integers.", "The key 'expected' represents tree state as JSON object of schema :", "{", " 'title':'nodeObject',", " 'type':'object',", " 'properties':{", " 'data':{", " 'type':'string'", " },", " 'left':{", " 'type':'nodeObject'", " },", " 'right':{", " 'type':'nodeObject'", " }", " },", " 'required':['data', 'left', 'right']", "}" ], "cases": [{ "description": "data is retained", "property": "data", "input": { "treeData": ["4"] }, "expected": { "data": "4", "left": null, "right": null } }, { "description": "insert data at proper node", "cases": [{ "description": "smaller number at left node", "property": "data", "input": { "treeData": ["4", "2"] }, "expected": { "data": "4", "left": { "data": "2", "left": null, "right": null }, "right": null } }, { "description": "same number at left node", "property": "data", "input": { "treeData": ["4", "4"] }, "expected": { "data": "4", "left": { "data": "4", "left": null, "right": null }, "right": null } }, { "description": "greater number at right node", "property": "data", "input": { "treeData": ["4", "5"] }, "expected": { "data": "4", "left": null, "right": { "data": "5", "left": null, "right": null } } } ] }, { "description": "can create complex tree", "property": "data", "input": { "treeData": ["4", "2", "6", "1", "3", "5", "7"] }, "expected": { "data": "4", "left": { "data": "2", "left": { "data": "1", "left": null, "right": null }, "right": { "data": "3", "left": null, "right": null } }, "right": { "data": "6", "left": { "data": "5", "left": null, "right": null }, "right": { "data": "7", "left": null, "right": null } } } }, { "description": "can sort data", "cases": [{ "description": "can sort single number", "property": "sortedData", "input": { "treeData": ["2"] }, "expected": ["2"] }, { "description": "can sort if second number is smaller than first", "property": "sortedData", "input": { "treeData": ["2", "1"] }, "expected": ["1", "2"] }, { "description": "can sort if second number is same as first", "property": "sortedData", "input": { "treeData": ["2", "2"] }, "expected": ["2", "2"] }, { "description": "can sort if second number is greater than first", "property": "sortedData", "input": { "treeData": ["2", "3"] }, "expected": ["2", "3"] }, { "description": "can sort complex tree", "property": "sortedData", "input": { "treeData": ["2", "1", "3", "6", "7", "5"] }, "expected": ["1", "2", "3", "5", "6", "7"] } ] } ] }