symbol_test.dart
1.51 KB
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
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter_math_fork/src/ast/nodes/symbol.dart';
import 'package:flutter_math_fork/src/ast/syntax_tree.dart';
import 'package:flutter_math_fork/src/ast/types.dart';
import 'package:flutter_math_fork/src/encoder/tex/encoder.dart';
import 'package:flutter_math_fork/src/parser/tex/parser.dart';
import 'package:flutter_math_fork/src/parser/tex/settings.dart';
String recodeTexSymbol(String tex, [Mode mode = Mode.math]) {
if (mode == Mode.text) {
tex = '\\text{$tex}';
}
var node = TexParser(tex, const TexParserSettings()).parse().children.first;
while (node is ParentableNode) {
node = node.children.first!;
}
assert(node is SymbolNode);
return node.encodeTeX(
conf: mode == Mode.math ? TexEncodeConf.mathConf : TexEncodeConf.textConf,
);
}
void main() {
group('symbol encoding test', () {
test('base math symbols', () {
expect(recodeTexSymbol('a'), 'a');
expect(recodeTexSymbol('0'), '0');
expect(recodeTexSymbol('\\pm'), '\\pm');
});
test('base text symbols', () {
expect(recodeTexSymbol('a', Mode.text), 'a');
expect(recodeTexSymbol('0', Mode.text), '0');
expect(recodeTexSymbol('\\dag', Mode.text), '\\dag');
});
test('escaped math symbols', () {
expect(recodeTexSymbol('\\{'), '\\{');
expect(recodeTexSymbol('\\}'), '\\}');
expect(recodeTexSymbol('\\&'), '\\&');
expect(recodeTexSymbol('\\#'), '\\#');
expect(recodeTexSymbol('\\_'), '\\_');
});
});
}