log4js-node/test/levels-test.js
2013-08-29 16:56:40 +10:00

428 lines
11 KiB
JavaScript

"use strict";
var assert = require('assert')
, should = require('should')
, levels = require('../lib/levels');
function assertThat(level) {
function assertForEach(val, test, otherLevels) {
otherLevels.forEach(function(other) {
test.call(level, other).should.eql(val);
});
}
return {
isLessThanOrEqualTo: function(levels) {
assertForEach(true, level.isLessThanOrEqualTo, levels);
},
isNotLessThanOrEqualTo: function(levels) {
assertForEach(false, level.isLessThanOrEqualTo, levels);
},
isGreaterThanOrEqualTo: function(levels) {
assertForEach(true, level.isGreaterThanOrEqualTo, levels);
},
isNotGreaterThanOrEqualTo: function(levels) {
assertForEach(false, level.isGreaterThanOrEqualTo, levels);
},
isEqualTo: function(levels) {
assertForEach(true, level.isEqualTo, levels);
},
isNotEqualTo: function(levels) {
assertForEach(false, level.isEqualTo, levels);
}
};
}
describe('../lib/levels', function() {
it('should define some levels', function() {
should.exist(levels.ALL);
should.exist(levels.TRACE);
should.exist(levels.DEBUG);
should.exist(levels.INFO);
should.exist(levels.WARN);
should.exist(levels.ERROR);
should.exist(levels.FATAL);
should.exist(levels.OFF);
});
describe('ALL', function() {
var all = levels.ALL;
it('should be less than the other levels', function() {
assertThat(all).isLessThanOrEqualTo(
[
levels.ALL,
levels.TRACE,
levels.DEBUG,
levels.INFO,
levels.WARN,
levels.ERROR,
levels.FATAL,
levels.OFF
]
);
});
it('should be greater than no levels', function() {
assertThat(all).isNotGreaterThanOrEqualTo(
[
levels.TRACE,
levels.DEBUG,
levels.INFO,
levels.WARN,
levels.ERROR,
levels.FATAL,
levels.OFF
]
);
});
it('should only be equal to ALL', function() {
assertThat(all).isEqualTo([levels.toLevel("ALL")]);
assertThat(all).isNotEqualTo(
[
levels.TRACE,
levels.DEBUG,
levels.INFO,
levels.WARN,
levels.ERROR,
levels.FATAL,
levels.OFF
]
);
});
});
describe('TRACE', function() {
var trace = levels.TRACE;
it('should be less than DEBUG', function() {
assertThat(trace).isLessThanOrEqualTo(
[
levels.DEBUG,
levels.INFO,
levels.WARN,
levels.ERROR,
levels.FATAL,
levels.OFF
]
);
assertThat(trace).isNotLessThanOrEqualTo([levels.ALL]);
});
it('should be greater than ALL', function() {
assertThat(trace).isGreaterThanOrEqualTo([levels.ALL, levels.TRACE]);
assertThat(trace).isNotGreaterThanOrEqualTo(
[
levels.DEBUG,
levels.INFO,
levels.WARN,
levels.ERROR,
levels.FATAL,
levels.OFF
]
);
});
it('should only be equal to TRACE', function() {
assertThat(trace).isEqualTo([levels.toLevel("TRACE")]);
assertThat(trace).isNotEqualTo(
[
levels.ALL,
levels.DEBUG,
levels.INFO,
levels.WARN,
levels.ERROR,
levels.FATAL,
levels.OFF
]
);
});
});
describe('DEBUG', function() {
var debug = levels.DEBUG;
it('should be less than INFO', function() {
assertThat(debug).isLessThanOrEqualTo(
[
levels.INFO,
levels.WARN,
levels.ERROR,
levels.FATAL,
levels.OFF
]
);
assertThat(debug).isNotLessThanOrEqualTo([levels.ALL, levels.TRACE]);
});
it('should be greater than TRACE', function() {
assertThat(debug).isGreaterThanOrEqualTo([levels.ALL, levels.TRACE]);
assertThat(debug).isNotGreaterThanOrEqualTo(
[
levels.INFO,
levels.WARN,
levels.ERROR,
levels.FATAL,
levels.OFF
]
);
});
it('should only be equal to DEBUG', function() {
assertThat(debug).isEqualTo([levels.toLevel("DEBUG")]);
assertThat(debug).isNotEqualTo(
[
levels.ALL,
levels.TRACE,
levels.INFO,
levels.WARN,
levels.ERROR,
levels.FATAL,
levels.OFF
]
);
});
});
describe('INFO', function() {
var info = levels.INFO;
it('should be less than WARN', function() {
assertThat(info).isLessThanOrEqualTo([
levels.WARN,
levels.ERROR,
levels.FATAL,
levels.OFF
]);
assertThat(info).isNotLessThanOrEqualTo([levels.ALL, levels.TRACE, levels.DEBUG]);
});
it('should be greater than DEBUG', function() {
assertThat(info).isGreaterThanOrEqualTo([levels.ALL, levels.TRACE, levels.DEBUG]);
assertThat(info).isNotGreaterThanOrEqualTo([
levels.WARN,
levels.ERROR,
levels.FATAL,
levels.OFF
]);
});
it('should only be equal to INFO', function() {
assertThat(info).isEqualTo([levels.toLevel("INFO")]);
assertThat(info).isNotEqualTo([
levels.ALL,
levels.TRACE,
levels.DEBUG,
levels.WARN,
levels.ERROR,
levels.FATAL,
levels.OFF
]);
});
});
describe('WARN', function() {
var warn = levels.WARN;
it('should be less than ERROR', function() {
assertThat(warn).isLessThanOrEqualTo([levels.ERROR, levels.FATAL, levels.OFF]);
assertThat(warn).isNotLessThanOrEqualTo([
levels.ALL,
levels.TRACE,
levels.DEBUG,
levels.INFO
]);
});
it('should be greater than INFO', function() {
assertThat(warn).isGreaterThanOrEqualTo([
levels.ALL,
levels.TRACE,
levels.DEBUG,
levels.INFO
]);
assertThat(warn).isNotGreaterThanOrEqualTo([levels.ERROR, levels.FATAL, levels.OFF]);
});
it('should only be equal to WARN', function() {
assertThat(warn).isEqualTo([levels.toLevel("WARN")]);
assertThat(warn).isNotEqualTo([
levels.ALL,
levels.TRACE,
levels.DEBUG,
levels.INFO,
levels.ERROR,
levels.FATAL,
levels.OFF
]);
});
});
describe('ERROR', function() {
var error = levels.ERROR;
it('should be less than FATAL', function() {
assertThat(error).isLessThanOrEqualTo([levels.FATAL, levels.OFF]);
assertThat(error).isNotLessThanOrEqualTo([
levels.ALL,
levels.TRACE,
levels.DEBUG,
levels.INFO,
levels.WARN
]);
});
it('should be greater than WARN', function() {
assertThat(error).isGreaterThanOrEqualTo([
levels.ALL,
levels.TRACE,
levels.DEBUG,
levels.INFO,
levels.WARN
]);
assertThat(error).isNotGreaterThanOrEqualTo([levels.FATAL, levels.OFF]);
});
it('should only be equal to ERROR', function() {
assertThat(error).isEqualTo([levels.toLevel("ERROR")]);
assertThat(error).isNotEqualTo([
levels.ALL,
levels.TRACE,
levels.DEBUG,
levels.INFO,
levels.WARN,
levels.FATAL,
levels.OFF
]);
});
});
describe('FATAL', function() {
var fatal = levels.FATAL;
it('should be less than OFF', function() {
assertThat(fatal).isLessThanOrEqualTo([levels.OFF]);
assertThat(fatal).isNotLessThanOrEqualTo([
levels.ALL,
levels.TRACE,
levels.DEBUG,
levels.INFO,
levels.WARN,
levels.ERROR
]);
});
it('should be greater than ERROR', function() {
assertThat(fatal).isGreaterThanOrEqualTo([
levels.ALL,
levels.TRACE,
levels.DEBUG,
levels.INFO,
levels.WARN,
levels.ERROR
]);
assertThat(fatal).isNotGreaterThanOrEqualTo([levels.OFF]);
});
it('should only be equal to FATAL', function() {
assertThat(fatal).isEqualTo([levels.toLevel("FATAL")]);
assertThat(fatal).isNotEqualTo([
levels.ALL,
levels.TRACE,
levels.DEBUG,
levels.INFO,
levels.WARN,
levels.ERROR,
levels.OFF
]);
});
});
describe('OFF', function() {
var off = levels.OFF;
it('should not be less than anything', function() {
assertThat(off).isNotLessThanOrEqualTo([
levels.ALL,
levels.TRACE,
levels.DEBUG,
levels.INFO,
levels.WARN,
levels.ERROR,
levels.FATAL
]);
});
it('should be greater than everything', function() {
assertThat(off).isGreaterThanOrEqualTo([
levels.ALL,
levels.TRACE,
levels.DEBUG,
levels.INFO,
levels.WARN,
levels.ERROR,
levels.FATAL
]);
});
it('should only be equal to OFF', function() {
assertThat(off).isEqualTo([levels.toLevel("OFF")]);
assertThat(off).isNotEqualTo([
levels.ALL,
levels.TRACE,
levels.DEBUG,
levels.INFO,
levels.WARN,
levels.ERROR,
levels.FATAL
]);
});
});
describe('isGreaterThanOrEqualTo', function() {
var info = levels.INFO;
it('should handle string arguments', function() {
assertThat(info).isGreaterThanOrEqualTo(["all", "trace", "debug"]);
assertThat(info).isNotGreaterThanOrEqualTo(['warn', 'ERROR', 'Fatal', 'off']);
});
});
describe('isLessThanOrEqualTo', function() {
var info = levels.INFO;
it('should handle string arguments', function() {
assertThat(info).isNotLessThanOrEqualTo(["all", "trace", "debug"]);
assertThat(info).isLessThanOrEqualTo(['warn', 'ERROR', 'Fatal', 'off']);
});
});
describe('isEqualTo', function() {
var info = levels.INFO;
it('should handle string arguments', function() {
assertThat(info).isEqualTo(["info", "INFO", "iNfO"]);
});
});
describe('toLevel', function() {
it('should ignore the case of arguments', function() {
levels.toLevel("debug").should.eql(levels.DEBUG);
levels.toLevel("DEBUG").should.eql(levels.DEBUG);
levels.toLevel("DeBuG").should.eql(levels.DEBUG);
});
it('should return undefined when argument is not recognised', function() {
should.not.exist(levels.toLevel("cheese"));
});
it('should return the default value if argument is not recognised', function() {
levels.toLevel("cheese", levels.DEBUG).should.eql(levels.DEBUG);
});
it('should return the default value if argument is falsy', function() {
levels.toLevel(undefined, levels.DEBUG).should.eql(levels.DEBUG);
levels.toLevel(null, levels.DEBUG).should.eql(levels.DEBUG);
});
});
});