TestXPathGenerator.cpp (4246B)
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this file, 5 * You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #include "XPathGenerator.h" 8 #include "gtest/gtest.h" 9 #include "nsString.h" 10 11 TEST(TestXPathGenerator, TestQuoteArgumentWithoutQuote) 12 { 13 nsAutoString arg; 14 arg.AssignLiteral(u"testing"); 15 16 nsAutoString expectedResult; 17 expectedResult.AssignLiteral(u"\'testing\'"); 18 19 nsAutoString result; 20 XPathGenerator::QuoteArgument(arg, result); 21 22 ASSERT_TRUE(expectedResult.Equals(result)); 23 } 24 25 TEST(TestXPathGenerator, TestQuoteArgumentWithSingleQuote) 26 { 27 nsAutoString arg; 28 arg.AssignLiteral(u"\'testing\'"); 29 30 nsAutoString expectedResult; 31 expectedResult.AssignLiteral(u"\"\'testing\'\""); 32 33 nsAutoString result; 34 XPathGenerator::QuoteArgument(arg, result); 35 36 ASSERT_TRUE(expectedResult.Equals(result)); 37 } 38 39 TEST(TestXPathGenerator, TestQuoteArgumentWithDoubleQuote) 40 { 41 nsAutoString arg; 42 arg.AssignLiteral(u"\"testing\""); 43 44 nsAutoString expectedResult; 45 expectedResult.AssignLiteral(u"\'\"testing\"\'"); 46 47 nsAutoString result; 48 XPathGenerator::QuoteArgument(arg, result); 49 50 ASSERT_TRUE(expectedResult.Equals(result)); 51 } 52 53 TEST(TestXPathGenerator, TestQuoteArgumentWithSingleAndDoubleQuote) 54 { 55 nsAutoString arg; 56 arg.AssignLiteral(u"\'testing\""); 57 58 nsAutoString expectedResult; 59 expectedResult.AssignLiteral(u"concat(\'\',\"\'\",\'testing\"\')"); 60 61 nsAutoString result; 62 XPathGenerator::QuoteArgument(arg, result); 63 printf("Result: %s\nExpected: %s\n", NS_ConvertUTF16toUTF8(result).get(), 64 NS_ConvertUTF16toUTF8(expectedResult).get()); 65 66 ASSERT_TRUE(expectedResult.Equals(result)); 67 } 68 69 TEST(TestXPathGenerator, 70 TestQuoteArgumentWithDoubleQuoteAndASequenceOfSingleQuote) 71 { 72 nsAutoString arg; 73 arg.AssignLiteral(u"\'\'\'\'testing\""); 74 75 nsAutoString expectedResult; 76 expectedResult.AssignLiteral(u"concat(\'\',\"\'\'\'\'\",\'testing\"\')"); 77 78 nsAutoString result; 79 XPathGenerator::QuoteArgument(arg, result); 80 printf("Result: %s\nExpected: %s\n", NS_ConvertUTF16toUTF8(result).get(), 81 NS_ConvertUTF16toUTF8(expectedResult).get()); 82 83 ASSERT_TRUE(expectedResult.Equals(result)); 84 } 85 86 TEST(TestXPathGenerator, 87 TestQuoteArgumentWithDoubleQuoteAndTwoSequencesOfSingleQuote) 88 { 89 nsAutoString arg; 90 arg.AssignLiteral(u"\'\'\'\'testing\'\'\'\'\'\'\""); 91 92 nsAutoString expectedResult; 93 expectedResult.AssignLiteral( 94 u"concat(\'\',\"\'\'\'\'\",\'testing\',\"\'\'\'\'\'\'\",\'\"\')"); 95 96 nsAutoString result; 97 XPathGenerator::QuoteArgument(arg, result); 98 printf("Result: %s\nExpected: %s\n", NS_ConvertUTF16toUTF8(result).get(), 99 NS_ConvertUTF16toUTF8(expectedResult).get()); 100 101 ASSERT_TRUE(expectedResult.Equals(result)); 102 } 103 104 TEST(TestXPathGenerator, 105 TestQuoteArgumentWithDoubleQuoteAndTwoSequencesOfSingleQuoteInMiddle) 106 { 107 nsAutoString arg; 108 arg.AssignLiteral(u"t\'\'\'\'estin\'\'\'\'\'\'\"g"); 109 110 nsAutoString expectedResult; 111 expectedResult.AssignLiteral( 112 u"concat(\'t\',\"\'\'\'\'\",\'estin\',\"\'\'\'\'\'\'\",\'\"g\')"); 113 114 nsAutoString result; 115 XPathGenerator::QuoteArgument(arg, result); 116 printf("Result: %s\nExpected: %s\n", NS_ConvertUTF16toUTF8(result).get(), 117 NS_ConvertUTF16toUTF8(expectedResult).get()); 118 119 ASSERT_TRUE(expectedResult.Equals(result)); 120 } 121 122 TEST(TestXPathGenerator, TestEscapeNameWithNormalCharacters) 123 { 124 nsAutoString arg; 125 arg.AssignLiteral(u"testing"); 126 127 nsAutoString expectedResult; 128 expectedResult.AssignLiteral(u"testing"); 129 130 nsAutoString result; 131 XPathGenerator::EscapeName(arg, result); 132 133 ASSERT_TRUE(expectedResult.Equals(result)); 134 } 135 136 TEST(TestXPathGenerator, TestEscapeNameWithSpecialCharacters) 137 { 138 nsAutoString arg; 139 arg.AssignLiteral(u"^testing!"); 140 141 nsAutoString expectedResult; 142 expectedResult.AssignLiteral(u"*[local-name()=\'^testing!\']"); 143 144 nsAutoString result; 145 XPathGenerator::EscapeName(arg, result); 146 printf("Result: %s\nExpected: %s\n", NS_ConvertUTF16toUTF8(result).get(), 147 NS_ConvertUTF16toUTF8(expectedResult).get()); 148 149 ASSERT_TRUE(expectedResult.Equals(result)); 150 }