summaryrefslogtreecommitdiff
path: root/lambda-calcul/javascript/test
diff options
context:
space:
mode:
Diffstat (limited to 'lambda-calcul/javascript/test')
-rw-r--r--lambda-calcul/javascript/test/client.test.js26
-rw-r--r--lambda-calcul/javascript/test/interpreter.test.js9
-rw-r--r--lambda-calcul/javascript/test/parser.test.js9
-rw-r--r--lambda-calcul/javascript/test/printer.test.js9
4 files changed, 53 insertions, 0 deletions
diff --git a/lambda-calcul/javascript/test/client.test.js b/lambda-calcul/javascript/test/client.test.js
index 5fcc42c..8b68a61 100644
--- a/lambda-calcul/javascript/test/client.test.js
+++ b/lambda-calcul/javascript/test/client.test.js
@@ -54,4 +54,30 @@ describe('λ-calculator', () => {
return client.nextChallenge('SomeToken')
.then((challenge) => expect(challenge).toBe('SomeChallenge'));
});
+
+ it('solves challenges', () => {
+ const parser = {
+ parse: (challenge) => {
+ expect(challenge).toBe('Some challenge');
+ return 'Parsed expression';
+ },
+ };
+
+ const interpreter = {
+ evaluate: (parsedExpression) => {
+ expect(parsedExpression).toBe('Parsed expression');
+ return 'Evaluated expression';
+ },
+ };
+
+ const printer = {
+ print: (evaluatedExpression) => {
+ expect(evaluatedExpression).toBe('Evaluated expression');
+ return 'Expression to print';
+ },
+ };
+
+ const client = LC.newClient({ parser, interpreter, printer });
+ expect(client.solve('Some challenge')).toBe('Expression to print');
+ });
});
diff --git a/lambda-calcul/javascript/test/interpreter.test.js b/lambda-calcul/javascript/test/interpreter.test.js
new file mode 100644
index 0000000..a859bfe
--- /dev/null
+++ b/lambda-calcul/javascript/test/interpreter.test.js
@@ -0,0 +1,9 @@
+const { σ } = require('../src/internals');
+const { evaluate } = require('../src/interpreter');
+
+describe('An interpreter', () => {
+ it('evaluates symbols', () => {
+ expect(evaluate(σ('x'))).toEqual(σ('x'));
+ expect(evaluate(σ('y'))).toEqual(σ('y'));
+ });
+});
diff --git a/lambda-calcul/javascript/test/parser.test.js b/lambda-calcul/javascript/test/parser.test.js
new file mode 100644
index 0000000..e9cab60
--- /dev/null
+++ b/lambda-calcul/javascript/test/parser.test.js
@@ -0,0 +1,9 @@
+const { σ } = require('../src/internals');
+const { parse } = require('../src/parser');
+
+describe('A parser', () => {
+ it('parses symbols', () => {
+ expect(parse('x')).toEqual(σ('x'));
+ expect(parse('y')).toEqual(σ('y'));
+ });
+});
diff --git a/lambda-calcul/javascript/test/printer.test.js b/lambda-calcul/javascript/test/printer.test.js
new file mode 100644
index 0000000..1684d31
--- /dev/null
+++ b/lambda-calcul/javascript/test/printer.test.js
@@ -0,0 +1,9 @@
+const { σ } = require('../src/internals');
+const { print } = require('../src/printer');
+
+describe('A printer', () => {
+ it('prints symbols', () => {
+ expect(print(σ('x'))).toEqual('x');
+ expect(print(σ('y'))).toEqual('y');
+ });
+});