-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathchem_test.js
97 lines (93 loc) · 2.61 KB
/
chem_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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
const $ = require('meeko')
const balanceEq = require('./chem.js')
const assert = require('assert')
/*
*/
const chemTestArr = [
'HCOOH + AgNO3 + NH3 = Ag + NH4NO3 + CO2',
'HCOOH + 2AgNO3 + 2NH3 = 2Ag + 2NH4NO3 + CO2',
'equation error',
'P4O10 + H2O = H3PO4',
'P4O10 + 6H2O = 4H3PO4',
'equation error',
'Ji + O2 = JiO2',
'',
'element is not exist',
'Mg+HNO3=MgN2O6+NH4NO3+H2O',
'4Mg + 10HNO3=4MgN2O6 + NH4NO3 + 3H2O',
'equation error',
'FeS+KMnO4+H2SO4=K2SO4+MnSO4+Fe2S3O12+H2O',
'10FeS + 18KMnO4 + 32H2SO4=9K2SO4 + 18MnSO4 + 5Fe2S3O12 + 32H2O',
'equation error',
'Fe+H2O=Fe3O4+H2',
'3Fe + 4H2O = Fe3O4 + 4H2',
'equation error',
'P+O2=P2O5',
'4P + 5O2 = 2P2O5',
'equation error',
'NH4NO3=N2+O2+H2O',
'2NH4NO3=2N2+O2+4H2O',
'',
'Fe+HNO3+H2O=FeO3H3+NH4NO3',
'8Fe + 6HNO3 + 15H2O=8FeO3H3 + 3NH4NO3',
'',
'NiS + HCl + HNO3 = NiCl2 + NO + S + H2O ',
'3NiS+6HCl+2HNO3=3NiCl2+2NO+3S+4H2O',
'',
'Al+NaNO3+H2O=AlO3H3+N2+NaAlO2',
'10Al + 6NaNO3 + 6H2O=4AlO3H3 + 3N2 + 6NaAlO2',
'',
'KMnO4+FeSO4+H2SO4=Fe2S3O12+MnSO4+K2SO4+H2O',
'2KMnO4 + 10FeSO4 + 8H2SO4=5Fe2S3O12 + 2MnSO4 + K2SO4 + 8H2O',
'',
'CS2+KMnO4+H2SO4=K2SO4+MnSO4+CO2+H2SO',
'9CS2 + 12KMnO4 + 14H2SO4 = 6K2SO4 + 12MnSO4 + 9CO2 + 14H2SO',
'',
'KMnO4 + HCl = KCl + MnCl2 + H2O + Cl2',
'2KMnO4 + 16HCl = 2KCl + 2MnCl2 + 8H2O + 5Cl2',
'',
'K4FeC6N6 + KMnO4 + H2SO4 = KHSO4 + Fe2S3O12 + MnSO4 + HNO3 + CO2 + H2O',
'10K4FeC6N6 + 122KMnO4 + 299H2SO4=162KHSO4 + 5Fe2S3O12 + 122MnSO4 + 60HNO3 + 60CO2 + 188H2O',
'',
'ZnCl2 + H2O = ZnO + HCl',
'ZnCl2 + H2O = ZnO + 2HCl',
'',
'C3H5N3O9 = CO2 + O2 + N2 + H2O',
'4C3H5N3O9 = 12CO2 + O2 + 6N2 + 10H2O',
'',
'C38H76N2O2 + NaNO2 = Na2O + CO2 + H2O + N2',
'3C38H76N2O2 + 224NaNO2 = 112Na2O + 114CO2 + 114H2O + 115N2',
'',
'C38H76N2O2 + NaNO2 = NaO + C18H36O2 + N2',
'9C38H76N2O2 + 20NaNO2 = 20NaO + 19C18H36O2 + 19N2',
'',
'FeS2+O2=SO2+Fe2O3',
'4FeS2+11O2=8SO2+2Fe2O3',
'',
'Fe2S3O12+NaOH=Na2SO4+FeO3H3',
'Fe2S3O12 + 6NaOH = 3Na2SO4 + 2FeO3H3',
'',
'A',
'',
'',
'A=A',
'',
''
]
for (let i = 0; i < chemTestArr.length; i += 3) {
const inStr = chemTestArr[i + 0]
const outStr = chemTestArr[i + 1]
const chem = balanceEq(inStr)
describe(`${inStr}`, function () {
it(`${inStr} => ${chem.outChemCol || chemTestArr[i + 2]}`, function () {
assert.strictEqual(
chem.outChem.replaceAll(' ', ''),
outStr.replaceAll(' ', ''),
chemTestArr[i + 2]
)
})
})
}
console.log(balanceEq('P+O2=P2O5'))
console.log(balanceEq('Ca(No3)2 + K3PO4 = Ca3(PO4)2 + KNo3'))
console.log(balanceEq('NH3 + CuO → H2O + Cu + N2'))