JavaScript icon indicating copy to clipboard operation
JavaScript copied to clipboard

feat: add Substitution Cipher algorithm and tests

Open mmohamedkhaled opened this issue 9 months ago • 2 comments

Open in Gitpod know more

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 substitutionCipherEncryption and substitutionCipherDecryption functions
  • 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

mmohamedkhaled avatar Apr 04 '25 00:04 mmohamedkhaled

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.

codecov-commenter avatar Apr 04 '25 01:04 codecov-commenter

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.

mmohamedkhaled avatar Apr 04 '25 02:04 mmohamedkhaled