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