Skip to content

tests: improve for GeneratePermutations #1263

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Nov 13, 2022

Conversation

kho-kho-kho
Copy link
Contributor

@kho-kho-kho kho-kho-kho commented Nov 10, 2022

Open in Gitpod know more

Describe your change:

The original test was very limited and enforced a strict ordering of the results which the algorithm doesn't guarantee. I've loosened that restriction, and added two extra "complete" tests containing elements besides numbers.

For tests where we don't want to hardcode every possible result I've added a sanity check that will at least verify whether the number of results is accurate.

  • Add an algorithm?
  • Fix a bug or typo in an existing algorithm?
  • Documentation change?

Checklist:

  • I have read CONTRIBUTING.md.
  • This pull request is all my own work -- I have not plagiarized.
  • I know that pull requests will not be merged if they fail the automated tests.
  • This PR only changes one algorithm file. To ease review, please open separate PRs for separate algorithms.
  • All new JavaScript files are placed inside an existing directory.
  • All filenames should use the UpperCamelCase (PascalCase) style. There should be no spaces in filenames.
    Example:UserProfile.js is allowed but userprofile.js,Userprofile.js,user-Profile.js,userProfile.js are not
  • All new algorithms have a URL in its comments that points to Wikipedia or other similar explanation.
  • If this pull request resolves one or more open issues then the commit message contains Fixes: #{$ISSUE_NO}.

The original insertBalance function was doing raw value comparisons as opposed to using the tree's comparator. This is clearly unintentional, and would (ultimately) cause the structure to segfault when constructed with the stringData included in the updated test.

I've added the fix, scanned the rest of the code for similar issues, and added the appropriate test case which passes successfully with the fix. The jest code coverage increases slightly as well with the changes.
Added a couple of extra elements to the original test tree, and then removed elements in an order such that all previously uncovered branches of code are now covered.

Also added an emptyTree structure to test some additional (trivial) base cases.
missed this from my previous commit
An iterative analog to the traditional recursive breadth-first-search algorithm for binary trees.

This in-place solution uses the pre-existing "traversal" array for both tracking the algorithm as well as storing the result.

Also tweaked old code by resetting the traversal array each time the tree is traversed (otherwise you're only allowed to traverse a tree once which doesn't seem correct even with a single traversal function).
got rid of unnecessary currentSize
added currentNode for clarity
.. per earlier discussion w mods
also tweaked the tests to achieve 100% coverage
Original test was very limited and also (unnecessarily) strict in that the order of results mattered.

I've tweaked the original test so that results can come in any order. Also added additional tests for smaller arrays of strings/booleans. Finally added some sanity testing for larger input arrays.
appgurueu
appgurueu previously approved these changes Nov 10, 2022
Factorials are now explicit in the last set of tests.
Leverage package's existing factorial function.
@raklaptudirm raklaptudirm changed the title Tweak and flesh out tests for GeneratePermutations tests: improve for GeneratePermutations Nov 13, 2022
@raklaptudirm raklaptudirm merged commit 71d3d44 into TheAlgorithms:master Nov 13, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants