-
Notifications
You must be signed in to change notification settings - Fork 1
/
vocx_test.go
144 lines (133 loc) · 3.93 KB
/
vocx_test.go
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
package vocx_test
import (
"fmt"
"testing"
"github.com/martinrue/vocx"
)
func TestTranscribeWithDefaultRules(t *testing.T) {
tests := []struct {
Input string
Expected string
}{
{"Saluton", "saluton"},
{"Saluton.", "saluton."},
{"Saluton, kiel vi fartas?", "saluton, kijel wij fartas?"},
{"La oka numero estas ok.", "la oka numero estas ohk."},
{"Tiel estas la mondo.", "tijel estas la mondo."},
{"Mi ricevis mesaĝon", "mij rijtsewijs mesadżon"},
{"La internacia lingvo estas tre facila.", "la ijnternatssija lijngwo estas tre fatssila."},
{"Abcĉdefgĝhĥijĵklmnoprsŝtuŭvz", "abtsczdefgdżhchijyrzklmnoprssztułwz"},
{"La sistemo simple estas bonega", "la syystemo syymple estas bonega"},
{"Saluton s-ro kaj s-ino", "saluton sjijnjoro kay sjijnjorijno"},
{"Okazas, okazis, okazos", "okazas, okazyjs, okazos"},
{"cxgxhxjxsxux", "czdżchrzszł"},
{"ktp", "ko-to-po"},
{"k.t.p", "ko-to-po"},
{"atm", "antałtagmeze"},
{"ptm", "posttagmeze"},
{"bv", "bonvolu"},
{"1", "unu"},
{"5", "kvijn"},
{"7,1", "sep, komo unu"},
{"7,15", "sep, komo dek kvijn"},
{"12", "dek du"},
{"100", "tsent"},
{"600", "ses tsent"},
{"110", "tsent dek"},
{"115", "tsent dek kvijn"},
{"259", "du tsent kvijn dek nał"},
{"999", "nał tsent nał dek nał"},
{"1150", "mijl, tsent kvijn dek"},
{"1250", "mijl, du tsent kvijn dek"},
{"1.268", "mijl, du tsent ses dek ohk"},
{"5.233,55", "kvijn mijl, du tsent trij dek trij, komo kvijn dek kvijn"},
{"839241,12", "ohk tsent trij dek nał mijl, du tsent kvar dek unu, komo dek du"},
{"1000000", "mijlijono"},
{"2000000", "du mijlijono"},
{"9.500123", "nał mijlijono, kvijn tsent mijl, tsent du dek trij"},
{"249.500123", "du tsent kvar dek nał mijlijono, kvijn tsent mijl, tsent du dek trij"},
}
transcriber := vocx.NewTranscriber()
for i, test := range tests {
t.Run(fmt.Sprintf("default-rules-test-%d", i+1), func(t *testing.T) {
actual := transcriber.Transcribe(test.Input)
if actual != test.Expected {
t.Fatalf("Expected [%s], got [%s]", test.Expected, actual)
}
})
}
}
func TestTranscribeWithCustomRules(t *testing.T) {
customRules := `
{
"letters": {
"a": "a",
"b": "b",
"c": "ts",
"ĉ": "cz",
"d": "d",
"e": "e",
"f": "f",
"g": "g",
"ĝ": "dż",
"h": "h",
"ĥ": "ch",
"i": "ij",
"j": "y",
"ĵ": "rz",
"k": "k",
"l": "l",
"m": "m",
"n": "n",
"o": "o",
"p": "p",
"r": "r",
"s": "s",
"ŝ": "sz",
"t": "t",
"u": "u",
"ŭ": "ł",
"v": "w",
"z": "z"
},
"fragments": [
{ "match": "atsij", "replace": "atssij" },
{ "match": "ide\b", "replace": "ijdex" },
{ "match": "io\b", "replace": "ijox" },
{ "match": "ioy\b", "replace": "ijojx" },
{ "match": "ioyn\b", "replace": "ijojnx" },
{ "match": "feyo\b", "replace": "fejox" },
{ "match": "feyoy\b", "replace": "feyojx" },
{ "match": "feyoyn\b", "replace": "feyojx" },
{ "match": "^tij", "replace": "tix" },
{ "match": "^ekzij", "replace": "ekzjix" }
],
"overrides": [
{ "eo": "ok", "pl": "ohkx" }
]
}
`
tests := []struct {
Input string
Expected string
}{
{"Saluton", "saluton"},
{"Saluton.", "saluton."},
{"Saluton, kiel vi fartas?", "saluton, kijel wij fartas?"},
{"La oka numero estas ok.", "la oka numero estas ohkx."},
{"Tiel estas la mondo.", "tixel estas la mondo."},
{"Mi ricevis mesaĝon", "mij rijtsewijs mesadżon"},
{"La internacia lingvo estas tre facila.", "la ijnternatssija lijngwo estas tre fatssijla."},
{"Abcĉdefgĝhĥijĵklmnoprsŝtuŭvz", "abtsczdefgdżhchijyrzklmnoprssztułwz"},
}
transcriber := vocx.NewTranscriber()
transcriber.LoadRules(customRules)
for i, test := range tests {
t.Run(fmt.Sprintf("custom-rules-test-%d", i), func(t *testing.T) {
actual := transcriber.Transcribe(test.Input)
if actual != test.Expected {
t.Fatalf("Expected [%s], got [%s]", test.Expected, actual)
}
})
}
}