|
1 | 1 | /**************************************************************************
|
2 | 2 | * This file is part of QXmlEdit *
|
3 |
| - * Copyright (C) 2013-2019 by Luca Bellonda and individual contributors * |
| 3 | + * Copyright (C) 2013-2023 by Luca Bellonda and individual contributors * |
4 | 4 | * as indicated in the AUTHORS file *
|
5 | 5 | * lbellonda _at_ gmail.com *
|
6 | 6 | * *
|
@@ -997,6 +997,13 @@ bool TestSearch::testLiteralSearch()
|
997 | 997 |
|
998 | 998 | bool TestSearch::testXQuerySearch()
|
999 | 999 | {
|
| 1000 | + if( !xqueryGetTextToSearch()) { |
| 1001 | + return false; |
| 1002 | + } |
| 1003 | + if( !xqueryAdjustTextToSearch()) { |
| 1004 | + return false; |
| 1005 | + } |
| 1006 | + |
1000 | 1007 | if( !xquerySearchPathExact()) {
|
1001 | 1008 | return false;
|
1002 | 1009 | }
|
@@ -1051,11 +1058,115 @@ bool TestSearch::testXQuerySearch()
|
1051 | 1058 | if( !xquerySearchTextInChildren()) {
|
1052 | 1059 | return false;
|
1053 | 1060 | }
|
| 1061 | + if( !xqueryVerifyAdjustTextToSearch()) { |
| 1062 | + return false; |
| 1063 | + } |
1054 | 1064 | //---
|
1055 | 1065 | return true;
|
1056 | 1066 | }
|
1057 | 1067 |
|
1058 | 1068 |
|
| 1069 | +//------------------------------------------------------------ |
| 1070 | + |
| 1071 | +bool TestSearch::xqueryVerifyAdjustTextToSearch() |
| 1072 | +{ |
| 1073 | + _subTestName = "xqueryVerifyAdjustTextToSearch"; |
| 1074 | + TEST_OR_DIE(innerXqueryVerifyAdjustTextToSearch("//*[@data eq 'www']", false, 2)); |
| 1075 | + TEST_OR_DIE(innerXqueryVerifyAdjustTextToSearch("./*[@data eq 'www']", false, 1)); |
| 1076 | + TEST_OR_DIE(innerXqueryVerifyAdjustTextToSearch("/*[@data eq 'www']", false, 1)); |
| 1077 | + TEST_OR_DIE(innerXqueryVerifyAdjustTextToSearch(".//*[@data eq 'www']", false, 2)); |
| 1078 | + TEST_OR_DIE(innerXqueryVerifyAdjustTextToSearch(" .//*[@data eq 'www']", false, 2)); |
| 1079 | + TEST_OR_DIE(innerXqueryVerifyAdjustTextToSearch(" .//*[@data eq 'www'] ", false, 2)); |
| 1080 | + //-- |
| 1081 | + TEST_OR_DIE(innerXqueryVerifyAdjustTextToSearch("//*[@data eq 'www']", true, 2)); |
| 1082 | + TEST_OR_DIE(innerXqueryVerifyAdjustTextToSearch("./*[@data eq 'www']", true, 0)); |
| 1083 | + TEST_OR_DIE(innerXqueryVerifyAdjustTextToSearch("/*[@data eq 'www']", true, 0)); |
| 1084 | + TEST_OR_DIE(innerXqueryVerifyAdjustTextToSearch(".//*[@data eq 'www']", true, 2)); |
| 1085 | + TEST_OR_DIE(innerXqueryVerifyAdjustTextToSearch(" .//*[@data eq 'www']", true, 2)); |
| 1086 | + TEST_OR_DIE(innerXqueryVerifyAdjustTextToSearch(" .//*[@data eq 'www'] ", true, 2)); |
| 1087 | + return true; |
| 1088 | +} |
| 1089 | + |
| 1090 | +bool TestSearch::innerXqueryVerifyAdjustTextToSearch(const QString &toSearch, const bool isGlobal, const int expectedSelCount) |
| 1091 | +{ |
| 1092 | + _subTestName = QString("xqueryVerifyAdjustTextToSearch:%1:%2").arg(toSearch).arg(isGlobal); |
| 1093 | + TestSearchHelper helper(true); |
| 1094 | + testAStdSearchWithParamsInit("xqueryVerifyAdjustTextToSearch", helper); |
| 1095 | + helper.initFind(toSearch); |
| 1096 | + if(!isGlobal) { |
| 1097 | + QList<int> selList; |
| 1098 | + selList.append(0); //root |
| 1099 | + selList.append(0); //h1 |
| 1100 | + selList.append(0); //h11 |
| 1101 | + selList.append(1); //h21 |
| 1102 | + selList.append(1); //h31 |
| 1103 | + Element *element = helper.app.mainWindow()->getRegola()->findElementByArray(selList); |
| 1104 | + helper.selectedItem = element ; |
| 1105 | + if( NULL == element ) { |
| 1106 | + return error("No element"); |
| 1107 | + } |
| 1108 | + helper.findArgs.setOnlyChildren(true); |
| 1109 | + } |
| 1110 | + helper.search(); |
| 1111 | + QStringList expected; |
| 1112 | + if(expectedSelCount>0) { |
| 1113 | + expected << "h4" ; |
| 1114 | + } |
| 1115 | + if(expectedSelCount>1) { |
| 1116 | + expected << "h5" ; |
| 1117 | + } |
| 1118 | + return checkResults(helper, expectedSelCount, expectedSelCount, &expected); |
| 1119 | +} |
| 1120 | + |
| 1121 | +bool TestSearch::xqueryGetTextToSearch() |
| 1122 | +{ |
| 1123 | + _subTestName = "xqueryGetTextToSearch"; |
| 1124 | + TEST_OR_DIE(innerXqueryGetTextToSearch(" ", "")); |
| 1125 | + TEST_OR_DIE(innerXqueryGetTextToSearch(" a", "a")); |
| 1126 | + TEST_OR_DIE(innerXqueryGetTextToSearch("a ", "a")); |
| 1127 | + TEST_OR_DIE(innerXqueryGetTextToSearch(" a ", "a")); |
| 1128 | + TEST_OR_DIE(innerXqueryGetTextToSearch(" a b ", "a b")); |
| 1129 | + TEST_OR_DIE(innerXqueryGetTextToSearch(" a vvvv b ", "a vvvv b")); |
| 1130 | + return true; |
| 1131 | +} |
| 1132 | + |
| 1133 | +bool TestSearch::xqueryAdjustTextToSearch() |
| 1134 | +{ |
| 1135 | + _subTestName = "xqueryAdjustTextToSearch"; |
| 1136 | + TEST_OR_DIE(innerXqueryAdjustTextToSearch("", "/")); |
| 1137 | + TEST_OR_DIE(innerXqueryAdjustTextToSearch("/", "/")); |
| 1138 | + TEST_OR_DIE(innerXqueryAdjustTextToSearch(".", "/.")); |
| 1139 | + TEST_OR_DIE(innerXqueryAdjustTextToSearch("/abc", "/abc")); |
| 1140 | + TEST_OR_DIE(innerXqueryAdjustTextToSearch("//abc", "//abc")); |
| 1141 | + TEST_OR_DIE(innerXqueryAdjustTextToSearch("./abc", "/./abc")); |
| 1142 | + TEST_OR_DIE(innerXqueryAdjustTextToSearch(".//abc", "/.//abc")); |
| 1143 | + TEST_OR_DIE(innerXqueryAdjustTextToSearch("./abc/", "/./abc/")); |
| 1144 | + return true; |
| 1145 | +} |
| 1146 | + |
| 1147 | +//------------------------------------------------------------ |
| 1148 | +bool TestSearch::innerXqueryAdjustTextToSearch(const QString &input, const QString &expected) |
| 1149 | +{ |
| 1150 | + const QString result = SearchXQuery::adjustTextToFind(input); |
| 1151 | + if(expected != result ) { |
| 1152 | + return error(QString("innerXqueryAdjustTextToSearch for input: '%1' expected: '%2' found: '%3' ") |
| 1153 | + .arg(input).arg(expected).arg(result)); |
| 1154 | + } |
| 1155 | + return true ; |
| 1156 | +} |
| 1157 | + |
| 1158 | +bool TestSearch::innerXqueryGetTextToSearch(const QString &input, const QString &expected) |
| 1159 | +{ |
| 1160 | + FindTextParams searchInfo; |
| 1161 | + searchInfo.mTextToFind = input; |
| 1162 | + const QString result = SearchXQuery::getTextToFind(searchInfo); |
| 1163 | + if(expected != result ) { |
| 1164 | + return error(QString("innerXqueryGetTextToSearch for input: '%1' expected: '%2' found: '%3' ") |
| 1165 | + .arg(input).arg(expected).arg(result)); |
| 1166 | + } |
| 1167 | + return true ; |
| 1168 | +} |
| 1169 | + |
1059 | 1170 | //------------------------------------------------------------
|
1060 | 1171 |
|
1061 | 1172 | bool TestSearch::innerSearchForNext(const QString &testName, const bool isNext)
|
|
0 commit comments