mirror of https://gitee.com/bigwinds/arangodb
more tests.
This commit is contained in:
parent
2e48bbb82b
commit
206df8fc12
|
@ -53,6 +53,14 @@ function NewAqlReplaceORWithINTestSuite () {
|
||||||
assertTrue(result.plan.rules.indexOf(ruleName) === -1, query);
|
assertTrue(result.plan.rules.indexOf(ruleName) === -1, query);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var executeWithRule = function (query, params) {
|
||||||
|
return AQL_EXECUTE(query, params, { optimizer: { rules: [ "-all", "+" + ruleName ] } }).json;
|
||||||
|
}
|
||||||
|
|
||||||
|
var executeWithoutRule = function (query, params) {
|
||||||
|
return AQL_EXECUTE(query, params, { optimizer: { rules: [ "-all" ] } }).json;
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -64,8 +72,10 @@ function NewAqlReplaceORWithINTestSuite () {
|
||||||
replace = internal.db._create("UnitTestsNewAqlReplaceORWithINTestSuite");
|
replace = internal.db._create("UnitTestsNewAqlReplaceORWithINTestSuite");
|
||||||
|
|
||||||
for (var i = 1; i <= 10; ++i) {
|
for (var i = 1; i <= 10; ++i) {
|
||||||
replace.save({ "value" : i});
|
replace.save({ "value" : i, x: [i]});
|
||||||
replace.save({"a" : {"b" : i}});
|
replace.save({"a" : {"b" : i}});
|
||||||
|
replace.save({"value": i + 10, "bb": i, "cc": 10 - i });
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
@ -226,7 +236,7 @@ function NewAqlReplaceORWithINTestSuite () {
|
||||||
assertEqual(expected, actual);
|
assertEqual(expected, actual);
|
||||||
},
|
},
|
||||||
|
|
||||||
testSelfReference1 : function () {
|
testFiresSelfReference1 : function () {
|
||||||
var query =
|
var query =
|
||||||
"FOR v IN " + replace.name()
|
"FOR v IN " + replace.name()
|
||||||
+ " FILTER v.value == v.a.b || v.value == 10 || v.value == 7 SORT v.value RETURN v.value";
|
+ " FILTER v.value == v.a.b || v.value == 10 || v.value == 7 SORT v.value RETURN v.value";
|
||||||
|
@ -238,7 +248,7 @@ function NewAqlReplaceORWithINTestSuite () {
|
||||||
assertEqual(expected, actual);
|
assertEqual(expected, actual);
|
||||||
},
|
},
|
||||||
|
|
||||||
testSelfReference2 : function () {
|
testFiresSelfReference2 : function () {
|
||||||
var query =
|
var query =
|
||||||
"FOR v IN " + replace.name()
|
"FOR v IN " + replace.name()
|
||||||
+ " FILTER v.a.b == v.value || v.value == 10 || 7 == v.value SORT v.value RETURN v.value";
|
+ " FILTER v.a.b == v.value || v.value == 10 || 7 == v.value SORT v.value RETURN v.value";
|
||||||
|
@ -249,7 +259,71 @@ function NewAqlReplaceORWithINTestSuite () {
|
||||||
var actual = getQueryResults(query, {});
|
var actual = getQueryResults(query, {});
|
||||||
assertEqual(expected, actual);
|
assertEqual(expected, actual);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
testFiresAttributeIsList1 : function () {
|
||||||
|
var query =
|
||||||
|
"LET x = {a:1,b:2} FOR v IN " + replace.name()
|
||||||
|
+ " FILTER v.x[0] == x.a || v.x[0] == 3 SORT v.value RETURN v.value";
|
||||||
|
|
||||||
|
isRuleUsed(query, {});
|
||||||
|
|
||||||
|
var expected = [ 1, 3 ];
|
||||||
|
var actual = getQueryResults(query, {});
|
||||||
|
assertEqual(expected, actual);
|
||||||
|
},
|
||||||
|
|
||||||
|
testFiresAttributeIsList2 : function () {
|
||||||
|
var query =
|
||||||
|
"LET x = {a:1,b:2} FOR v IN " + replace.name()
|
||||||
|
+ " FILTER x.a == v.x[0] || v.x[0] == 3 SORT v.value RETURN v.value";
|
||||||
|
|
||||||
|
isRuleUsed(query, {});
|
||||||
|
|
||||||
|
var expected = [ 1, 3 ];
|
||||||
|
var actual = getQueryResults(query, {});
|
||||||
|
assertEqual(expected, actual);
|
||||||
|
},
|
||||||
|
|
||||||
|
testFiresAttributeIsList3 : function () {
|
||||||
|
var query =
|
||||||
|
"LET x = {a:1,b:2} FOR v IN " + replace.name()
|
||||||
|
+ " FILTER x.a == v.x[0] || 3 == v.x[0] SORT v.value RETURN v.value";
|
||||||
|
|
||||||
|
isRuleUsed(query, {});
|
||||||
|
|
||||||
|
var expected = [ 1, 3 ];
|
||||||
|
var actual = getQueryResults(query, {});
|
||||||
|
assertEqual(expected, actual);
|
||||||
|
},
|
||||||
|
|
||||||
|
testFiresAttributeIsList4 : function () {
|
||||||
|
var query =
|
||||||
|
"LET x = {a:1,b:2} FOR v IN " + replace.name()
|
||||||
|
+ " FILTER v.x[0] == x.a || 3 == v.x[0] SORT v.value RETURN v.value";
|
||||||
|
|
||||||
|
isRuleUsed(query, {});
|
||||||
|
|
||||||
|
var expected = [ 1, 3 ];
|
||||||
|
var actual = getQueryResults(query, {});
|
||||||
|
assertEqual(expected, actual);
|
||||||
|
},
|
||||||
|
|
||||||
|
testFires2Loops: function () {
|
||||||
|
var query =
|
||||||
|
"FOR x IN " + replace.name()
|
||||||
|
+ " FOR y IN " + replace.name()
|
||||||
|
+ " FILTER x.value == y.bb || x.value == y.cc"
|
||||||
|
+ " FILTER x.value != null SORT x.value RETURN x.value";
|
||||||
|
|
||||||
|
isRuleUsed(query, {});
|
||||||
|
|
||||||
|
var expected = [ 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10 ];
|
||||||
|
var actual = getQueryResults(query, {});
|
||||||
|
assertEqual(expected, actual);
|
||||||
|
assertEqual(executeWithRule(query, {}), executeWithoutRule(query, {}));
|
||||||
|
assertEqual(expected, executeWithoutRule(query, {}));
|
||||||
|
},
|
||||||
|
|
||||||
testDudDifferentAttributes1 : function () {
|
testDudDifferentAttributes1 : function () {
|
||||||
var query =
|
var query =
|
||||||
"FOR x IN " + replace.name() + " FILTER x.val1 == 1 || x.val2 == 2 RETURN x";
|
"FOR x IN " + replace.name() + " FILTER x.val1 == 1 || x.val2 == 2 RETURN x";
|
||||||
|
@ -302,6 +376,13 @@ function NewAqlReplaceORWithINTestSuite () {
|
||||||
|
|
||||||
ruleIsNotUsed(query, {});
|
ruleIsNotUsed(query, {});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
testDudAttributeIsList: function () {
|
||||||
|
var query =
|
||||||
|
"LET x = {a:1,b:2} FOR v IN " + replace.name()
|
||||||
|
+ " FILTER v.x[0] == x.a || v.x[1] == 3 SORT v.value RETURN v.value";
|
||||||
|
ruleIsNotUsed(query, {});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue