-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain_test.ts
70 lines (64 loc) · 2.67 KB
/
main_test.ts
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
import { assertNotEquals } from "https://deno.land/[email protected]/assert/mod.ts";
import { mergeDiff, getAccentPhrases } from "./main.ts";
import pluck from "https://esm.sh/v132/[email protected]";
import { assertEquals } from "https://deno.land/[email protected]/assert/assert_equals.ts";
function getMoraText(AccentPhrases: any) {
const target: any[] = [];
AccentPhrases.forEach((Phrase: any) => {
for (const mora of Phrase) {
target.push(mora.text);
}
});
return target;
}
async function comprehensiveTest(beforestring: string, afterstring: string) {
const beforeAccents = await getAccentPhrases(beforestring);
const afterAccents = await getAccentPhrases(afterstring);
// morasからmoras.textで構成される文字列を生成する
const afterMoras = pluck(JSON.parse(JSON.stringify(afterAccents)), "moras");
const mergeAccent = mergeDiff(beforeAccents, afterAccents);
// morasからmoras.textで構成される文字列を生成する
const mergeMoras = pluck(JSON.parse(JSON.stringify(mergeAccent)), "moras");
const AfterMorasText = getMoraText(afterMoras).join("");
const mergeMorasText = getMoraText(mergeMoras).join("");
if (AfterMorasText === mergeMorasText && AfterMorasText === afterstring)
// マージ前のアクセントデータ(AfterAccent)とマージ後のアクセントデータを比較して
//一致していなければbeforeAccentも適用されていると解釈してテストに合格
assertNotEquals(
mergeAccent,
afterAccents,
"もし、文字列が変わっていない場合、このテストはエラーになります"
);
else {
assertEquals(mergeMorasText, AfterMorasText, "文字列が違います");
}
}
Deno.test(
"変更操作 (マージされたアクセントが正確に変更されているか検証しない)",
async () => {
await comprehensiveTest("こんにちは", "こんばんは");
await comprehensiveTest(
"ディープラーニングは万能薬ではありません",
"ディープラーニングは鎮痛剤です"
);
}
);
Deno.test(
"追加操作 (マージされたアクセントが正確に変更されているか検証しない)",
async () => {
await comprehensiveTest("こんにちは", "こんにちは、ずんだもんです");
await comprehensiveTest(
"こんにちは",
"こんにちは、私はずんだもんではありません。桜田門です"
);
}
);
Deno.test(
"削除操作 (マージされたアクセントが正確に変更されているか検証しない)",
async () => {
await comprehensiveTest(
"こんにちは、ずんだもんです",
"こんにちは、ずんだです"
);
}
);