Convert only Number instances to number when evaluate domain for inversion
Closes #15159 (grafted from 88cc5493f11bb7dc50026f87e34b416812eae666) --HG-- branch : 8.0
This commit is contained in:
1 parent
082564ceda
commit
8237437e53
3 files changed
+101
-2
No files matched your search
+6
-2
@@ -2981,9 +2981,13 @@
|
||||
return ((a.isDate == b.isDate) &&
|
||||
(a.isDateTime == b.isDateTime) &&
|
||||
(a.valueOf() == b.valueOf()));
|
||||
} else if ((a instanceof Number) || (b instanceof Number)) {
|
||||
return (Number(a) === Number(b));
|
||||
} else {
|
||||
if (a instanceof Number) {
|
||||
a = a.valueOf();
|
||||
}
|
||||
if (b instanceof Number) {
|
||||
b = b.valueOf();
|
||||
}
|
||||
return (a === b);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2969,6 +2969,44 @@
|
||||
var now = new Date();
|
||||
|
||||
[
|
||||
[[['x', '=', 42]], {'x': 42}, true],
|
||||
[[['x', '=', 42]], {'x': new Number(42)}, true],
|
||||
[[['x', '=', 42]], {'x': 0}, false],
|
||||
[[['x', '=', 42]], {'x': new Number(0)}, false],
|
||||
[[['x', '=', 42]], {'x': null}, false],
|
||||
[[['x', '=', new Number(42)]], {'x': 42}, true],
|
||||
[[['x', '=', new Number(42)]], {'x': new Number(42)}, true],
|
||||
[[['x', '=', new Number(42)]], {'x': 0}, false],
|
||||
[[['x', '=', new Number(42)]], {'x': new Number(0)}, false],
|
||||
[[['x', '=', new Number(42)]], {'x': null}, false],
|
||||
[[['x', '=', 0]], {'x': 0}, true],
|
||||
[[['x', '=', 0]], {'x': new Number(0)}, true],
|
||||
[[['x', '=', 0]], {'x': null}, false],
|
||||
[[['x', '=', new Number(0)]], {'x': 0}, true],
|
||||
[[['x', '=', new Number(0)]], {'x': new Number(0)}, true],
|
||||
[[['x', '=', new Number(0)]], {'x': null}, false],
|
||||
[[['x', '=', null]], {'x': 0}, false],
|
||||
[[['x', '=', null]], {'x': new Number(0)}, false],
|
||||
[[['x', '=', null]], {'x': null}, true],
|
||||
[[['x', '!=', 42]], {'x': 42}, false],
|
||||
[[['x', '!=', 42]], {'x': new Number(42)}, false],
|
||||
[[['x', '!=', 42]], {'x': 0}, true],
|
||||
[[['x', '!=', 42]], {'x': new Number(0)}, true],
|
||||
[[['x', '!=', 42]], {'x': null}, true],
|
||||
[[['x', '!=', new Number(42)]], {'x': 42}, false],
|
||||
[[['x', '!=', new Number(42)]], {'x': new Number(42)}, false],
|
||||
[[['x', '!=', new Number(42)]], {'x': 0}, true],
|
||||
[[['x', '!=', new Number(42)]], {'x': new Number(0)}, true],
|
||||
[[['x', '!=', new Number(42)]], {'x': null}, true],
|
||||
[[['x', '!=', 0]], {'x': 0}, false],
|
||||
[[['x', '!=', 0]], {'x': new Number(0)}, false],
|
||||
[[['x', '!=', 0]], {'x': null}, true],
|
||||
[[['x', '!=', new Number(0)]], {'x': 0}, false],
|
||||
[[['x', '!=', new Number(0)]], {'x': new Number(0)}, false],
|
||||
[[['x', '!=', new Number(0)]], {'x': null}, true],
|
||||
[[['x', '!=', null]], {'x': 0}, true],
|
||||
[[['x', '!=', null]], {'x': new Number(0)}, true],
|
||||
[[['x', '!=', null]], {'x': null}, false],
|
||||
[[['x', '>', 5]], {'x': 6}, true],
|
||||
[[['x', '>', 5]], {'x': 4}, false],
|
||||
[[['x', '>', null]], {'x': today}, false],
|
||||
|
||||
@@ -884,6 +884,63 @@ class DomainInversionTestCase(TestCase):
|
||||
unique_value(domain, single_value=False), (False, None, None))
|
||||
|
||||
def test_evaldomain(self):
|
||||
|
||||
domain = [['x', '=', 42]]
|
||||
self.assertTrue(eval_domain(domain, {'x': 42}))
|
||||
self.assertTrue(eval_domain(domain, {'x': Decimal('42')}))
|
||||
self.assertFalse(eval_domain(domain, {'x': 0}))
|
||||
self.assertFalse(eval_domain(domain, {'x': Decimal('0')}))
|
||||
self.assertFalse(eval_domain(domain, {'x': None}))
|
||||
|
||||
domain = [['x', '=', Decimal('42')]]
|
||||
self.assertTrue(eval_domain(domain, {'x': 42}))
|
||||
self.assertTrue(eval_domain(domain, {'x': Decimal('42')}))
|
||||
self.assertFalse(eval_domain(domain, {'x': 0}))
|
||||
self.assertFalse(eval_domain(domain, {'x': Decimal('0')}))
|
||||
self.assertFalse(eval_domain(domain, {'x': None}))
|
||||
|
||||
domain = [['x', '=', 0]]
|
||||
self.assertTrue(eval_domain(domain, {'x': 0}))
|
||||
self.assertTrue(eval_domain(domain, {'x': Decimal('0')}))
|
||||
self.assertFalse(eval_domain(domain, {'x': None}))
|
||||
|
||||
domain = [['x', '=', Decimal('0')]]
|
||||
self.assertTrue(eval_domain(domain, {'x': 0}))
|
||||
self.assertTrue(eval_domain(domain, {'x': Decimal('0')}))
|
||||
self.assertFalse(eval_domain(domain, {'x': None}))
|
||||
|
||||
domain = [['x', '=', None]]
|
||||
self.assertFalse(eval_domain(domain, {'x': 0}))
|
||||
self.assertFalse(eval_domain(domain, {'x': Decimal('0')}))
|
||||
self.assertTrue(eval_domain(domain, {'x': None}))
|
||||
|
||||
domain = [['x', '!=', 42]]
|
||||
self.assertFalse(eval_domain(domain, {'x': 42}))
|
||||
self.assertFalse(eval_domain(domain, {'x': Decimal('42')}))
|
||||
self.assertTrue(eval_domain(domain, {'x': Decimal('0')}))
|
||||
self.assertTrue(eval_domain(domain, {'x': None}))
|
||||
|
||||
domain = [['x', '!=', Decimal('42')]]
|
||||
self.assertFalse(eval_domain(domain, {'x': 42}))
|
||||
self.assertFalse(eval_domain(domain, {'x': Decimal('42')}))
|
||||
self.assertTrue(eval_domain(domain, {'x': Decimal('0')}))
|
||||
self.assertTrue(eval_domain(domain, {'x': None}))
|
||||
|
||||
domain = [['x', '!=', 0]]
|
||||
self.assertFalse(eval_domain(domain, {'x': 0}))
|
||||
self.assertFalse(eval_domain(domain, {'x': Decimal('0')}))
|
||||
self.assertTrue(eval_domain(domain, {'x': None}))
|
||||
|
||||
domain = [['x', '!=', Decimal('0')]]
|
||||
self.assertFalse(eval_domain(domain, {'x': 0}))
|
||||
self.assertFalse(eval_domain(domain, {'x': Decimal('0')}))
|
||||
self.assertTrue(eval_domain(domain, {'x': None}))
|
||||
|
||||
domain = [['x', '!=', None]]
|
||||
self.assertTrue(eval_domain(domain, {'x': 0}))
|
||||
self.assertTrue(eval_domain(domain, {'x': Decimal('0')}))
|
||||
self.assertFalse(eval_domain(domain, {'x': None}))
|
||||
|
||||
domain = [['x', '>', 5]]
|
||||
self.assertTrue(eval_domain(domain, {'x': 6}))
|
||||
self.assertFalse(eval_domain(domain, {'x': 4}))
|
||||
|
||||
Reference in new issue
Block a user