Truth test

by infiniteloops

HTML

<p>

CSS

body {
    font-family:'consolas';
    background-color: #353535;
    color: #e5e5e5;
}
.true {
    color: #00af00;
    font-weight: bold;
}
.false {
    color: #af0000;
    font-weight: bold;
}
.null {
    color: #aaaaaa;
    font-weight: bold;
}

JavaScript

page = (function () {
    var self = this;
    self.EvaluateTrueEq = function (val) {
        return (val || true).toString() === "true";
    };
    self.EvaluateFalseEq = function (val) {
        return (val || false).toString() === "false";
    };
    // Array of tests to be run
    self.testArr = [{
        name: "EvaluateTrueEq",
        method: self.EvaluateTrueEq
    }, {
        name: "EvaluateFalseEq",
        method: self.EvaluateFalseEq
    }];
    // Array of values iterated for each test
    self.boolArr = [null, true, false, "true", "false"];

    return self;
})();

$(function () {
    // Loop tests
    for (var ix in page.testArr) {
        var test = page.testArr[ix];
        // Loop values
        for (var iix in page.boolArr) {
            var val = page.boolArr[iix];
            var valStr = val == null ? 'null' : val.toString();
            // run test
            var result = test.method(val);
            // show results
            $('P').append("<div>" + test.name + "(<span class='" + valStr + "'>" + (typeof (val) === 'string' ? "'" + valStr + "'" : valStr) + "</span>) = <span class='" + result.toString() + "'>" + result + "</span></div>");
        }
        // break between tests
        $('P').append('<br />');
    }
});