diff options
| author | Emmanuel Gaillot <emmanuel.gaillot@gmail.com> | 2025-12-20 21:14:53 +0100 |
|---|---|---|
| committer | Emmanuel Gaillot <emmanuel.gaillot@gmail.com> | 2025-12-20 22:00:26 +0100 |
| commit | 895e9a4fc2c1a427c55ebaafb5423d3db6e3dddc (patch) | |
| tree | e69b67055428d49cc3bad8f81b1013e45a1dd5c8 /lambda-calcul/javascript/test | |
| parent | 800f5628d86313c315d38e983318bb0a027137e2 (diff) | |
| download | lambda-nantes-895e9a4fc2c1a427c55ebaafb5423d3db6e3dddc.tar.gz | |
Solve retrieved challenge
Diffstat (limited to 'lambda-calcul/javascript/test')
| -rw-r--r-- | lambda-calcul/javascript/test/client.test.js | 26 | ||||
| -rw-r--r-- | lambda-calcul/javascript/test/interpreter.test.js | 9 | ||||
| -rw-r--r-- | lambda-calcul/javascript/test/parser.test.js | 9 | ||||
| -rw-r--r-- | lambda-calcul/javascript/test/printer.test.js | 9 |
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'); + }); +}); |
