Comparison on NULL is always false (#27)

* All values in Liquid are truthy except nil and false.

* The falsy values are null, undefined and false.

* comparison on null
This commit is contained in:
chenos
2017-03-21 14:54:26 +08:00
committed by Jun Yang
parent 66774865f4
commit e72f295bd0
2 changed files with 53 additions and 4 deletions
+4 -4
View File
@@ -1,10 +1,10 @@
var operators = {
'==': (l, r) => l == r,
'!=': (l, r) => l != r,
'>': (l, r) => l > r,
'<': (l, r) => l < r,
'>=': (l, r) => l >= r,
'<=': (l, r) => l <= r,
'>': (l, r) => l !== null && r !== null && l > r,
'<': (l, r) => l !== null && r !== null && l < r,
'>=': (l, r) => l !== null && r !== null && l >= r,
'<=': (l, r) => l !== null && r !== null && l <= r,
'contains': (l, r) => {
if (!l) return false;
if (typeof l.indexOf !== 'function') return false;
+49
View File
@@ -52,4 +52,53 @@ describe('tags/if', function() {
return expect(liquid.parseAndRender(src, ctx))
.to.eventually.equal('a');
});
it('should return else when comparison on null 1', function() {
var src = "{% if null < 10 %}yes{% else %}no{% endif %}";
return expect(liquid.parseAndRender(src, ctx))
.to.eventually.equal('no');
});
it('should return else when comparison on null 2', function() {
var src = "{% if null <= 10 %}yes{% else %}no{% endif %}";
return expect(liquid.parseAndRender(src, ctx))
.to.eventually.equal('no');
});
it('should return else when comparison on null 3', function() {
var src = "{% if null >= 10 %}yes{% else %}no{% endif %}";
return expect(liquid.parseAndRender(src, ctx))
.to.eventually.equal('no');
});
it('should return else when comparison on null 4', function() {
var src = "{% if null > 10 %}yes{% else %}no{% endif %}";
return expect(liquid.parseAndRender(src, ctx))
.to.eventually.equal('no');
});
it('should return else when comparison on null 5', function() {
var src = "{% if 10 < null %}yes{% else %}no{% endif %}";
return expect(liquid.parseAndRender(src, ctx))
.to.eventually.equal('no');
});
it('should return else when comparison on null 6', function() {
var src = "{% if 10 <= null %}yes{% else %}no{% endif %}";
return expect(liquid.parseAndRender(src, ctx))
.to.eventually.equal('no');
});
it('should return else when comparison on null 7', function() {
var src = "{% if 10 >= null %}yes{% else %}no{% endif %}";
return expect(liquid.parseAndRender(src, ctx))
.to.eventually.equal('no');
});
it('should return else when comparison on null 8', function() {
var src = "{% if 10 > null %}yes{% else %}no{% endif %}";
return expect(liquid.parseAndRender(src, ctx))
.to.eventually.equal('no');
});
});