diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2008-10-21 07:00:00 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2008-10-21 07:00:00 -0700 |
commit | 54b6cfa9a9e5b861a9930af873580d6dc20f773c (patch) | |
tree | 35051494d2af230dce54d6b31c6af8fc24091316 /tools/localize/localize_test.cpp | |
download | frameworks_base-54b6cfa9a9e5b861a9930af873580d6dc20f773c.zip frameworks_base-54b6cfa9a9e5b861a9930af873580d6dc20f773c.tar.gz frameworks_base-54b6cfa9a9e5b861a9930af873580d6dc20f773c.tar.bz2 |
Initial Contribution
Diffstat (limited to 'tools/localize/localize_test.cpp')
-rw-r--r-- | tools/localize/localize_test.cpp | 219 |
1 files changed, 219 insertions, 0 deletions
diff --git a/tools/localize/localize_test.cpp b/tools/localize/localize_test.cpp new file mode 100644 index 0000000..63d904c --- /dev/null +++ b/tools/localize/localize_test.cpp @@ -0,0 +1,219 @@ +#include "XLIFFFile.h" +#include "ValuesFile.h" +#include "localize.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; +} + |