123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404 |
- "use strict";
- var vows = require('vows')
- , assert = require('assert')
- , levels = require('../lib/levels');
- function assertThat(level) {
- function assertForEach(assertion, test, otherLevels) {
- otherLevels.forEach(function(other) {
- assertion.call(assert, test.call(level, other));
- });
- }
- return {
- isLessThanOrEqualTo: function(levels) {
- assertForEach(assert.isTrue, level.isLessThanOrEqualTo, levels);
- },
- isNotLessThanOrEqualTo: function(levels) {
- assertForEach(assert.isFalse, level.isLessThanOrEqualTo, levels);
- },
- isGreaterThanOrEqualTo: function(levels) {
- assertForEach(assert.isTrue, level.isGreaterThanOrEqualTo, levels);
- },
- isNotGreaterThanOrEqualTo: function(levels) {
- assertForEach(assert.isFalse, level.isGreaterThanOrEqualTo, levels);
- },
- isEqualTo: function(levels) {
- assertForEach(assert.isTrue, level.isEqualTo, levels);
- },
- isNotEqualTo: function(levels) {
- assertForEach(assert.isFalse, level.isEqualTo, levels);
- }
- };
- }
- vows.describe('levels').addBatch({
- 'values': {
- topic: levels,
- 'should define some levels': function(levels) {
- assert.isNotNull(levels.ALL);
- assert.isNotNull(levels.TRACE);
- assert.isNotNull(levels.DEBUG);
- assert.isNotNull(levels.INFO);
- assert.isNotNull(levels.WARN);
- assert.isNotNull(levels.ERROR);
- assert.isNotNull(levels.FATAL);
- assert.isNotNull(levels.OFF);
- },
- 'ALL': {
- topic: levels.ALL,
- 'should be less than the other levels': function(all) {
- assertThat(all).isLessThanOrEqualTo(
- [
- levels.ALL,
- levels.TRACE,
- levels.DEBUG,
- levels.INFO,
- levels.WARN,
- levels.ERROR,
- levels.FATAL,
- levels.OFF
- ]
- );
- },
- 'should be greater than no levels': function(all) {
- assertThat(all).isNotGreaterThanOrEqualTo(
- [
- levels.TRACE,
- levels.DEBUG,
- levels.INFO,
- levels.WARN,
- levels.ERROR,
- levels.FATAL,
- levels.OFF
- ]
- );
- },
- 'should only be equal to ALL': function(all) {
- assertThat(all).isEqualTo([levels.toLevel("ALL")]);
- assertThat(all).isNotEqualTo(
- [
- levels.TRACE,
- levels.DEBUG,
- levels.INFO,
- levels.WARN,
- levels.ERROR,
- levels.FATAL,
- levels.OFF
- ]
- );
- }
- },
- 'TRACE': {
- topic: levels.TRACE,
- 'should be less than DEBUG': function(trace) {
- assertThat(trace).isLessThanOrEqualTo(
- [
- levels.DEBUG,
- levels.INFO,
- levels.WARN,
- levels.ERROR,
- levels.FATAL,
- levels.OFF
- ]
- );
- assertThat(trace).isNotLessThanOrEqualTo([levels.ALL]);
- },
- 'should be greater than ALL': function(trace) {
- assertThat(trace).isGreaterThanOrEqualTo([levels.ALL, levels.TRACE]);
- assertThat(trace).isNotGreaterThanOrEqualTo(
- [
- levels.DEBUG,
- levels.INFO,
- levels.WARN,
- levels.ERROR,
- levels.FATAL,
- levels.OFF
- ]
- );
- },
- 'should only be equal to TRACE': function(trace) {
- assertThat(trace).isEqualTo([levels.toLevel("TRACE")]);
- assertThat(trace).isNotEqualTo(
- [
- levels.ALL,
- levels.DEBUG,
- levels.INFO,
- levels.WARN,
- levels.ERROR,
- levels.FATAL,
- levels.OFF
- ]
- );
- }
- },
- 'DEBUG': {
- topic: levels.DEBUG,
- 'should be less than INFO': function(debug) {
- assertThat(debug).isLessThanOrEqualTo(
- [
- levels.INFO,
- levels.WARN,
- levels.ERROR,
- levels.FATAL,
- levels.OFF
- ]
- );
- assertThat(debug).isNotLessThanOrEqualTo([levels.ALL, levels.TRACE]);
- },
- 'should be greater than TRACE': function(debug) {
- assertThat(debug).isGreaterThanOrEqualTo([levels.ALL, levels.TRACE]);
- assertThat(debug).isNotGreaterThanOrEqualTo(
- [
- levels.INFO,
- levels.WARN,
- levels.ERROR,
- levels.FATAL,
- levels.OFF
- ]
- );
- },
- 'should only be equal to DEBUG': function(trace) {
- assertThat(trace).isEqualTo([levels.toLevel("DEBUG")]);
- assertThat(trace).isNotEqualTo(
- [
- levels.ALL,
- levels.TRACE,
- levels.INFO,
- levels.WARN,
- levels.ERROR,
- levels.FATAL,
- levels.OFF
- ]
- );
- }
- },
- 'INFO': {
- topic: levels.INFO,
- 'should be less than WARN': function(info) {
- assertThat(info).isLessThanOrEqualTo([
- levels.WARN,
- levels.ERROR,
- levels.FATAL,
- levels.OFF
- ]);
- assertThat(info).isNotLessThanOrEqualTo([levels.ALL, levels.TRACE, levels.DEBUG]);
- },
- 'should be greater than DEBUG': function(info) {
- assertThat(info).isGreaterThanOrEqualTo([levels.ALL, levels.TRACE, levels.DEBUG]);
- assertThat(info).isNotGreaterThanOrEqualTo([
- levels.WARN,
- levels.ERROR,
- levels.FATAL,
- levels.OFF
- ]);
- },
- 'should only be equal to INFO': function(trace) {
- assertThat(trace).isEqualTo([levels.toLevel("INFO")]);
- assertThat(trace).isNotEqualTo([
- levels.ALL,
- levels.TRACE,
- levels.DEBUG,
- levels.WARN,
- levels.ERROR,
- levels.FATAL,
- levels.OFF
- ]);
- }
- },
- 'WARN': {
- topic: levels.WARN,
- 'should be less than ERROR': function(warn) {
- assertThat(warn).isLessThanOrEqualTo([levels.ERROR, levels.FATAL, levels.OFF]);
- assertThat(warn).isNotLessThanOrEqualTo([
- levels.ALL,
- levels.TRACE,
- levels.DEBUG,
- levels.INFO
- ]);
- },
- 'should be greater than INFO': function(warn) {
- assertThat(warn).isGreaterThanOrEqualTo([
- levels.ALL,
- levels.TRACE,
- levels.DEBUG,
- levels.INFO
- ]);
- assertThat(warn).isNotGreaterThanOrEqualTo([levels.ERROR, levels.FATAL, levels.OFF]);
- },
- 'should only be equal to WARN': function(trace) {
- assertThat(trace).isEqualTo([levels.toLevel("WARN")]);
- assertThat(trace).isNotEqualTo([
- levels.ALL,
- levels.TRACE,
- levels.DEBUG,
- levels.INFO,
- levels.ERROR,
- levels.FATAL,
- levels.OFF
- ]);
- }
- },
- 'ERROR': {
- topic: levels.ERROR,
- 'should be less than FATAL': function(error) {
- assertThat(error).isLessThanOrEqualTo([levels.FATAL, levels.OFF]);
- assertThat(error).isNotLessThanOrEqualTo([
- levels.ALL,
- levels.TRACE,
- levels.DEBUG,
- levels.INFO,
- levels.WARN
- ]);
- },
- 'should be greater than WARN': function(error) {
- assertThat(error).isGreaterThanOrEqualTo([
- levels.ALL,
- levels.TRACE,
- levels.DEBUG,
- levels.INFO,
- levels.WARN
- ]);
- assertThat(error).isNotGreaterThanOrEqualTo([levels.FATAL, levels.OFF]);
- },
- 'should only be equal to ERROR': function(trace) {
- assertThat(trace).isEqualTo([levels.toLevel("ERROR")]);
- assertThat(trace).isNotEqualTo([
- levels.ALL,
- levels.TRACE,
- levels.DEBUG,
- levels.INFO,
- levels.WARN,
- levels.FATAL,
- levels.OFF
- ]);
- }
- },
- 'FATAL': {
- topic: levels.FATAL,
- 'should be less than OFF': function(fatal) {
- assertThat(fatal).isLessThanOrEqualTo([levels.OFF]);
- assertThat(fatal).isNotLessThanOrEqualTo([
- levels.ALL,
- levels.TRACE,
- levels.DEBUG,
- levels.INFO,
- levels.WARN,
- levels.ERROR
- ]);
- },
- 'should be greater than ERROR': function(fatal) {
- assertThat(fatal).isGreaterThanOrEqualTo([
- levels.ALL,
- levels.TRACE,
- levels.DEBUG,
- levels.INFO,
- levels.WARN,
- levels.ERROR
- ]);
- assertThat(fatal).isNotGreaterThanOrEqualTo([levels.OFF]);
- },
- 'should only be equal to FATAL': function(fatal) {
- assertThat(fatal).isEqualTo([levels.toLevel("FATAL")]);
- assertThat(fatal).isNotEqualTo([
- levels.ALL,
- levels.TRACE,
- levels.DEBUG,
- levels.INFO,
- levels.WARN,
- levels.ERROR,
- levels.OFF
- ]);
- }
- },
- 'OFF': {
- topic: levels.OFF,
- 'should not be less than anything': function(off) {
- assertThat(off).isNotLessThanOrEqualTo([
- levels.ALL,
- levels.TRACE,
- levels.DEBUG,
- levels.INFO,
- levels.WARN,
- levels.ERROR,
- levels.FATAL
- ]);
- },
- 'should be greater than everything': function(off) {
- assertThat(off).isGreaterThanOrEqualTo([
- levels.ALL,
- levels.TRACE,
- levels.DEBUG,
- levels.INFO,
- levels.WARN,
- levels.ERROR,
- levels.FATAL
- ]);
- },
- 'should only be equal to OFF': function(off) {
- assertThat(off).isEqualTo([levels.toLevel("OFF")]);
- assertThat(off).isNotEqualTo([
- levels.ALL,
- levels.TRACE,
- levels.DEBUG,
- levels.INFO,
- levels.WARN,
- levels.ERROR,
- levels.FATAL
- ]);
- }
- }
- },
- 'isGreaterThanOrEqualTo': {
- topic: levels.INFO,
- 'should handle string arguments': function(info) {
- assertThat(info).isGreaterThanOrEqualTo(["all", "trace", "debug"]);
- assertThat(info).isNotGreaterThanOrEqualTo(['warn', 'ERROR', 'Fatal', 'off']);
- }
- },
- 'isLessThanOrEqualTo': {
- topic: levels.INFO,
- 'should handle string arguments': function(info) {
- assertThat(info).isNotLessThanOrEqualTo(["all", "trace", "debug"]);
- assertThat(info).isLessThanOrEqualTo(['warn', 'ERROR', 'Fatal', 'off']);
- }
- },
- 'isEqualTo': {
- topic: levels.INFO,
- 'should handle string arguments': function(info) {
- assertThat(info).isEqualTo(["info", "INFO", "iNfO"]);
- }
- },
- 'toLevel': {
- 'with lowercase argument': {
- topic: levels.toLevel("debug"),
- 'should take the string and return the corresponding level': function(level) {
- assert.equal(level, levels.DEBUG);
- }
- },
- 'with uppercase argument': {
- topic: levels.toLevel("DEBUG"),
- 'should take the string and return the corresponding level': function(level) {
- assert.equal(level, levels.DEBUG);
- }
- },
- 'with varying case': {
- topic: levels.toLevel("DeBuG"),
- 'should take the string and return the corresponding level': function(level) {
- assert.equal(level, levels.DEBUG);
- }
- },
- 'with unrecognised argument': {
- topic: levels.toLevel("cheese"),
- 'should return undefined': function(level) {
- assert.isUndefined(level);
- }
- },
- 'with unrecognised argument and default value': {
- topic: levels.toLevel("cheese", levels.DEBUG),
- 'should return default value': function(level) {
- assert.equal(level, levels.DEBUG);
- }
- }
- }
- }).export(module);
|