summaryrefslogtreecommitdiff
path: root/tests (follow)
Commit message (Collapse)AuthorAgeFilesLines
* tests/paca.mjs (test_shouldConcat): Also hoist import, definition and ↵EuAndreh2025-07-151-35/+35
| | | | position in runTests
* tests/paca.mjs (test_compileNFA): Add test case for empty regexEuAndreh2025-07-151-0/+14
|
* tests/paca.mjs (test_escapingStateStep): Add tests for `escapingStateStep()`EuAndreh2025-07-151-0/+36
|
* Use `shouldConcat()` in decision of `escapingStateSte()`EuAndreh2025-07-151-0/+4
| | | | | | | | | | | * src/paca.mjs (escapingStateStep): Use `shouldConcat()` instead of only checking if we're on the last char. We abuse it a bit by passing `null` as the first argument, since it is being escaped. (nonConcatOperators, shouldConcat): Hoist the definition of both above `escapingStateStep()`, so that they're defined before being used. * tests/paca.mjs (test_shouldConcat): Add test case where `null` is explicitly passed as the first argument.
* Support tokenizing character class expressions [a-z]EuAndreh2025-07-151-2/+224
| | | | | | | | | * src/paca.mjs (classStateStep): New function equivalent to `rangeStateStep()` for character class expressions. For now it knowns how to handle escaping ([abc\-_]), simple ranges ([a-z]), negation ([^abc]) and the hyphen literal as the first char ([-a-z_]). * tests.paca.mjs (test_classStateStep): New test entry has a test case each scenario described above.
* tests/paca.mjs (test_rangeStateStep): Finish test cases for rangeStateStepEuAndreh2025-07-131-0/+139
|
* Add first test for `rangeStateStep()`EuAndreh2025-07-131-0/+17
| | | | | * tests/paca.mjs (test_rangeStateStep): Add first test case, for when we find a closing "}" when no comma was seen.
* Hoist `numFromDigits()` before its usageEuAndreh2025-07-131-17/+17
| | | | | | | | | * src/paca.mjs (numFromDigits): Move it to before the *StateStep functions, as it is now used in `rangeStateStep()` function. So instead of letting it be defined afters its usage, move it up. * tests/paca.mjs: Do the same hoisting to the import of the `numFromDigits` name, to the definition of `test_numFromDigits` and its inclusion in the order of the call to `runTests()`.
* Add "[" to the possible characters of TRANSITION_FNS.EuAndreh2025-07-131-0/+18
| | | | | | | | | | | | | | Introducing "[" now we will start to write the code to parse the character class expressions, i.e. [a-z0-9]. The `context` key will contain a `set` with all the literal characters that were found, and all the ranges too. For parsing the ranges, a `range` key equivalent to the one for the {m,n} range is used. Despite the superficial syntax being simmilar, its logic, semantic and implementation will be different. * src/paca.mjs (TRANSITION_FNS) <"[">: Add new transition function for handling the start of a character class expression. * tests/paca.mjs (TRANSITION_FNS): Add a singular test entry, that exercises the conditionless body of the function.
* Add simple test for TRANSITION_FNSEuAndreh2025-07-131-0/+33
| | | | | | | | | | * src/paca.mjs (TRANSITION_FNS): Add trailing underscore to ignored arguments, even though it breaks the name of the `_state` and `context` destructuring arguments. * tests/paca.mjs (test_TRANSITION_FNS): Add new test function with a single case for each transition character. Since these transitions are unconditional and contain no logic, this single sample test is enough to cover for all of its behaviour.
* tests/paca.mjs (test_tokenizeRegexStep): Simplify table valuesEuAndreh2025-07-111-704/+322
|
* tests/paca.mjs: Add tests for numFromDigits()EuAndreh2025-07-111-0/+17
|
* src/paca.mjs (tokenizeRegexStep): Support tokenizing range exps {m,n}EuAndreh2025-07-111-0/+540
|
* src/paca.mjs (tokenizeRegexStep): Include `context` key in reduced stateEuAndreh2025-07-111-118/+144
|
* src/paca.mjs: Move error detection from tokenizeRegexStep => tokenizeRegexEuAndreh2025-07-111-18/+22
|
* tests/paca.mjs (test_tokenizeRegexStep): Compute `char` and `index`EuAndreh2025-07-111-20/+7
|
* Finish implementation of unit testsEuAndreh2025-07-091-17/+864
|
* Implement v0 version of NFA and DFA; WIP testsEuAndreh2025-07-071-0/+1351