xref: /haiku/src/tests/kits/locale/ICUTest.cpp (revision 1e60bdeab63fa7a57bc9a55b032052e95a18bd2c)
1 /*
2 ** Copyright 2009 Adrien Destugues, pulkomandy@gmail.com.
3 ** Distributed under the terms of the MIT License.
4 */
5 
6 
7 #include <assert.h>
8 #include <stdio.h>
9 #include <stdlib.h>
10 #include <typeinfo>
11 #include <unistd.h>
12 
13 #include <Application.h>
14 #include <StopWatch.h>
15 
16 #include <unicode/locid.h>
17 #include <unicode/strenum.h>
18 
19 
20 void TestLocale(const Locale& loc)
21 {
22 	printf("-- init\n");
23 	assert(!loc.isBogus());
24 	printf("-- basic info\n");
25 	printf("Default locale:\nLanguage: %s\nScript: %s\nVariant: %s\n"
26 		"Country: %s\nName: %s\nBaseName: %s\n", loc.getLanguage(),
27 		loc.getScript(), loc.getVariant(),
28 		loc.getCountry(), loc.getName(),
29 		loc.getBaseName());
30 
31 	UErrorCode err = U_ZERO_ERROR;
32 	printf("-- keywords\n");
33 	StringEnumeration* keywords = loc.createKeywords(err);
34 	if (err != U_ZERO_ERROR)
35 		printf("FAILED: getting keywords list\n");
36 	if (keywords == NULL)
37 		printf("FAILED: getting keywords list returned NULL\n");
38 	else {
39 		printf("Keywords: %d available\n", keywords->count(err));
40 		assert(err == U_ZERO_ERROR);
41 
42 		char keyvalue[256];
43 		while (const char* keyname = keywords->next(NULL, err)) {
44 			loc.getKeywordValue(keyname, keyvalue, 256, err);
45 			printf("%s > %s\n", keyname, keyvalue);
46 		}
47 
48 		delete keywords;
49 	}
50 }
51 
52 
53 int
54 main(int argc, char **argv)
55 {
56 	printf("--------\nDefault Locale\n--------\n");
57 	Locale defaultLocale;
58 	TestLocale(defaultLocale);
59 	printf("--------\nFrench Locale\n--------\n");
60 	Locale french = Locale::getFrench();
61 	TestLocale(french);
62 	printf("--------\nCustom Locale\n--------\n");
63 	Locale custom("es");
64 	TestLocale(custom);
65 
66 	printf("--------\nLocale listing\n--------\n");
67 	int32_t count;
68 	const Locale* localeList = Locale::getAvailableLocales(count);
69 	printf("%d locales found\n", count);
70 
71 	for (int i=0; i<count; i++) {
72 		printf("Locale number %d\n", i);
73 		TestLocale(localeList[i]);
74 	}
75 
76 	printf("--------\nLocale country codes\n--------\n");
77 	const char* const* countryTable = Locale::getISOCountries();
78 
79 	for (int i=0; countryTable[i] != NULL; i++) {
80 		if (i % 10 == 0) puts("");
81 		printf("%s\t", countryTable[i]);
82 	}
83 
84 	printf("\n--------\nNumberFormat\n--------\n");
85 	printf("--------\nDateFormat\n--------\n");
86 	printf("--------\nCollator\n--------\n");
87 
88 	return 0;
89 }
90