Skip to content

Commit f3b0600

Browse files
committed
Refactor: Token Counter 테스트 코드 분리 작업
1 parent 63403d0 commit f3b0600

File tree

3 files changed

+107
-96
lines changed

3 files changed

+107
-96
lines changed

src/components/designer/es-modeling/testTerminals/EventStormingTestTerminal.vue

Lines changed: 2 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import ESValueSummarizeWithFilterUtil from "../../modeling/generators/es-ddl-gen
77
import ESAliasTransManager from "../../modeling/generators/es-ddl-generators/modules/ESAliasTransManager"
88
import DraftGeneratorByFunctions from "../../modeling/generators/es-ddl-generators/DraftGeneratorByFunctions";
99
import ESActionsUtil from "../../modeling/generators/es-ddl-generators/modules/ESActionsUtil";
10-
import { TokenCounter } from "../../modeling/generators/utils";
10+
import TokenCounterTest from "../../modeling/generators/utils/TokenCounter/test";
1111

1212
export default {
1313
name: "es-test-terminal",
@@ -1037,101 +1037,7 @@ export default {
10371037
},
10381038

10391039
_TokenCounterTest() {
1040-
console.log("=== TokenCounter 테스트 시작 ===\n");
1041-
1042-
// 테스트용 샘플 텍스트
1043-
const testTexts = [
1044-
"안녕하세요. 즐거운 하루입니다.",
1045-
"Hello World! This is a test message.",
1046-
JSON.stringify({"key": "value", "test": 123}),
1047-
"🎉 이모지와 특수문자 !@#$ 테스트"
1048-
];
1049-
1050-
// 1. getTokenCount 테스트
1051-
console.log("1. getTokenCount 테스트");
1052-
testTexts.forEach((text, index) => {
1053-
console.log(`텍스트 ${index + 1} 토큰 수:`, TokenCounter.getTokenCount(text, "gpt-4o"));
1054-
console.log(`테스트 텍스트: ${text}\n`);
1055-
});
1056-
1057-
// 2. getTotalTokenCount 테스트
1058-
console.log("2. getTotalTokenCount 테스트");
1059-
const totalTokens = TokenCounter.getTotalTokenCount(testTexts, "gpt-4o");
1060-
console.log(`전체 텍스트의 총 토큰 수: ${totalTokens}\n`);
1061-
1062-
// 3. isWithinTokenLimit 테스트
1063-
console.log("3. isWithinTokenLimit 테스트");
1064-
const tokenLimit = 20;
1065-
testTexts.forEach((text, index) => {
1066-
console.log(`텍스트 ${index + 1}이 ${tokenLimit} 토큰 제한 내 여부:`,
1067-
TokenCounter.isWithinTokenLimit(text, "gpt-4o", tokenLimit));
1068-
});
1069-
console.log();
1070-
1071-
// 4. splitByTokenLimit 테스트
1072-
console.log("4. splitByTokenLimit 테스트");
1073-
const longText = testTexts.join(" ");
1074-
1075-
console.log("4.1 기본 분할 테스트 (overlap 없음)");
1076-
const chunks = TokenCounter.splitByTokenLimit(longText, "gpt-4o", 10);
1077-
chunks.forEach((chunk, index) => {
1078-
console.log(`청크 ${index + 1}:`, chunk);
1079-
});
1080-
1081-
console.log("\n4.2 overlap 적용 테스트");
1082-
const chunksWithOverlap = TokenCounter.splitByTokenLimit(longText, "gpt-4o", 10, 3);
1083-
chunksWithOverlap.forEach((chunk, index) => {
1084-
console.log(`청크 ${index + 1}:`, chunk);
1085-
});
1086-
1087-
try {
1088-
console.log("\n4.3 잘못된 overlap 테스트");
1089-
TokenCounter.splitByTokenLimit(longText, "gpt-4o", 10, 10);
1090-
} catch (error) {
1091-
console.log("예상된 에러 발생:", error.message);
1092-
}
1093-
console.log();
1094-
1095-
// 5. truncateToTokenLimit 테스트
1096-
console.log("5. truncateToTokenLimit 테스트");
1097-
1098-
console.log("5.1 기본 truncate 테스트");
1099-
const truncated = TokenCounter.truncateToTokenLimit(longText, "gpt-4o", 15);
1100-
console.log("15 토큰으로 제한된 텍스트:", truncated);
1101-
1102-
console.log("\n5.2 옵션 조합 테스트");
1103-
const optionsCombinations = [
1104-
{ addEllipsis: false, preserveSentences: false, debug: true },
1105-
{ addEllipsis: true, preserveSentences: false, debug: true },
1106-
{ addEllipsis: false, preserveSentences: true, debug: true },
1107-
{ addEllipsis: true, preserveSentences: true, debug: true }
1108-
];
1109-
1110-
optionsCombinations.forEach((options, index) => {
1111-
console.log(`\n옵션 조합 ${index + 1}:`, options);
1112-
const result = TokenCounter.truncateToTokenLimit(
1113-
"첫 번째 문장입니다. 두 번째 문장이에요! 세 번째 문장입니다.",
1114-
"gpt-4o",
1115-
15,
1116-
options
1117-
);
1118-
console.log("결과:", result);
1119-
});
1120-
1121-
try {
1122-
console.log("\n5.3 유효성 검사 테스트");
1123-
TokenCounter.truncateToTokenLimit("", "gpt-4o", 15);
1124-
} catch (error) {
1125-
console.log("빈 문자열 에러:", error.message);
1126-
}
1127-
1128-
try {
1129-
TokenCounter.truncateToTokenLimit("테스트", "gpt-4o", 0);
1130-
} catch (error) {
1131-
console.log("잘못된 maxTokens 에러:", error.message);
1132-
}
1133-
1134-
console.log("\n=== TokenCounter 테스트 완료 ===");
1040+
TokenCounterTest.test()
11351041
},
11361042

11371043
_ESSummaryGeneratorTest() {
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
export const sentence = "첫 번째 문장입니다. 두 번째 문장이에요! 세 번째 문장입니다."
2+
3+
export const sentences = [
4+
"안녕하세요. 즐거운 하루입니다.",
5+
"Hello World! This is a test message.",
6+
JSON.stringify({"key": "value", "test": 123}),
7+
"🎉 이모지와 특수문자 !@#$ 테스트"
8+
]
9+
export const longText = sentences.join(" ");
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
const { TokenCounter } = require("..");
2+
const { sentences, sentence, longText } = require("./mock");
3+
4+
class TokenCounterTest {
5+
static test() {
6+
console.log("=== TokenCounter 테스트 시작 ===\n");
7+
8+
9+
// 1. getTokenCount 테스트
10+
console.log("1. getTokenCount 테스트");
11+
sentences.forEach((text, index) => {
12+
console.log(`텍스트 ${index + 1} 토큰 수:`, TokenCounter.getTokenCount(text, "gpt-4o"));
13+
console.log(`테스트 텍스트: ${text}\n`);
14+
});
15+
16+
17+
// 2. getTotalTokenCount 테스트
18+
console.log("2. getTotalTokenCount 테스트");
19+
const totalTokens = TokenCounter.getTotalTokenCount(sentences, "gpt-4o");
20+
console.log(`전체 텍스트의 총 토큰 수: ${totalTokens}\n`);
21+
22+
23+
// 3. isWithinTokenLimit 테스트
24+
console.log("3. isWithinTokenLimit 테스트");
25+
const tokenLimit = 10;
26+
sentences.forEach((text, index) => {
27+
console.log(`텍스트 ${index + 1}${tokenLimit} 토큰 제한 내 여부:`,
28+
TokenCounter.isWithinTokenLimit(text, "gpt-4o", tokenLimit));
29+
});
30+
console.log();
31+
32+
33+
// 4. splitByTokenLimit 테스트
34+
console.log("4. splitByTokenLimit 테스트");
35+
console.log("4.1 기본 분할 테스트 (overlap 없음)");
36+
const chunks = TokenCounter.splitByTokenLimit(longText, "gpt-4o", 10);
37+
chunks.forEach((chunk, index) => {
38+
console.log(`청크 ${index + 1}:`, chunk);
39+
});
40+
41+
console.log("\n4.2 overlap 적용 테스트");
42+
const chunksWithOverlap = TokenCounter.splitByTokenLimit(longText, "gpt-4o", 10, 3);
43+
chunksWithOverlap.forEach((chunk, index) => {
44+
console.log(`청크 ${index + 1}:`, chunk);
45+
});
46+
47+
try {
48+
console.log("\n4.3 잘못된 overlap 테스트");
49+
TokenCounter.splitByTokenLimit(longText, "gpt-4o", 10, 10);
50+
} catch (error) {
51+
console.log("예상된 에러 발생:", error.message);
52+
}
53+
console.log();
54+
55+
56+
// 5. truncateToTokenLimit 테스트
57+
console.log("5. truncateToTokenLimit 테스트");
58+
59+
console.log("5.1 기본 truncate 테스트");
60+
const truncated = TokenCounter.truncateToTokenLimit(longText, "gpt-4o", 15);
61+
console.log("15 토큰으로 제한된 텍스트:", truncated);
62+
63+
console.log("\n5.2 옵션 조합 테스트");
64+
const optionsCombinations = [
65+
{ addEllipsis: false, preserveSentences: false, debug: true },
66+
{ addEllipsis: true, preserveSentences: false, debug: true },
67+
{ addEllipsis: false, preserveSentences: true, debug: true },
68+
{ addEllipsis: true, preserveSentences: true, debug: true }
69+
];
70+
71+
optionsCombinations.forEach((options, index) => {
72+
console.log(`\n옵션 조합 ${index + 1}:`, options);
73+
const result = TokenCounter.truncateToTokenLimit(
74+
sentence, "gpt-4o", 15, options
75+
);
76+
console.log("결과:", result);
77+
});
78+
79+
try {
80+
console.log("\n5.3 유효성 검사 테스트");
81+
TokenCounter.truncateToTokenLimit("", "gpt-4o", 15);
82+
} catch (error) {
83+
console.log("빈 문자열 에러:", error.message);
84+
}
85+
86+
try {
87+
TokenCounter.truncateToTokenLimit(sentence, "gpt-4o", 0);
88+
} catch (error) {
89+
console.log("잘못된 maxTokens 에러:", error.message);
90+
}
91+
92+
console.log("\n=== TokenCounter 테스트 완료 ===");
93+
}
94+
}
95+
96+
module.exports = TokenCounterTest;

0 commit comments

Comments
 (0)