/
Validator-test.js
63 lines (52 loc) · 1.94 KB
/
Validator-test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import Validator from '../Validator';
import {newOperation} from '../../core/Operations';
function createQueue(ops) {
return ops.map((op) => newOperation(op));
}
describe('Validator', () => {
it('must reject single binary operators', () => {
const queue = createQueue([]);
const valid = Validator.validOperator(newOperation('+'), queue);
expect(valid).toBeFalsy();
});
it('must reject single backward-unary operators', () => {
const queue = createQueue([]);
const valid = Validator.validOperator(newOperation('!'), queue);
expect(valid).toBeFalsy();
});
it('must allow single unary operators', () => {
const queue = createQueue([]);
const valid = Validator.validOperator(newOperation('log'), queue);
expect(valid).toBeTruthy();
});
it('must allow single constants', () => {
const queue = createQueue([]);
const valid = Validator.validDigit(newOperation('1'), queue);
expect(valid).toBeTruthy();
});
it('must allow consecutive binary operators', () => {
const queue = createQueue(['+']);
const valid = Validator.validOperator(newOperation('×'), queue);
expect(valid).toBeTruthy();
});
it('must allow consecutive unary operators', () => {
const queue = createQueue(['sin']);
const valid = Validator.validOperator(newOperation('cos'), queue);
expect(valid).toBeTruthy();
});
it('must allow parenthesis after unary operators', () => {
const queue = createQueue(['sin']);
const valid = Validator.validParenthesis(newOperation('('), queue);
expect(valid).toBeTruthy();
});
it('must now allow a digit after a parenthesis close', () => {
const queue = createQueue([')']);
const valid = Validator.validDigit(newOperation('1'), queue);
expect(valid).toBeFalsy();
});
it('must allow a digit after a parenthesis open', () => {
const queue = createQueue(['(']);
const valid = Validator.validDigit(newOperation('1'), queue);
expect(valid).toBeTruthy();
});
});