19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "ValuesFile.h" 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <stdio.h> 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectint 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectValuesFile_test() 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int err = 0; 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Configuration config; 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project config.locale = "zz_ZZ"; 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ValuesFile* vf = ValuesFile::ParseFile("testdata/values/strings.xml", config, 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project OLD_VERSION, "1"); 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const set<StringResource>& strings = vf->GetStrings(); 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string canonical = vf->ToString(); 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (false) { 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project printf("Strings (%zd)\n", strings.size()); 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (set<StringResource>::const_iterator it=strings.begin(); 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project it!=strings.end(); it++) { 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const StringResource& str = *it; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project printf("%s: '%s'[%d]='%s' (%s) <!-- %s -->\n", str.pos.ToString().c_str(), 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project str.id.c_str(), str.index, 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project str.value->ContentsToString(ANDROID_NAMESPACES).c_str(), 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project str.config.ToString().c_str(), str.comment.c_str()); 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project printf("XML:[[%s]]\n", canonical.c_str()); 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const char * const EXPECTED = 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "<resources xmlns:android=\"http://schemas.android.com/apk/res/android\"\n" 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " xmlns:xliff=\"urn:oasis:names:tc:xliff:document:1.2\">\n" 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " <array name=\"emailAddressTypes\">\n" 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " <item>Email</item>\n" 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " <item>Home</item>\n" 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " <item>Work</item>\n" 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " <item>Other\\u2026</item>\n" 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " </array>\n" 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " <string name=\"test1\">Discard</string>\n" 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " <string name=\"test2\">a<b>b<i>c</i></b>d</string>\n" 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " <string name=\"test3\">a<xliff:g a=\"b\" xliff:a=\"asdf\">bBb</xliff:g>C</string>\n" 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "</resources>\n"; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (canonical != EXPECTED) { 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "ValuesFile_test failed\n"); 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "canonical=[[%s]]\n", canonical.c_str()); 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "EXPECTED=[[%s]]\n", EXPECTED); 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project err = 1; 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project delete vf; 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return err; 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 55