diff options
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'); + }); +}); |
