428 lines
11 KiB
JavaScript
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);
|
|
});
|
|
});
|
|
|
|
});
|