|
| 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