| #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; |
| } |
| |