feat: add Substitution Cipher algorithm and tests
Describe your change:
- [x] Add an algorithm
Checklist:
- [x] I have read CONTRIBUTING.md.
- [x] This pull request is all my own work -- I have not plagiarized.
- [x] I know that pull requests will not be merged if they fail the automated tests.
- [x] This PR only changes one algorithm file. To ease review, please open separate PRs for separate algorithms.
- [x] All new JavaScript files are placed inside an existing directory.
- [x] All filenames use the UpperCamelCase (PascalCase) style. There are no spaces in filenames.
- [x] All new algorithms have a URL in their comments that points to Wikipedia or another similar explanation.
- [x] All code is tested using Vitest and follows the ES Module syntax.
- [x] Code is formatted using Prettier.
Summary:
This PR adds a monoalphabetic Substitution Cipher to the ciphers/ directory.
- Includes
substitutionCipherEncryptionandsubstitutionCipherDecryptionfunctions - Validates key length and character set
- Test coverage includes:
- Encryption
- Decryption
- Non-alphabetic character handling
- Invalid key rejection
- All tests are passing using Vitest
- Code formatted with Prettier
📚 Reference: Wikipedia – Substitution Cipher
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:
Project coverage is 85.91%. Comparing base (
1d252d7) to head (25add22).
Additional details and impacted files
@@ Coverage Diff @@
## master #1773 +/- ##
==========================================
+ Coverage 85.87% 85.91% +0.04%
==========================================
Files 377 378 +1
Lines 19720 19779 +59
Branches 3005 3017 +12
==========================================
+ Hits 16935 16994 +59
Misses 2785 2785
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
:rocket: New features to boost your workflow:
- :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
- :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
This PR only introduces the Substitution Cipher and its test. I’ve noticed the CI flags code style/spelling issues in files like:
String/AlphaNumericPalindrome.js
Recursive/SubsequenceRecursive.js
Maths/MobiusFunction.js
These issues are pre-existing in the repository and not introduced by this PR. I have run Prettier on my changes, and there are no further modifications I can make to fix these unrelated files.