forked from kyberias/orgchem
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtestiupac.js
79 lines (64 loc) · 1.72 KB
/
testiupac.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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
var parser = require("./iupac").parser;
var scanner = require("./scanner.js");
var colors = require('colors');
parser.lexer = {
lex: function () { return tokens.shift(); },
setInput: function (str) { tokens = scanner.Tokenize(str) }
}
var PassTests = [
"pentadekaani",
"undekaani",
"dekaani",
"metyylicycloetaani",
"metyylietanoli",
"metyylietan-2,2-oli",
"3-metyylietan-2,2-oli",
"oktaani",
"1,4-dietyyli-5-metyylioktaani",
"5-metyylihepteeni",
"6-metyylihept-3-eeni",
"cyclopentaani",
"cycloheksaani",
"5-etyyli-2-metyyliheptaani",
"4-etyyli-1,6-dibutyyli-5-(1,2-dimetyylipropyyli)eikosaani",
"3,5-dimetyyli-4-propyyliheptaani",
"2,3,3-trimetyyliheksaani",
"2,7,8-trimetyylidekaani",
"3-etyyli-6-isopropyyli-2,8-dimetyylinonaani",
"5,5-bis(1,2-dimetyylipropyyli)nonaani",
"propeeni",
"hepteeni",
"hept-1,2-eeni",
//"5,5-Bis(1,2-dimetyylipropyyli)nonaani"
//,
//
];
var FailTests = [
"ööö",
"5-etyyli-2-metyyli",
"5,5-tri(1,2-dimetyylipropyyli)nonaani"
];
function printFail(testname, ex) {
console.log(('FAIL: ' + testname + ' (' + ex + ')').red);
}
function printPass(testname) {
console.log(('PASS: ' + testname).green);
}
function runTests(list, passPrinter, failPrinter) {
var i;
for (i = 0; i < list.length; i++) {
try {
var testit = parser.parse(list[i]);
} catch (ex) {
failPrinter(list[i], ex);
continue;
}
passPrinter(list[i]);
}
}
console.log("Should parse".yellow.bold);
runTests(PassTests, printPass, printFail);
console.log("Should not parse".yellow.bold);
runTests(FailTests, function (testname) { printFail(testname, "Should not parse."); }, printPass);
var data = parser.parse("cycloheksaani");
console.log("infix: " + data.infix);