Skip to content

Commit 91f3225

Browse files
committed
Moves keyval tests to json format.
1 parent 6492309 commit 91f3225

File tree

6 files changed

+193
-301
lines changed

6 files changed

+193
-301
lines changed

tests/json/KeyvalTest.json

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
{
2+
"name": "KeyvalTest",
3+
"factory": "keyvalTest",
4+
"tests": {
5+
"Keyval Trival": {
6+
"input": "key={{}}",
7+
"expected": {"key": true}
8+
},
9+
"Keyval Trivial 2": {
10+
"input": "key1={{}},key2={{{{}}}}",
11+
"expected": {"key1": true, "key2": true}
12+
},
13+
"Keyval Trival3": {
14+
"input": "key={{}{}}",
15+
"expected": {"key": "{}{}"}
16+
},
17+
"Keyval Trivial 4": {
18+
"input": "key1= { { } },key2= {{ { { }} } }",
19+
"expected": {"key1": true, "key2": true}
20+
},
21+
"Keyval Single": {
22+
"input": "key=a",
23+
"expected": {"key": "a"}
24+
},
25+
"Keyval Double": {
26+
"input": "key1=a,key2=b",
27+
"expected": {"key1": "a", "key2": "b"}
28+
},
29+
"Keyval Space": {
30+
"input": "key1 = a , key2 = b",
31+
"expected": {"key1": "a", "key2": "b"}
32+
},
33+
"Keyval Single True": {
34+
"input": "key1",
35+
"expected": {"key1": true}
36+
},
37+
"Keyval Double True": {
38+
"input": "key1,key2",
39+
"expected": {"key1": true, "key2": true}
40+
},
41+
"Keyval Mixed": {
42+
"input": "key1=a,key2,key3=c",
43+
"expected": {"key1": "a", "key2": true, "key3": "c"}
44+
},
45+
"Keyval Empty Comma Begin": {
46+
"input": ",key1=a,key2,key3=c",
47+
"expected": {"key1": "a", "key2": true, "key3": "c"}
48+
},
49+
"Keyval Empty Comma Mid": {
50+
"input": "key1=a,,key2,key3=c",
51+
"expected": {"key1": "a", "key2": true, "key3": "c"}
52+
},
53+
"Keyval Empty Comma End": {
54+
"input": "key1=a,key2,key3=c,",
55+
"expected": {"key1": "a", "key2": true, "key3": "c"}
56+
},
57+
"Keyval Empty Comma Multi": {
58+
"input": ",,key1=a,,,,key2,key3=c,,",
59+
"expected": {"key1": "a", "key2": true, "key3": "c"}
60+
},
61+
"Keyval Braces": {
62+
"input": "key1={a},key2=b",
63+
"expected": {"key1": "a", "key2": "b"}
64+
},
65+
"Keyval Braces 2": {
66+
"input": "key1={{a}},key2=b",
67+
"expected": {"key1": "a", "key2": "b"}
68+
},
69+
"Keyval Braces 3": {
70+
"input": "key1={{{a}}},key2=b",
71+
"expected": {"key1": "a", "key2": "b"}
72+
},
73+
"Keyval Braces Comma": {
74+
"input": "key1={a,b,c},key2=b",
75+
"expected": {"key1": "a,b,c", "key2": "b"}
76+
},
77+
"Keyval Braces Equal": {
78+
"input": "key1={a=c},key2=b",
79+
"expected": {"key1": "a=c", "key2": "b"}
80+
},
81+
"Keyval Braces Comma Equal": {
82+
"input": "key1={a=c,b},key2=b",
83+
"expected": {"key1": "a=c,b", "key2": "b"}
84+
},
85+
"Keyval Braces Simple 1": {
86+
"input": "key1={{a}}",
87+
"expected": {"key1": "a"}
88+
},
89+
"Keyval Braces Simple 2": {
90+
"input": "key1={{a{b}}}",
91+
"expected": {"key1": "a{b}"}
92+
},
93+
"Keyval Braces Simple 3": {
94+
"input": "key1={{a={b}}}",
95+
"expected": {"key1": "a={b}"}
96+
},
97+
"Keyval Braces Prefix": {
98+
"input": "key1={{}a}",
99+
"expected": {"key1": "{}a"}
100+
},
101+
"Keyval Braces Prefix 2": {
102+
"input": "key1={{{}}a}",
103+
"expected": {"key1": "{{}}a"}
104+
},
105+
"Keyval Braces Prefix 3": {
106+
"input": "key1={{}{}a}",
107+
"expected": {"key1": "{}{}a"}
108+
},
109+
"Keyval Braces Prefix 4": {
110+
"input": "key1={{{}{}a}}",
111+
"expected": {"key1": "{}{}a"}
112+
},
113+
"Keyval Braces Prefix 5": {
114+
"input": "key1={{}{a}}",
115+
"expected": {"key1": "{}{a}"}
116+
},
117+
"Keyval Braces Prefix 6": {
118+
"input": "key1={{{}}{a}}",
119+
"expected": {"key1": "{{}}{a}"}
120+
},
121+
"Keyval Braces Mixed 1": {
122+
"input": "key1={{a},{b}},key2=b",
123+
"expected": {"key1": "{a},{b}", "key2": "b"}
124+
},
125+
"Keyval Braces Mixed 2": {
126+
"input": "key1={{{a},{b}}},key2=b",
127+
"expected": {"key1": "{a},{b}", "key2": "b"}
128+
},
129+
"Keyval Braces Mixed 3": {
130+
"input": "key1={{{a}},{{b},{c}}},key2=b",
131+
"expected": {"key1": "{{a}},{{b},{c}}", "key2": "b"}
132+
},
133+
"Keyval Braces Mixed 3 Spaces": {
134+
"input": "key1 = { { { a}},{{b},{c} } } ,key2=b",
135+
"expected": {"key1": "{ { a}},{{b},{c} }", "key2": "b"}
136+
},
137+
"Keyval Braces Mixed 4 Spaces": {
138+
"input": "key1 = { { { { { { a}},{{b},{c} } } } } } ,key2=b",
139+
"expected": {"key1": "{ { a}},{{b},{c} }", "key2": "b"}
140+
},
141+
"Keyval Braces Equals Mixed 3": {
142+
"input": "key1={{{a}}={{b},{c}}},key2=b",
143+
"expected": {"key1": "{{a}}={{b},{c}}", "key2": "b"}
144+
},
145+
"Keyval Error 1": {
146+
"input": "key={{a}",
147+
"expected": "Extra open brace or missing close brace"
148+
},
149+
"Keyval Error 2": {
150+
"input": "key={{a}{}",
151+
"expected": "Extra open brace or missing close brace"
152+
},
153+
"Keyval Error 3": {
154+
"input": "key1=}, key2={",
155+
"expected": "Extra open brace or missing close brace"
156+
},
157+
"Keyval Unbalanced 1": {
158+
"input": "key={a}}",
159+
"expected": {"key": "a}"}
160+
},
161+
"Keyval Unbalanced 2": {
162+
"input": "key1={a}}, key2=}b",
163+
"expected": {"key1": "a}", "key2": "}b"}
164+
},
165+
"Keyval Unbalanced 3": {
166+
"input": "key1=}, key2={}}",
167+
"expected": {"key1": true, "key2": true}
168+
}
169+
}
170+
}

tests/src/other-test.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import {ParserJsonTest} from './parser-test.js';
2+
import {JsonTest} from './test.js';
23
import {Configuration} from '../node_modules/mathjax-full/js/input/tex/Configuration.js';
34
import {CharacterMap} from '../node_modules/mathjax-full/js/input/tex/SymbolMap.js';
45
import ParseMethods from '../node_modules/mathjax-full/js/input/tex/ParseMethods.js';
6+
import ParseUtil from '../node_modules/mathjax-full/js/input/tex/ParseUtil.js';
57

68

79
export class ParserMultirelTest extends ParserJsonTest {
@@ -40,3 +42,20 @@ export class ParserConfigMacrosTest extends ParserJsonTest {
4042

4143
}
4244

45+
export class KeyvalTest extends JsonTest {
46+
47+
runTest(name, input, expected) {
48+
this.test(
49+
name,
50+
t => {
51+
try {
52+
let keyval = ParseUtil.keyvalOptions(input);
53+
t.deepEqual(keyval, expected, name);
54+
} catch (e) {
55+
t.deepEqual(e.message, expected, name);
56+
}
57+
}
58+
);
59+
}
60+
61+
}

tests/src/parser-test.js

Lines changed: 0 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -20,71 +20,6 @@ let fs = require('fs');
2020

2121
RegisterHTMLHandler(chooseAdaptor());
2222

23-
export class ParserTest extends Test {
24-
25-
json = {};
26-
packages = ['ams', 'base'];
27-
settings = {tags: 'none'};
28-
output = false;
29-
30-
constructor() {
31-
super();
32-
console.log(this.constructor.name);
33-
console.log('\u001B\u005B\u0033\u0034\u006D' +
34-
'Running tests from ' + this.constructor.name +
35-
'\u001B\u005B\u0033\u0037\u006D');
36-
this.json.name = this.constructor.name;
37-
this.json.packages = this.packages;
38-
this.json.settings = this.settings;
39-
this.json.tests = {};
40-
}
41-
42-
outTest(name, tex, expected) {
43-
this.json.tests[name] = {input: tex, expected: expected};
44-
}
45-
46-
printTime() {
47-
super.printTime();
48-
if (this.output && !Object.keys(this.runningTests).length) {
49-
console.log('Out: ' + this.json.name);
50-
this.json.name = this.constructor.name;
51-
this.json.packages = this.packages;
52-
this.json.settings = this.settings;
53-
fs.writeFileSync('json3/' + this.json.name + '.json', JSON.stringify(this.json, null, 2));
54-
}
55-
}
56-
57-
// Tests exclusively the timing of the Translate method.
58-
runTest(name, tex, expected) {
59-
this.outTest(name, tex,expected);
60-
this.test(
61-
name,
62-
t => {
63-
mathjax.handleRetriesFor(function() {
64-
let options = {packages: this.packages};
65-
Object.assign(options, this.settings);
66-
let html = mathjax.document('<html></html>', {
67-
InputJax: new TeX(options), OutputJax: new SVG()
68-
});
69-
let root = html.convert(tex, {end: STATE.CONVERT});
70-
let jv = new JsonMmlVisitor();
71-
root.setTeXclass(null);
72-
let actual = jv.visitTree(root);
73-
t.deepEqual(actual, expected, name);
74-
}.bind(this)).catch(err => {
75-
console.log(err.message);
76-
console.log(err.stack.replace(/\n.*\/system\.js:(.|\n)*/, ''));
77-
});
78-
}
79-
);
80-
}
81-
82-
ignoreTest(name, tex, expected) {
83-
}
84-
85-
}
86-
87-
8823
export class ParserJsonTest extends JsonTest {
8924

9025
packages = ['ams', 'base'];

tests/src/test-factory.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import {ParserJsonTest} from './parser-test.js';
2-
import {ParserMultirelTest, ParserConfigMacrosTest} from './other-test.js';
2+
import {KeyvalTest, ParserMultirelTest, ParserConfigMacrosTest} from './other-test.js';
33
import {JsonTest} from './test.js';
44
let fs = require('fs');
55

66
export class TestFactory {
77

88
static factory = {
9+
'keyvalTest': KeyvalTest,
910
'parserConfigMacros': ParserConfigMacrosTest,
1011
'parserMultirel': ParserMultirelTest,
1112
'parserTest': ParserJsonTest,

0 commit comments

Comments
 (0)