diff options
Diffstat (limited to 'tools/localize/XLIFFFile_test.cpp')
| -rw-r--r-- | tools/localize/XLIFFFile_test.cpp | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/tools/localize/XLIFFFile_test.cpp b/tools/localize/XLIFFFile_test.cpp new file mode 100644 index 0000000..52ed4c3 --- /dev/null +++ b/tools/localize/XLIFFFile_test.cpp @@ -0,0 +1,115 @@ +#include "XLIFFFile.h" +#include <stdio.h> +#include "ValuesFile.h" + +XMLNode* create_string_node(const StringResource& str, const string& name); + +static int +Parse_test() +{ + XLIFFFile* xf = XLIFFFile::Parse("testdata/xliff1.xliff"); + if (xf == NULL) { + return 1; + } + + set<StringResource> const& strings = xf->GetStringResources(); + + if (false) { + for (set<StringResource>::iterator it=strings.begin(); it!=strings.end(); it++) { + const StringResource& str = *it; + printf("STRING!!! id=%s index=%d value='%s' pos=%s file=%s version=%d(%s)\n", + str.id.c_str(), str.index, + str.value->ContentsToString(ANDROID_NAMESPACES).c_str(), + str.pos.ToString().c_str(), str.file.c_str(), str.version, + str.versionString.c_str()); + } + printf("XML:[[%s]]\n", xf->ToString().c_str()); + } + + delete xf; + return 0; +} + +static XMLNode* +add_html_tag(XMLNode* addTo, const string& tag) +{ + vector<XMLAttribute> attrs; + XMLNode* node = XMLNode::NewElement(GENERATED_POS, "", tag, attrs, XMLNode::EXACT); + addTo->EditChildren().push_back(node); + return node; +} + +static int +create_string_node_test() +{ + int err = 0; + StringResource res; + vector<XMLAttribute> attrs; + res.value = XMLNode::NewElement(GENERATED_POS, "", "something", attrs, XMLNode::EXACT); + res.value->EditChildren().push_back(XMLNode::NewText(GENERATED_POS, " begin ", XMLNode::EXACT)); + + XMLNode* child; + + child = add_html_tag(res.value, "b"); + child->EditChildren().push_back(XMLNode::NewText(GENERATED_POS, "b", XMLNode::EXACT)); + + child = add_html_tag(res.value, "i"); + child->EditChildren().push_back(XMLNode::NewText(GENERATED_POS, "i", XMLNode::EXACT)); + + child = add_html_tag(child, "b"); + child->EditChildren().push_back(XMLNode::NewText(GENERATED_POS, "b", XMLNode::EXACT)); + + child = add_html_tag(res.value, "u"); + child->EditChildren().push_back(XMLNode::NewText(GENERATED_POS, "u", XMLNode::EXACT)); + + + res.value->EditChildren().push_back(XMLNode::NewText(GENERATED_POS, " end ", XMLNode::EXACT)); + + XMLNode* xliff = create_string_node(res, "blah"); + + string oldString = res.value->ToString(XLIFF_NAMESPACES); + string newString = xliff->ToString(XLIFF_NAMESPACES); + + if (false) { + printf("OLD=\"%s\"\n", oldString.c_str()); + printf("NEW=\"%s\"\n", newString.c_str()); + } + + const char* const EXPECTED_OLD + = "<something> begin <b>b</b><i>i<b>b</b></i><u>u</u> end </something>"; + if (oldString != EXPECTED_OLD) { + fprintf(stderr, "oldString mismatch:\n"); + fprintf(stderr, " expected='%s'\n", EXPECTED_OLD); + fprintf(stderr, " actual='%s'\n", oldString.c_str()); + err |= 1; + } + + const char* const EXPECTED_NEW + = "<blah xml:space=\"preserve\"> begin <g ctype=\"bold\">b</g>" + "<g ctype=\"italic\">i<g ctype=\"bold\">b</g></g><g ctype=\"underline\">u</g>" + " end </blah>"; + if (newString != EXPECTED_NEW) { + fprintf(stderr, "newString mismatch:\n"); + fprintf(stderr, " expected='%s'\n", EXPECTED_NEW); + fprintf(stderr, " actual='%s'\n", newString.c_str()); + err |= 1; + } + + if (err != 0) { + fprintf(stderr, "create_string_node_test failed\n"); + } + return err; +} + +int +XLIFFFile_test() +{ + bool all = true; + int err = 0; + + if (all) err |= Parse_test(); + if (all) err |= create_string_node_test(); + + return err; +} + |
