Skip to content

Commit ee53572

Browse files
committed
feat: lang/ko
1 parent 05c8f6f commit ee53572

File tree

2 files changed

+545
-0
lines changed

2 files changed

+545
-0
lines changed

langs/ko/template.test.ts

Lines changed: 315 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,315 @@
1+
import { assertEquals } from "@std/assert/assert-equals";
2+
import { jongseong, template } from "./template.ts";
3+
4+
Deno.test("template, jongseong hangul", () => {
5+
assertEquals(jongseong("가(각)"), 0); // ignore paren
6+
7+
assertEquals(jongseong("가"), 0);
8+
assertEquals(jongseong("납"), 17);
9+
assertEquals(jongseong("닿"), 27);
10+
assertEquals(jongseong("힣"), 27);
11+
});
12+
13+
Deno.test("template, jongseong number", () => {
14+
assertEquals(jongseong("0"), jongseong("영"));
15+
assertEquals(jongseong("1"), jongseong("일"));
16+
assertEquals(jongseong("2"), jongseong("이"));
17+
assertEquals(jongseong("3"), jongseong("삼"));
18+
assertEquals(jongseong("4"), jongseong("사"));
19+
assertEquals(jongseong("5"), jongseong("오"));
20+
assertEquals(jongseong("6"), jongseong("육"));
21+
assertEquals(jongseong("7"), jongseong("칠"));
22+
assertEquals(jongseong("8"), jongseong("팔"));
23+
assertEquals(jongseong("9"), jongseong("구"));
24+
25+
assertEquals(jongseong("00"), jongseong("영"));
26+
});
27+
28+
Deno.test("template, jongseong number with zeros", () => {
29+
assertEquals(jongseong("10"), jongseong("십"));
30+
assertEquals(jongseong("100"), jongseong("백"));
31+
assertEquals(jongseong("1000"), jongseong("천"));
32+
assertEquals(jongseong("10000"), jongseong("만"));
33+
assertEquals(jongseong("100000000"), jongseong("억"));
34+
assertEquals(jongseong("1000000000000"), jongseong("조"));
35+
assertEquals(jongseong("10000000000000000"), jongseong("경"));
36+
assertEquals(jongseong("100000000000000000000"), jongseong("해"));
37+
});
38+
39+
Deno.test("template, jongseong english word", () => {
40+
assertEquals(jongseong("job"), jongseong("잡"));
41+
assertEquals(jongseong("public"), jongseong("퍼블릭"));
42+
assertEquals(jongseong("good"), jongseong("굿"));
43+
assertEquals(jongseong("check"), jongseong("첵"));
44+
assertEquals(jongseong("signal"), jongseong("시그널"));
45+
assertEquals(jongseong("bottom"), jongseong("바텀"));
46+
assertEquals(jongseong("vision"), jongseong("비전"));
47+
assertEquals(jongseong("group"), jongseong("그룹"));
48+
assertEquals(jongseong("yet"), jongseong("옛"));
49+
50+
assertEquals(jongseong("fine"), jongseong("파인"));
51+
assertEquals(jongseong("scale"), jongseong("스케일"));
52+
assertEquals(jongseong("song"), jongseong("송"));
53+
54+
assertEquals(jongseong("coffee"), jongseong("커피"));
55+
});
56+
57+
Deno.test("template, jongseong english character", () => {
58+
assertEquals(jongseong("l"), jongseong("엘"));
59+
assertEquals(jongseong("r"), jongseong("알"));
60+
assertEquals(jongseong("m"), jongseong("엠"));
61+
assertEquals(jongseong("n"), jongseong("엔"));
62+
assertEquals(jongseong("x"), jongseong("엑스"));
63+
64+
assertEquals(jongseong("L"), jongseong("엘"));
65+
assertEquals(jongseong("R"), jongseong("알"));
66+
assertEquals(jongseong("M"), jongseong("엠"));
67+
assertEquals(jongseong("N"), jongseong("엔"));
68+
assertEquals(jongseong("X"), jongseong("엑스"));
69+
});
70+
71+
Deno.test("template, jongseong random word", () => {
72+
assertEquals(jongseong("서울"), 8);
73+
assertEquals(jongseong("서울 "), 8);
74+
assertEquals(jongseong("서울!"), 8);
75+
76+
assertEquals(jongseong("완두"), 0);
77+
assertEquals(jongseong("완두 "), 0);
78+
assertEquals(jongseong("완두!!!"), 0);
79+
80+
assertEquals(jongseong("!@#"), 0);
81+
});
82+
83+
Deno.test("template, template empty", () => {
84+
assertEquals(template``, "");
85+
});
86+
87+
Deno.test("template, template 은/는", () => {
88+
assertEquals(template`${"완두"}는 코딩을 합니다.`, "완두는 코딩을 합니다.");
89+
assertEquals(template`${"완두"}은 코딩을 합니다.`, "완두는 코딩을 합니다.");
90+
91+
assertEquals(template`${"완삼"}는 코딩을 합니다.`, "완삼은 코딩을 합니다.");
92+
assertEquals(template`${"완삼"}은 코딩을 합니다.`, "완삼은 코딩을 합니다.");
93+
});
94+
95+
Deno.test("template, template 이/가", () => {
96+
assertEquals(
97+
template`${"완두"}가 코딩을 했습니다.`,
98+
"완두가 코딩을 했습니다.",
99+
);
100+
assertEquals(
101+
template`${"완두"}이 코딩을 했습니다.`,
102+
"완두가 코딩을 했습니다.",
103+
);
104+
105+
assertEquals(
106+
template`${"완삼"}가 코딩을 했습니다.`,
107+
"완삼이 코딩을 했습니다.",
108+
);
109+
assertEquals(
110+
template`${"완삼"}이 코딩을 했습니다.`,
111+
"완삼이 코딩을 했습니다.",
112+
);
113+
});
114+
115+
Deno.test("template, template 을/를", () => {
116+
assertEquals(template`${"완두"}을 가르쳤습니다.`, "완두를 가르쳤습니다.");
117+
assertEquals(template`${"완두"}를 가르쳤습니다.`, "완두를 가르쳤습니다.");
118+
119+
assertEquals(template`${"완삼"}을 가르쳤습니다.`, "완삼을 가르쳤습니다.");
120+
assertEquals(template`${"완삼"}를 가르쳤습니다.`, "완삼을 가르쳤습니다.");
121+
});
122+
123+
Deno.test("template, template 과/와", () => {
124+
assertEquals(
125+
template`${"완두"}과 코딩을 했습니다.`,
126+
"완두와 코딩을 했습니다.",
127+
);
128+
assertEquals(
129+
template`${"완두"}와 코딩을 했습니다.`,
130+
"완두와 코딩을 했습니다.",
131+
);
132+
133+
assertEquals(
134+
template`${"완삼"}과 코딩을 했습니다.`,
135+
"완삼과 코딩을 했습니다.",
136+
);
137+
assertEquals(
138+
template`${"완삼"}와 코딩을 했습니다.`,
139+
"완삼과 코딩을 했습니다.",
140+
);
141+
});
142+
143+
Deno.test("template, template 아/야", () => {
144+
assertEquals(template`${"완두"}아!`, "완두야!");
145+
assertEquals(template`${"완두"}야!`, "완두야!");
146+
147+
assertEquals(template`${"완삼"}아!`, "완삼아!");
148+
// assertEquals(text`${"완삼"}야!`, "완삼아!"); -> 이야/야 규칙이 우선
149+
});
150+
151+
// 2글자 가나다순
152+
153+
Deno.test("template, template 이나/나", () => {
154+
assertEquals(template`${"완두"}이나..`, "완두나..");
155+
assertEquals(template`${"완두"}나..`, "완두나..");
156+
157+
assertEquals(template`${"완삼"}이나..`, "완삼이나..");
158+
assertEquals(template`${"완삼"}나..`, "완삼이나..");
159+
});
160+
161+
Deno.test("template, template 이다/다", () => {
162+
assertEquals(template`${"완두"}이다!!`, "완두다!!");
163+
assertEquals(template`${"완두"}다!!`, "완두다!!");
164+
165+
assertEquals(template`${"완삼"}이다!!`, "완삼이다!!");
166+
assertEquals(template`${"완삼"}다!!`, "완삼이다!!");
167+
});
168+
169+
Deno.test("template, template 이든/든", () => {
170+
assertEquals(template`${"완두"}이든..`, "완두든..");
171+
assertEquals(template`${"완두"}든..`, "완두든..");
172+
173+
assertEquals(template`${"완삼"}이든..`, "완삼이든..");
174+
assertEquals(template`${"완삼"}든..`, "완삼이든..");
175+
});
176+
177+
Deno.test("template, template 이라/라", () => {
178+
assertEquals(template`${"완두"}이라니!!`, "완두라니!!");
179+
assertEquals(template`${"완두"}라니!!`, "완두라니!!");
180+
181+
assertEquals(template`${"완삼"}이라니!!`, "완삼이라니!!");
182+
assertEquals(template`${"완삼"}라니!!`, "완삼이라니!!");
183+
});
184+
185+
Deno.test("template, template 이란/란", () => {
186+
assertEquals(template`${"완두"}이란..`, "완두란..");
187+
assertEquals(template`${"완두"}란..`, "완두란..");
188+
189+
assertEquals(template`${"완삼"}이란..`, "완삼이란..");
190+
assertEquals(template`${"완삼"}란..`, "완삼이란..");
191+
});
192+
193+
Deno.test("template, template 이랑/랑", () => {
194+
assertEquals(template`${"완두"}이랑!`, "완두랑!");
195+
assertEquals(template`${"완두"}랑!`, "완두랑!");
196+
197+
assertEquals(template`${"완삼"}이랑!`, "완삼이랑!");
198+
assertEquals(template`${"완삼"}랑!`, "완삼이랑!");
199+
});
200+
201+
Deno.test("template, template 으로/로", () => {
202+
assertEquals(template`${"대구"}으로 갑시다.`, "대구로 갑시다.");
203+
assertEquals(template`${"대구"}로 갑시다.`, "대구로 갑시다.");
204+
205+
assertEquals(template`${"부산"}으로 갑시다.`, "부산으로 갑시다.");
206+
assertEquals(template`${"부산"}로 갑시다.`, "부산으로 갑시다.");
207+
208+
// ㄹ 탈락
209+
assertEquals(template`${"서울"}으로 갑시다.`, "서울로 갑시다.");
210+
assertEquals(template`${"서울"}로 갑시다.`, "서울로 갑시다.");
211+
});
212+
213+
Deno.test("template, template 이며/며", () => {
214+
assertEquals(template`${"완두"}이며,`, "완두며,");
215+
assertEquals(template`${"완두"}며,`, "완두며,");
216+
217+
assertEquals(template`${"완삼"}이며,`, "완삼이며,");
218+
assertEquals(template`${"완삼"}며,`, "완삼이며,");
219+
});
220+
221+
Deno.test("template, template 이셨/셨", () => {
222+
assertEquals(template`${"완두"}이셨어!`, "완두셨어!");
223+
assertEquals(template`${"완두"}셨어!`, "완두셨어!");
224+
225+
assertEquals(template`${"완삼"}이셨어!`, "완삼이셨어!");
226+
assertEquals(template`${"완삼"}셨어!`, "완삼이셨어!");
227+
228+
assertEquals(template`${"완두"}이셨구나!`, "완두셨구나!");
229+
assertEquals(template`${"완두"}셨구나!`, "완두셨구나!");
230+
231+
assertEquals(template`${"완삼"}이셨구나!`, "완삼이셨구나!");
232+
assertEquals(template`${"완삼"}셨구나!`, "완삼이셨구나!");
233+
});
234+
235+
Deno.test("template, template 이시/시", () => {
236+
assertEquals(template`${"완두"}이시여!`, "완두시여!");
237+
assertEquals(template`${"완두"}시여!`, "완두시여!");
238+
239+
assertEquals(template`${"완삼"}이시여!`, "완삼이시여!");
240+
assertEquals(template`${"완삼"}시여!`, "완삼이시여!");
241+
242+
assertEquals(template`${"완두"}이시구나!`, "완두시구나!");
243+
assertEquals(template`${"완두"}시구나!`, "완두시구나!");
244+
245+
assertEquals(template`${"완삼"}이시구나!`, "완삼이시구나!");
246+
assertEquals(template`${"완삼"}시구나!`, "완삼이시구나!");
247+
});
248+
249+
Deno.test("template, template 이야/야", () => {
250+
assertEquals(template`역시, ${"완두"}이야!`, "역시, 완두야!");
251+
assertEquals(template`역시, ${"완두"}야!`, "역시, 완두야!");
252+
253+
assertEquals(template`역시, ${"완삼"}이야!`, "역시, 완삼이야!");
254+
assertEquals(template`역시, ${"완삼"}야!`, "역시, 완삼이야!");
255+
});
256+
257+
Deno.test("template, template 이여/여", () => {
258+
assertEquals(template`${"완두"}이여!`, "완두여!");
259+
assertEquals(template`${"완두"}여!`, "완두여!");
260+
261+
assertEquals(template`${"완삼"}이여!`, "완삼이여!");
262+
assertEquals(template`${"완삼"}여!`, "완삼이여!");
263+
});
264+
265+
Deno.test("template, template 이었/였", () => {
266+
assertEquals(template`${"완두"}이었어요.`, "완두였어요.");
267+
assertEquals(template`${"완두"}였어요.`, "완두였어요.");
268+
269+
assertEquals(template`${"완삼"}이었어요.`, "완삼이었어요.");
270+
assertEquals(template`${"완삼"}였어요.`, "완삼이었어요.");
271+
});
272+
273+
// 3글자
274+
Deno.test("template, template 이어요/여요", () => {
275+
assertEquals(template`${"완두"}이어요.`, "완두여요.");
276+
assertEquals(template`${"완두"}여요.`, "완두여요.");
277+
278+
assertEquals(template`${"완삼"}이어요.`, "완삼이어요.");
279+
assertEquals(template`${"완삼"}여요.`, "완삼이어요.");
280+
});
281+
282+
Deno.test("template, template 이에요/예요", () => {
283+
assertEquals(template`${"완두"}이에요.`, "완두예요.");
284+
assertEquals(template`${"완두"}예요.`, "완두예요.");
285+
286+
assertEquals(template`${"완삼"}이에요.`, "완삼이에요.");
287+
assertEquals(template`${"완삼"}예요.`, "완삼이에요.");
288+
});
289+
290+
Deno.test("template, template digit", () => {
291+
assertEquals(template`정답은 ${"100"}과 같다.`, "정답은 100과 같다.");
292+
assertEquals(template`정답은 ${"100"}와 같다.`, "정답은 100과 같다.");
293+
294+
assertEquals(template`정답은 ${"72"}과 같다.`, "정답은 72와 같다.");
295+
assertEquals(template`정답은 ${"72"}와 같다.`, "정답은 72와 같다.");
296+
});
297+
298+
Deno.test("template, template english words", () => {
299+
assertEquals(template`${"Apple"}는 코딩 합니다.`, "Apple은 코딩 합니다.");
300+
assertEquals(template`${"Apple"}은 코딩 합니다.`, "Apple은 코딩 합니다.");
301+
302+
assertEquals(template`${"Banana"}는 코딩 합니다.`, "Banana는 코딩 합니다.");
303+
assertEquals(template`${"Banana"}은 코딩 합니다.`, "Banana는 코딩 합니다.");
304+
});
305+
306+
Deno.test("template, template with paren", () => {
307+
assertEquals(
308+
template`${"코코넛(바나나)"}은 코딩 합니다.`,
309+
"코코넛(바나나)은 코딩 합니다.",
310+
);
311+
assertEquals(
312+
template`${"코코넛(바나나)"}는 코딩 합니다.`,
313+
"코코넛(바나나)은 코딩 합니다.",
314+
);
315+
});

0 commit comments

Comments
 (0)