1 #include "XLIFFFile.h" 2 #include <stdio.h> 3 #include "ValuesFile.h" 4 5 XMLNode* create_string_node(const StringResource& str, const string& name); 6 7 static int 8 Parse_test() 9 { 10 XLIFFFile* xf = XLIFFFile::Parse("testdata/xliff1.xliff"); 11 if (xf == NULL) { 12 return 1; 13 } 14 15 set<StringResource> const& strings = xf->GetStringResources(); 16 17 if (false) { 18 for (set<StringResource>::iterator it=strings.begin(); it!=strings.end(); it++) { 19 const StringResource& str = *it; 20 printf("STRING!!! id=%s index=%d value='%s' pos=%s file=%s version=%d(%s)\n", 21 str.id.c_str(), str.index, 22 str.value->ContentsToString(ANDROID_NAMESPACES).c_str(), 23 str.pos.ToString().c_str(), str.file.c_str(), str.version, 24 str.versionString.c_str()); 25 } 26 printf("XML:[[%s]]\n", xf->ToString().c_str()); 27 } 28 29 delete xf; 30 return 0; 31 } 32 33 static XMLNode* 34 add_html_tag(XMLNode* addTo, const string& tag) 35 { 36 vector<XMLAttribute> attrs; 37 XMLNode* node = XMLNode::NewElement(GENERATED_POS, "", tag, attrs, XMLNode::EXACT); 38 addTo->EditChildren().push_back(node); 39 return node; 40 } 41 42 static int 43 create_string_node_test() 44 { 45 int err = 0; 46 StringResource res; 47 vector<XMLAttribute> attrs; 48 res.value = XMLNode::NewElement(GENERATED_POS, "", "something", attrs, XMLNode::EXACT); 49 res.value->EditChildren().push_back(XMLNode::NewText(GENERATED_POS, " begin ", XMLNode::EXACT)); 50 51 XMLNode* child; 52 53 child = add_html_tag(res.value, "b"); 54 child->EditChildren().push_back(XMLNode::NewText(GENERATED_POS, "b", XMLNode::EXACT)); 55 56 child = add_html_tag(res.value, "i"); 57 child->EditChildren().push_back(XMLNode::NewText(GENERATED_POS, "i", XMLNode::EXACT)); 58 59 child = add_html_tag(child, "b"); 60 child->EditChildren().push_back(XMLNode::NewText(GENERATED_POS, "b", XMLNode::EXACT)); 61 62 child = add_html_tag(res.value, "u"); 63 child->EditChildren().push_back(XMLNode::NewText(GENERATED_POS, "u", XMLNode::EXACT)); 64 65 66 res.value->EditChildren().push_back(XMLNode::NewText(GENERATED_POS, " end ", XMLNode::EXACT)); 67 68 XMLNode* xliff = create_string_node(res, "blah"); 69 70 string oldString = res.value->ToString(XLIFF_NAMESPACES); 71 string newString = xliff->ToString(XLIFF_NAMESPACES); 72 73 if (false) { 74 printf("OLD=\"%s\"\n", oldString.c_str()); 75 printf("NEW=\"%s\"\n", newString.c_str()); 76 } 77 78 const char* const EXPECTED_OLD 79 = "<something> begin <b>b</b><i>i<b>b</b></i><u>u</u> end </something>"; 80 if (oldString != EXPECTED_OLD) { 81 fprintf(stderr, "oldString mismatch:\n"); 82 fprintf(stderr, " expected='%s'\n", EXPECTED_OLD); 83 fprintf(stderr, " actual='%s'\n", oldString.c_str()); 84 err |= 1; 85 } 86 87 const char* const EXPECTED_NEW 88 = "<blah xml:space=\"preserve\"> begin <g ctype=\"bold\">b</g>" 89 "<g ctype=\"italic\">i<g ctype=\"bold\">b</g></g><g ctype=\"underline\">u</g>" 90 " end </blah>"; 91 if (newString != EXPECTED_NEW) { 92 fprintf(stderr, "newString mismatch:\n"); 93 fprintf(stderr, " expected='%s'\n", EXPECTED_NEW); 94 fprintf(stderr, " actual='%s'\n", newString.c_str()); 95 err |= 1; 96 } 97 98 if (err != 0) { 99 fprintf(stderr, "create_string_node_test failed\n"); 100 } 101 return err; 102 } 103 104 int 105 XLIFFFile_test() 106 { 107 bool all = true; 108 int err = 0; 109 110 if (all) err |= Parse_test(); 111 if (all) err |= create_string_node_test(); 112 113 return err; 114 } 115 116