.smallerOf and .largerOf were buggy; remove them

This commit is contained in:
Tony Garnock-Jones 2014-05-25 13:32:47 -04:00
parent e413e86588
commit 813fb157fb
2 changed files with 48 additions and 12 deletions

View File

@ -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
View File

@ -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._$]))));