3 * Copyright (c) 2000-2012 Samsung Electronics Co., Ltd. All Rights Reserved.
5 * This file is part of msg-service.
7 * Contact: Jaeyun Jeong <jyjeong@samsung.com>
8 * Sangkoo Kim <sangkoo.kim@samsung.com>
9 * Seunghwan Lee <sh.cat.lee@samsung.com>
10 * SoonMin Jung <sm0415.jung@samsung.com>
11 * Jae-Young Lee <jy4710.lee@samsung.com>
12 * KeeBum Kim <keebum.kim@samsung.com>
14 * PROPRIETARY/CONFIDENTIAL
16 * This software is the confidential and proprietary information of
17 * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
18 * disclose such Confidential Information and shall use it only in
19 * accordance with the terms of the license agreement you entered
20 * into with SAMSUNG ELECTRONICS.
22 * SAMSUNG make no representations or warranties about the suitability
23 * of the software, either express or implied, including but not limited
24 * to the implied warranties of merchantability, fitness for a particular
25 * purpose, or non-infringement. SAMSUNG shall not be liable for any
26 * damages suffered by licensee as a result of using, modifying or
27 * distributing this software or its derivatives.
32 /*==================================================================================================
34 ==================================================================================================*/
42 #include "MsgConvertText.h"
43 #include "MsgTestConvert.h"
46 /*==================================================================================================
47 FUNCTION IMPLEMENTATION
48 ==================================================================================================*/
50 #define MAX_DUMP_COLUMN 16
51 void MsgDumpTextToHex(const unsigned char *pText, int length)
53 printf("\n\n=======================================\n");
54 printf(" Dump Text To Hex - Length :%d\n", length);
55 printf("=======================================");
57 for (int i = 0; i < length; i++ )
59 if ( i % MAX_DUMP_COLUMN == 0 )
64 printf("%02x ", pText[i]);
67 printf("\n=======================================\n\n");
71 const int MAX_TEST_BUFFER = 1000;
73 void MsgTestConvertLocaleToUTF8()
76 unsigned char localeString[MAX_TEST_BUFFER];
78 unsigned char utf8String[MAX_TEST_BUFFER];
81 cin.getline((char*)localeString, MAX_TEST_BUFFER);
83 localeStrLen = strlen((char*)localeString);
84 utf8StrLen = MsgConvertLocaleToUTF8(utf8String, MAX_TEST_BUFFER, localeString, localeStrLen);
85 if ( utf8StrLen <= 0 )
87 printf("MsgConvertLocaleToUTF8() failed. src string [%s]\n", localeString);
91 printf("=== STRING DUMP ===\n");
92 printf("src : [%s]\n", localeString);
93 printf("dst : [%s]\n", utf8String);
94 MsgDumpTextToHex(localeString, localeStrLen);
95 MsgDumpTextToHex(utf8String, utf8StrLen);
103 (hexadecimal integer for 1 byte)s
114 int MsgTestConvertReadTextFromFile(unsigned char *pStr)
122 printf("Input file name: \n");
123 scanf("%s", filename);
124 if ( (fp = fopen(filename, "r")) == NULL )
126 printf("File Open failed. file name [%s]\n", filename);
130 // read byte length of input text
131 fscanf(fp, "%d", &byteLength);
133 printf("read text from file[%s] - size:%d\n", filename, byteLength);
135 for ( i = 0; i < byteLength; i++ )
137 if ( fscanf(fp, "%x", &c) == EOF )
141 printf("Wrong Input : index[%d] value [%x]\n", i, c);
145 pStr[i] = (char)(c & 0xFF);
146 //printf("%x\n", pStr[i]);
154 void MsgTestConvertUTF8ToUCS2()
157 unsigned char utf8String[MAX_TEST_BUFFER];
159 WCHAR ucs2String[MAX_TEST_BUFFER];
161 utf8StrLen = MsgTestConvertReadTextFromFile(utf8String);
162 if ( utf8StrLen < 0 )
164 printf("Error - Read Text from File\n");
168 //ucs2StrLen = MsgConvertUTF8toUCS2(ucs2String, MAX_TEST_BUFFER, utf8String); // for null terminated utf8 string
169 ucs2StrLen = MsgConvertUTF8toUCS2((unsigned char *)ucs2String, MAX_TEST_BUFFER, utf8String, utf8StrLen);
171 printf("=== STRING DUMP ===\n");
172 printf("src: [%s]", utf8String);
173 MsgDumpTextToHex(utf8String, utf8StrLen);
174 MsgDumpTextToHex((unsigned char*)ucs2String, ucs2StrLen);
178 void MsgTestConvertUCS2ToUTF8()
181 unsigned char utf8String[MAX_TEST_BUFFER];
183 WCHAR ucs2String[MAX_TEST_BUFFER];
185 ucs2StrLen = MsgTestConvertReadTextFromFile((unsigned char*)ucs2String);
186 if ( ucs2StrLen < 0 )
188 printf("Error - Read Text from File\n");
192 utf8StrLen = MsgConvertUCS2toUTF8(utf8String, MAX_TEST_BUFFER, (unsigned char *)ucs2String, ucs2StrLen);
194 printf("=== STRING DUMP ===\n");
195 printf("dst: [%s]", utf8String);
196 MsgDumpTextToHex((unsigned char*)ucs2String, ucs2StrLen);
197 MsgDumpTextToHex(utf8String, utf8StrLen);
200 void MsgTestConvertGSM7bitToUCS2()
202 int gsm7bitStrLen = 0;
203 unsigned char gsm7bitString[MAX_TEST_BUFFER];
205 WCHAR ucs2String[MAX_TEST_BUFFER];
207 gsm7bitStrLen = MsgTestConvertReadTextFromFile(gsm7bitString);
208 if ( gsm7bitStrLen < 0 )
210 printf("Error - Read Text from File\n");
214 ucs2StrLen = MsgConvertGSM7bitToUCS2((unsigned char *)ucs2String, MAX_TEST_BUFFER, gsm7bitString, gsm7bitStrLen);
216 printf("=== STRING DUMP ===\n");
217 MsgDumpTextToHex(gsm7bitString, gsm7bitStrLen);
218 MsgDumpTextToHex((unsigned char*)ucs2String, ucs2StrLen);
221 void MsgTestConvertUCS2ToGSM7bit()
224 WCHAR ucs2String[MAX_TEST_BUFFER];
225 int gsm7bitStrLen = 0;
226 unsigned char gsm7bitString[MAX_TEST_BUFFER];
228 ucs2StrLen = MsgTestConvertReadTextFromFile((unsigned char*)ucs2String);
229 if ( ucs2StrLen < 0 )
231 printf("Error - Read Text from File\n");
235 bool bUnknown = false;
236 MSG_LANGUAGE_ID_T langId = MSG_LANG_ID_RESERVED;
237 gsm7bitStrLen = MsgConvertUCS2toGSM7bit(gsm7bitString, MAX_TEST_BUFFER, (unsigned char *)ucs2String, ucs2StrLen, &bUnknown, &langId);
239 printf("=== STRING DUMP ===");
240 MsgDumpTextToHex((unsigned char*)ucs2String, ucs2StrLen);
241 MsgDumpTextToHex(gsm7bitString, gsm7bitStrLen);
244 void MsgTestConvertGSM7BitToUTF8()
246 int gsm7bitStrLen = 0;
247 unsigned char gsm7bitString[MAX_TEST_BUFFER];
249 unsigned char utf8String[MAX_TEST_BUFFER];
251 gsm7bitStrLen = MsgTestConvertReadTextFromFile(gsm7bitString);
252 if ( gsm7bitStrLen < 0 )
254 printf("Error - Read Text from File\n");
258 memset(utf8String, 0x00, sizeof(utf8String));
259 utf8StrLen = MsgConvertGSM7bitToUTF8(utf8String, MAX_TEST_BUFFER, gsm7bitString, gsm7bitStrLen);
261 printf("=== STRING DUMP ===\n");
262 printf("dest(UTF8) : [%s]\n", utf8String);
263 MsgDumpTextToHex(gsm7bitString, gsm7bitStrLen);
264 MsgDumpTextToHex(utf8String, utf8StrLen);
267 void MsgTestConvertUTF8ToGSM7bit()
270 unsigned char utf8String[MAX_TEST_BUFFER];
271 int gsm7bitStrLen = 0;
272 unsigned char gsm7bitString[MAX_TEST_BUFFER];
274 utf8StrLen = MsgTestConvertReadTextFromFile(utf8String);
275 if ( utf8StrLen < 0 )
277 printf("Error - Read Text from File\n");
281 MSG_LANGUAGE_ID_T langId = MSG_LANG_ID_RESERVED;
282 gsm7bitStrLen = MsgConvertUTF8ToGSM7bit(gsm7bitString, MAX_TEST_BUFFER, utf8String, utf8StrLen, &langId);
284 printf("=== STRING DUMP ===\n");
285 MsgDumpTextToHex(utf8String, utf8StrLen);
286 MsgDumpTextToHex(gsm7bitString, gsm7bitStrLen);
289 void MsgTestConvertUTF8ToUCS2Key()
292 unsigned char utf8String[MAX_TEST_BUFFER];
294 WCHAR ucs2String[MAX_TEST_BUFFER];
297 cin.getline((char *)utf8String, MAX_TEST_BUFFER);
299 utf8StrLen = strlen((char *)utf8String);
301 ucs2StrLen = MsgConvertUTF8toUCS2((unsigned char *)ucs2String, MAX_TEST_BUFFER, utf8String); // for null terminated utf8 string
302 //ucs2StrLen = MsgConvertUTF8toUCS2(ucs2String, MAX_TEST_BUFFER, utf8String, utf8StrLen);
304 printf("=== STRING DUMP ===\n");
305 printf("src: [%s]", utf8String);
306 MsgDumpTextToHex(utf8String, utf8StrLen);
307 MsgDumpTextToHex((unsigned char*)ucs2String, ucs2StrLen);
311 void MsgTestConvertUTF8ToGSM7bitKey()
314 unsigned char utf8String[MAX_TEST_BUFFER];
315 int gsm7bitStrLen = 0;
316 unsigned char gsm7bitString[MAX_TEST_BUFFER];
319 cin.getline((char *)utf8String, MAX_TEST_BUFFER);
321 utf8StrLen = strlen((char *)utf8String);
323 MSG_LANGUAGE_ID_T langId = MSG_LANG_ID_RESERVED;
324 gsm7bitStrLen = MsgConvertUTF8ToGSM7bit(gsm7bitString, MAX_TEST_BUFFER, utf8String, utf8StrLen, &langId); // for null terminated utf8 string
326 printf("=== STRING DUMP ===\n");
327 MsgDumpTextToHex(utf8String, utf8StrLen);
328 MsgDumpTextToHex(gsm7bitString, gsm7bitStrLen);
332 void MsgTestConvertSelectMenu( char *pMenu)
334 int menuNum = atoi(pMenu);
340 case 1: // Locale -> UTF8
341 MsgTestConvertLocaleToUTF8();
343 case 2: // UTF-8 -> UCS2
344 MsgTestConvertUTF8ToUCS2();
346 case 3: // UCS2 -> UTF-8
347 MsgTestConvertUCS2ToUTF8();
349 case 4: // GSM 7bit -> UCS2
350 MsgTestConvertGSM7bitToUCS2();
352 case 5: // UCS2 -> GSM 7bit
353 MsgTestConvertUCS2ToGSM7bit();
355 case 6: // GSM 7bit -> UTF-8
356 MsgTestConvertGSM7BitToUTF8();
358 case 7: // UTF-8 -> GSM 7bit
359 MsgTestConvertUTF8ToGSM7bit();
362 MsgTestConvertUTF8ToUCS2Key();
365 MsgTestConvertUTF8ToGSM7bitKey();
368 printf("Invalid Menu. Select Again\n");
373 // main function for testing converting
374 MSG_ERROR_T MsgTestConvertMain()
382 printf("=======================\n");
383 printf(" Convert Test \n");
384 printf("=======================\n");
385 printf("[1] locale -> UTF8 - (Keyboard input)\n");
386 printf("[2] UTF8 -> UCS2 - (File)\n");
387 printf("[3] UCS2 -> UTF8 - (File)\n");
388 printf("[4] GSM 7bit -> UCS2 - (File)\n");
389 printf("[5] UCS2 -> GSM 7bit - (File)\n");
390 printf("[6] GSM 7bit -> UTF8 - (File)\n");
391 printf("[7] UTF8 -> GSM 7bit - (File)\n");
392 printf("[8] UTF8 -> UCS2 - (Keyboard)\n");
393 printf("[9] UTF8 -> GSM 7bit - (Keyboard)\n");
394 printf("[0] Return to Main Menu\n");
395 printf("=======================\n");
397 printf("Select Test Menu : ");
399 memset(menu, 0x00, sizeof(menu));
400 cin.getline(menu, 3);
402 MsgTestConvertSelectMenu(menu);
404 while ( strcmp(menu, "0") != 0 );