summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2025-07-13 19:58:06 -0300
committerEuAndreh <eu@euandre.org>2025-07-13 19:58:10 -0300
commita4873cddb17d24d9a2d10b1aa704cedc021350f9 (patch)
tree4d0409b0281656a595d858fb82fbebe547d65ca6
parentRevert "src/paca.mjs: Temporarily export internal functions" (diff)
downloadpaca-a4873cddb17d24d9a2d10b1aa704cedc021350f9.tar.gz
paca-a4873cddb17d24d9a2d10b1aa704cedc021350f9.tar.xz
Add simple test for TRANSITION_FNS
* 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.
-rw-r--r--src/paca.mjs4
-rw-r--r--tests/paca.mjs33
2 files changed, 35 insertions, 2 deletions
diff --git a/src/paca.mjs b/src/paca.mjs
index e8ec542..c1bead1 100644
--- a/src/paca.mjs
+++ b/src/paca.mjs
@@ -107,12 +107,12 @@ const STATE_FNS = {
};
const TRANSITION_FNS = {
- "\\": ({ out, state, context }, char, index, next) => ({
+ "\\": ({ out, _state, context }, _char, _index, _next) => ({
out,
state: ConcatStep.ESCAPING,
context,
}),
- "{": ({ out, state, context }, char, index, next) => ({
+ "{": ({ out, _state, _context }, _char, _index, _next) => ({
out,
state: ConcatStep.RANGE,
context: {
diff --git a/tests/paca.mjs b/tests/paca.mjs
index 0ba2d61..b259968 100644
--- a/tests/paca.mjs
+++ b/tests/paca.mjs
@@ -3,6 +3,7 @@ import { explode, reduced, reductions, runTests } from "sjs";
import {
SyntaxError,
ConcatStep,
+ TRANSITION_FNS,
shouldConcat,
isOperator,
numFromDigits,
@@ -43,6 +44,37 @@ import {
+const test_TRANSITION_FNS = t => {
+ t.start("TRANSITION_FNS");
+
+ t.testing("\"\\\\\" depends on `out` and `context`", () => {
+ t.assertEq(
+ TRANSITION_FNS["\\"](
+ { out: 1, context: 2 },
+ null,
+ null,
+ null,
+ ),
+ { out: 1, context: 2, state: "escaping" },
+ );
+ });
+
+ t.testing("\"{\" only depends on `out`", () => {
+ t.assertEq(
+ TRANSITION_FNS["{"]({ out: "" }, null, null, null),
+ {
+ out: "",
+ state: "range",
+ context: {
+ from: [],
+ to: [],
+ where: "from",
+ },
+ },
+ );
+ });
+};
+
const test_shouldConcat = t => {
t.start("shouldConcat()");
@@ -2351,6 +2383,7 @@ const test_compile = t => {
runTests([
+ test_TRANSITION_FNS,
test_shouldConcat,
test_isOperator,
test_numFromDigits,