/tools/localize/localize_test.cpp
https://github.com/richardfickling/android_frameworks_base · C++ · 221 lines · 183 code · 37 blank · 1 comment · 38 complexity · 63bd74e384fa767a2ca5dfb01379bbdb MD5 · raw file
- #include <cstdio>
- #include "XLIFFFile.h"
- #include "ValuesFile.h"
- #include "localize.h"
- #include <stdio.h>
- int pseudolocalize_xliff(XLIFFFile* xliff, bool expand);
- static int
- test_filename(const string& file, const string& locale, const string& expected)
- {
- string result = translated_file_name(file, locale);
- if (result != expected) {
- fprintf(stderr, "translated_file_name test failed\n");
- fprintf(stderr, " locale='%s'\n", locale.c_str());
- fprintf(stderr, " expected='%s'\n", expected.c_str());
- fprintf(stderr, " result='%s'\n", result.c_str());
- return 1;
- } else {
- if (false) {
- fprintf(stderr, "translated_file_name test passed\n");
- fprintf(stderr, " locale='%s'\n", locale.c_str());
- fprintf(stderr, " expected='%s'\n", expected.c_str());
- fprintf(stderr, " result='%s'\n", result.c_str());
- }
- return 0;
- }
- }
- static int
- translated_file_name_test()
- {
- bool all = true;
- int err = 0;
- if (all) err |= test_filename("//device/samples/NotePad/res/values/strings.xml", "zz_ZZ",
- "//device/samples/NotePad/res/values-zz-rZZ/strings.xml");
- if (all) err |= test_filename("//device/samples/NotePad/res/values/strings.xml", "zz",
- "//device/samples/NotePad/res/values-zz/strings.xml");
- if (all) err |= test_filename("//device/samples/NotePad/res/values/strings.xml", "",
- "//device/samples/NotePad/res/values/strings.xml");
- return err;
- }
- bool
- return_false(const string&, const TransUnit& unit, void* cookie)
- {
- return false;
- }
- static int
- delete_trans_units()
- {
- XLIFFFile* xliff = XLIFFFile::Parse("testdata/strip_xliff.xliff");
- if (xliff == NULL) {
- printf("couldn't read file\n");
- return 1;
- }
- if (false) {
- printf("XLIFF was [[%s]]\n", xliff->ToString().c_str());
- }
- xliff->Filter(return_false, NULL);
- if (false) {
- printf("XLIFF is [[%s]]\n", xliff->ToString().c_str());
- set<StringResource> const& strings = xliff->GetStringResources();
- printf("strings.size=%zd\n", strings.size());
- for (set<StringResource>::iterator it=strings.begin(); it!=strings.end(); it++) {
- const StringResource& str = *it;
- printf("STRING!!! id=%s value='%s' pos=%s file=%s version=%d(%s)\n", str.id.c_str(),
- str.value->ContentsToString(ANDROID_NAMESPACES).c_str(),
- str.pos.ToString().c_str(), str.file.c_str(), str.version,
- str.versionString.c_str());
- }
- }
-
- return 0;
- }
- static int
- filter_trans_units()
- {
- XLIFFFile* xliff = XLIFFFile::Parse("testdata/strip_xliff.xliff");
- if (xliff == NULL) {
- printf("couldn't read file\n");
- return 1;
- }
- if (false) {
- printf("XLIFF was [[%s]]\n", xliff->ToString().c_str());
- }
- Settings setting;
- xliff->Filter(keep_this_trans_unit, &setting);
- if (false) {
- printf("XLIFF is [[%s]]\n", xliff->ToString().c_str());
- set<StringResource> const& strings = xliff->GetStringResources();
- printf("strings.size=%zd\n", strings.size());
- for (set<StringResource>::iterator it=strings.begin(); it!=strings.end(); it++) {
- const StringResource& str = *it;
- printf("STRING!!! id=%s value='%s' pos=%s file=%s version=%d(%s)\n", str.id.c_str(),
- str.value->ContentsToString(ANDROID_NAMESPACES).c_str(),
- str.pos.ToString().c_str(), str.file.c_str(), str.version,
- str.versionString.c_str());
- }
- }
-
- return 0;
- }
- static int
- settings_test()
- {
- int err;
- map<string,Settings> settings;
- map<string,Settings>::iterator it;
- err = read_settings("testdata/config.xml", &settings, "//asdf");
- if (err != 0) {
- return err;
- }
- if (false) {
- for (it=settings.begin(); it!=settings.end(); it++) {
- const Settings& setting = it->second;
- printf("CONFIG:\n");
- printf(" id='%s'\n", setting.id.c_str());
- printf(" oldVersion='%s'\n", setting.oldVersion.c_str());
- printf(" currentVersion='%s'\n", setting.currentVersion.c_str());
- int i=0;
- for (vector<string>::const_iterator app=setting.apps.begin();
- app!=setting.apps.end(); app++) {
- printf(" apps[%02d]='%s'\n", i, app->c_str());
- i++;
- }
- i=0;
- for (vector<Reject>::const_iterator reject=setting.reject.begin();
- reject!=setting.reject.end(); reject++) {
- i++;
- printf(" reject[%02d]=('%s','%s','%s')\n", i, reject->file.c_str(),
- reject->name.c_str(), reject->comment.c_str());
- }
- }
- }
- for (it=settings.begin(); it!=settings.end(); it++) {
- const Settings& setting = it->second;
- if (it->first != setting.id) {
- fprintf(stderr, "it->first='%s' setting.id='%s'\n", it->first.c_str(),
- setting.id.c_str());
- err |= 1;
- }
- }
- return err;
- }
- static int
- test_one_pseudo(bool big, const char* expected)
- {
- XLIFFFile* xliff = XLIFFFile::Parse("testdata/pseudo.xliff");
- if (xliff == NULL) {
- printf("couldn't read file\n");
- return 1;
- }
- if (false) {
- printf("XLIFF was [[%s]]\n", xliff->ToString().c_str());
- }
- pseudolocalize_xliff(xliff, big);
- string newString = xliff->ToString();
- delete xliff;
- if (false) {
- printf("XLIFF is [[%s]]\n", newString.c_str());
- }
- if (false && newString != expected) {
- fprintf(stderr, "xliff didn't translate as expected\n");
- fprintf(stderr, "newString=[[%s]]\n", newString.c_str());
- fprintf(stderr, "expected=[[%s]]\n", expected);
- return 1;
- }
- return 0;
- }
- static int
- pseudolocalize_test()
- {
- int err = 0;
-
- err |= test_one_pseudo(false, "");
- //err |= test_one_pseudo(true, "");
- return err;
- }
- int
- localize_test()
- {
- bool all = true;
- int err = 0;
- if (all) err |= translated_file_name_test();
- if (all) err |= delete_trans_units();
- if (all) err |= filter_trans_units();
- if (all) err |= settings_test();
- if (all) err |= pseudolocalize_test();
- return err;
- }