2 var vows = require('vows')
3 , assert = require('assert')
4 , levels = require('../lib/levels');
6 function assertThat(level) {
7 function assertForEach(assertion, test, otherLevels) {
8 otherLevels.forEach(function(other) {
9 assertion.call(assert, test.call(level, other));
14 isLessThanOrEqualTo: function(levels) {
15 assertForEach(assert.isTrue, level.isLessThanOrEqualTo, levels);
17 isNotLessThanOrEqualTo: function(levels) {
18 assertForEach(assert.isFalse, level.isLessThanOrEqualTo, levels);
20 isGreaterThanOrEqualTo: function(levels) {
21 assertForEach(assert.isTrue, level.isGreaterThanOrEqualTo, levels);
23 isNotGreaterThanOrEqualTo: function(levels) {
24 assertForEach(assert.isFalse, level.isGreaterThanOrEqualTo, levels);
26 isEqualTo: function(levels) {
27 assertForEach(assert.isTrue, level.isEqualTo, levels);
29 isNotEqualTo: function(levels) {
30 assertForEach(assert.isFalse, level.isEqualTo, levels);
35 vows.describe('levels').addBatch({
38 'should define some levels': function(levels) {
39 assert.isNotNull(levels.ALL);
40 assert.isNotNull(levels.TRACE);
41 assert.isNotNull(levels.DEBUG);
42 assert.isNotNull(levels.INFO);
43 assert.isNotNull(levels.WARN);
44 assert.isNotNull(levels.ERROR);
45 assert.isNotNull(levels.FATAL);
46 assert.isNotNull(levels.MARK);
47 assert.isNotNull(levels.OFF);
51 'should be less than the other levels': function(all) {
52 assertThat(all).isLessThanOrEqualTo(
66 'should be greater than no levels': function(all) {
67 assertThat(all).isNotGreaterThanOrEqualTo(
80 'should only be equal to ALL': function(all) {
81 assertThat(all).isEqualTo([levels.toLevel("ALL")]);
82 assertThat(all).isNotEqualTo(
98 'should be less than DEBUG': function(trace) {
99 assertThat(trace).isLessThanOrEqualTo(
110 assertThat(trace).isNotLessThanOrEqualTo([levels.ALL]);
112 'should be greater than ALL': function(trace) {
113 assertThat(trace).isGreaterThanOrEqualTo([levels.ALL, levels.TRACE]);
114 assertThat(trace).isNotGreaterThanOrEqualTo(
126 'should only be equal to TRACE': function(trace) {
127 assertThat(trace).isEqualTo([levels.toLevel("TRACE")]);
128 assertThat(trace).isNotEqualTo(
144 'should be less than INFO': function(debug) {
145 assertThat(debug).isLessThanOrEqualTo(
155 assertThat(debug).isNotLessThanOrEqualTo([levels.ALL, levels.TRACE]);
157 'should be greater than TRACE': function(debug) {
158 assertThat(debug).isGreaterThanOrEqualTo([levels.ALL, levels.TRACE]);
159 assertThat(debug).isNotGreaterThanOrEqualTo(
170 'should only be equal to DEBUG': function(trace) {
171 assertThat(trace).isEqualTo([levels.toLevel("DEBUG")]);
172 assertThat(trace).isNotEqualTo(
188 'should be less than WARN': function(info) {
189 assertThat(info).isLessThanOrEqualTo([
196 assertThat(info).isNotLessThanOrEqualTo([levels.ALL, levels.TRACE, levels.DEBUG]);
198 'should be greater than DEBUG': function(info) {
199 assertThat(info).isGreaterThanOrEqualTo([levels.ALL, levels.TRACE, levels.DEBUG]);
200 assertThat(info).isNotGreaterThanOrEqualTo([
208 'should only be equal to INFO': function(trace) {
209 assertThat(trace).isEqualTo([levels.toLevel("INFO")]);
210 assertThat(trace).isNotEqualTo([
224 'should be less than ERROR': function(warn) {
225 assertThat(warn).isLessThanOrEqualTo([levels.ERROR, levels.FATAL, levels.MARK, levels.OFF]);
226 assertThat(warn).isNotLessThanOrEqualTo([
233 'should be greater than INFO': function(warn) {
234 assertThat(warn).isGreaterThanOrEqualTo([
240 assertThat(warn).isNotGreaterThanOrEqualTo([
241 levels.ERROR, levels.FATAL, levels.MARK, levels.OFF
244 'should only be equal to WARN': function(trace) {
245 assertThat(trace).isEqualTo([levels.toLevel("WARN")]);
246 assertThat(trace).isNotEqualTo([
259 'should be less than FATAL': function(error) {
260 assertThat(error).isLessThanOrEqualTo([levels.FATAL, levels.MARK, levels.OFF]);
261 assertThat(error).isNotLessThanOrEqualTo([
269 'should be greater than WARN': function(error) {
270 assertThat(error).isGreaterThanOrEqualTo([
277 assertThat(error).isNotGreaterThanOrEqualTo([levels.FATAL, levels.MARK, levels.OFF]);
279 'should only be equal to ERROR': function(trace) {
280 assertThat(trace).isEqualTo([levels.toLevel("ERROR")]);
281 assertThat(trace).isNotEqualTo([
295 'should be less than OFF': function(fatal) {
296 assertThat(fatal).isLessThanOrEqualTo([levels.MARK, levels.OFF]);
297 assertThat(fatal).isNotLessThanOrEqualTo([
306 'should be greater than ERROR': function(fatal) {
307 assertThat(fatal).isGreaterThanOrEqualTo([
315 assertThat(fatal).isNotGreaterThanOrEqualTo([levels.MARK, levels.OFF]);
317 'should only be equal to FATAL': function(fatal) {
318 assertThat(fatal).isEqualTo([levels.toLevel("FATAL")]);
319 assertThat(fatal).isNotEqualTo([
333 'should be less than OFF': function(mark) {
334 assertThat(mark).isLessThanOrEqualTo([levels.OFF]);
335 assertThat(mark).isNotLessThanOrEqualTo([
345 'should be greater than FATAL': function(mark) {
346 assertThat(mark).isGreaterThanOrEqualTo([
355 assertThat(mark).isNotGreaterThanOrEqualTo([levels.OFF]);
357 'should only be equal to MARK': function(mark) {
358 assertThat(mark).isEqualTo([levels.toLevel("MARK")]);
359 assertThat(mark).isNotEqualTo([
373 'should not be less than anything': function(off) {
374 assertThat(off).isNotLessThanOrEqualTo([
385 'should be greater than everything': function(off) {
386 assertThat(off).isGreaterThanOrEqualTo([
397 'should only be equal to OFF': function(off) {
398 assertThat(off).isEqualTo([levels.toLevel("OFF")]);
399 assertThat(off).isNotEqualTo([
412 'isGreaterThanOrEqualTo': {
414 'should handle string arguments': function(info) {
415 assertThat(info).isGreaterThanOrEqualTo(["all", "trace", "debug"]);
416 assertThat(info).isNotGreaterThanOrEqualTo(['warn', 'ERROR', 'Fatal', 'MARK', 'off']);
419 'isLessThanOrEqualTo': {
421 'should handle string arguments': function(info) {
422 assertThat(info).isNotLessThanOrEqualTo(["all", "trace", "debug"]);
423 assertThat(info).isLessThanOrEqualTo(['warn', 'ERROR', 'Fatal', 'MARK', 'off']);
428 'should handle string arguments': function(info) {
429 assertThat(info).isEqualTo(["info", "INFO", "iNfO"]);
433 'with lowercase argument': {
434 topic: levels.toLevel("debug"),
435 'should take the string and return the corresponding level': function(level) {
436 assert.equal(level, levels.DEBUG);
439 'with uppercase argument': {
440 topic: levels.toLevel("DEBUG"),
441 'should take the string and return the corresponding level': function(level) {
442 assert.equal(level, levels.DEBUG);
445 'with varying case': {
446 topic: levels.toLevel("DeBuG"),
447 'should take the string and return the corresponding level': function(level) {
448 assert.equal(level, levels.DEBUG);
451 'with unrecognised argument': {
452 topic: levels.toLevel("cheese"),
453 'should return undefined': function(level) {
454 assert.isUndefined(level);
457 'with unrecognised argument and default value': {
458 topic: levels.toLevel("cheese", levels.DEBUG),
459 'should return default value': function(level) {
460 assert.equal(level, levels.DEBUG);