.smallerOf and .largerOf were buggy; remove them
This commit is contained in:
parent
e413e86588
commit
813fb157fb
16
route.js
16
route.js
|
@ -78,14 +78,6 @@ function Routing(exports) {
|
|||
return key in this.entries;
|
||||
};
|
||||
|
||||
$Dict.prototype.smallerOf = function (other) {
|
||||
return (other.length < this.length) ? other : this;
|
||||
};
|
||||
|
||||
$Dict.prototype.largerOf = function (other) {
|
||||
return (this.length < other.length) ? this : other;
|
||||
};
|
||||
|
||||
function is_emptyMatcher(m) {
|
||||
return (m === emptyMatcher);
|
||||
}
|
||||
|
@ -333,8 +325,8 @@ function Routing(exports) {
|
|||
|
||||
var w = merge(r1.get(__), r2.get(__));
|
||||
if (is_emptyMatcher(w)) {
|
||||
var smaller = r1.smallerOf(r2);
|
||||
var larger = r1.largerOf(r2);
|
||||
var smaller = r1.length < r2.length ? r1 : r2;
|
||||
var larger = r1.length < r2.length ? r2 : r1;
|
||||
var target = larger.copy();
|
||||
for (var key in smaller.entries) {
|
||||
var k = merge(smaller.get(key), larger.get(key));
|
||||
|
@ -430,7 +422,7 @@ function Routing(exports) {
|
|||
|
||||
if (is_emptyMatcher(w1)) {
|
||||
if (is_emptyMatcher(w2)) {
|
||||
for (var key in r1.smallerOf(r2).entries) examineKey(key);
|
||||
for (var key in (r1.length < r2.length ? r1 : r2).entries) examineKey(key);
|
||||
} else {
|
||||
for (var key in r1.entries) examineKey(key);
|
||||
}
|
||||
|
@ -658,7 +650,7 @@ function Routing(exports) {
|
|||
// Optimize similarly to intersect().
|
||||
if (is_emptyMatcher(w1)) {
|
||||
if (is_emptyMatcher(w2)) {
|
||||
for (var key in r1.smallerOf(r2).entries) examineKey(key);
|
||||
for (var key in (r1.length < r2.length ? r1 : r2).entries) examineKey(key);
|
||||
} else {
|
||||
for (var key in r1.entries) examineKey(key);
|
||||
}
|
||||
|
|
44
tr.js
44
tr.js
|
@ -126,3 +126,47 @@ dump(r.simpleGestalt(false, "A", 0, 0).union(r.simpleGestalt(true, "B", 0, 0))
|
|||
dump(r.simpleGestalt(false, "A", 0, 0).union(r.simpleGestalt(true, "B", 0, 0))
|
||||
.equals(r.simpleGestalt(false, "B", 0, 0).union(r.simpleGestalt(true, "A", 0, 0)))
|
||||
=== false);
|
||||
|
||||
|
||||
console.log("debugging unions (1)");
|
||||
dumpM(r.union(r.compilePattern(r.arrayToSet(['A']), [r.__, 2]),
|
||||
r.compilePattern(r.arrayToSet(['C']), [1, 3]),
|
||||
r.compilePattern(r.arrayToSet(['B']), [3, 4])));
|
||||
|
||||
dumpM(r.union(r.compilePattern(r.arrayToSet(['C']), [1, 3]),
|
||||
r.compilePattern(r.arrayToSet(['B']), [3, 4])));
|
||||
|
||||
dumpM(r.union(r.compilePattern(r.arrayToSet(['A']), [r.__, 2]),
|
||||
r.compilePattern(r.arrayToSet(['C']), [1, 3])));
|
||||
|
||||
dumpM(r.union(r.compilePattern(r.arrayToSet(['A']), [r.__, 2]),
|
||||
r.compilePattern(r.arrayToSet(['B']), [3, 4])));
|
||||
|
||||
console.log("debugging unions (2)");
|
||||
var MU = r.emptyMatcher;
|
||||
MU = r.union(MU, r.compilePattern(r.arrayToSet(['A']), [r.__, 2]));
|
||||
dumpM(MU);
|
||||
MU = r.union(MU, r.compilePattern(r.arrayToSet(['C']), [1, 3]));
|
||||
dumpM(MU);
|
||||
MU = r.union(MU, r.compilePattern(r.arrayToSet(['B']), [3, 4]));
|
||||
dumpM(MU);
|
||||
|
||||
console.log("debugging unions (3)");
|
||||
dumpM(r.union(r.compilePattern(r.arrayToSet('A'), [2]),
|
||||
dumpM(r.union(r.compilePattern(r.arrayToSet('B'), [2]),
|
||||
r.compilePattern(r.arrayToSet('C'), [3])))));
|
||||
|
||||
console.log("matcherKeys on wild matchers");
|
||||
dump(r.matcherKeys(r.project(r.union(r.compilePattern(r.arrayToSet(['A']), [r.__, 2]),
|
||||
r.compilePattern(r.arrayToSet(['C']), [1, 3]),
|
||||
r.compilePattern(r.arrayToSet(['B']), [3, 4])),
|
||||
r.compileProjection([r._$(), r._$()]))));
|
||||
dump(r.matcherKeys(r.project(r.union(r.compilePattern(r.arrayToSet(['A']), [r.__, 2]),
|
||||
r.compilePattern(r.arrayToSet(['C']), [1, 3]),
|
||||
r.compilePattern(r.arrayToSet(['B']), [3, 4])),
|
||||
r.compileProjection([r.__, r._$]))));
|
||||
dump(r.matcherKeys(r.project(r.project(r.union(r.compilePattern(r.arrayToSet(['A']), [r.__, 2]),
|
||||
r.compilePattern(r.arrayToSet(['C']), [1, 3]),
|
||||
r.compilePattern(r.arrayToSet(['B']), [3, 4])),
|
||||
r.compileProjection([r._$(), r._$()])),
|
||||
r.compileProjection([r.__, r._$]))));
|
||||
|
|
Loading…
Reference in New Issue