Comparing version 1.1.0 to 1.2.0
import deepEqual from 'deep-equal'; | ||
import indentString from 'indent-string'; | ||
@@ -100,5 +99,4 @@ var str = function (a) { return ( | ||
}; | ||
Assertions.prototype.equal = function equal (value1, value2, message, strict){ | ||
if(!isEqual(value1, value2, strict)){ | ||
//if(value1 !== value2){ | ||
Assertions.prototype.equal = function equal (value1, value2, message){ | ||
if(!isEqual(value1, value2, true)){ | ||
var err = createAssertError({ | ||
@@ -114,5 +112,16 @@ message: showNotEqual(message, value1, value2), | ||
}; | ||
Assertions.prototype.notEqual = function notEqual (value1, value2, message, strict){ | ||
if(isEqual(value1, value2, strict)){ | ||
//if(value1 === value2){ | ||
Assertions.prototype.equalish = function equalish (value1, value2, message){ | ||
if(!isEqual(value1, value2, false)){ | ||
var err = createAssertError({ | ||
message: showNotEqual(message, value1, value2), | ||
operator: 'equalish', | ||
expected: showEqual(null, value1, value2), | ||
actual: showNotEqual(null, value1, value2) | ||
}, false); | ||
throw err; | ||
} | ||
}; | ||
Assertions.prototype.notEqual = function notEqual (value1, value2, message){ | ||
if(isEqual(value1, value2, true)){ | ||
var err = createAssertError(message, { | ||
@@ -128,2 +137,14 @@ message: showEqual(message, value1, value2), | ||
}; | ||
Assertions.prototype.notEqualish = function notEqualish (value1, value2, message){ | ||
if(isEqual(value1, value2, false)){ | ||
var err = createAssertError(message, { | ||
message: showEqual(message, value1, value2), | ||
operator: 'notEqualish', | ||
expected: showNotEqual(null, value1, value2), | ||
actual: showEqual(null, value1, value2) | ||
}, false); | ||
throw err; | ||
} | ||
}; | ||
Assertions.prototype.reject = function reject (message){ | ||
@@ -140,6 +161,4 @@ if ( message === void 0 ) message=''; | ||
}; | ||
Assertions.prototype.deepEqual = function deepEqual$1 (object1, object2, message, strict){ | ||
if ( strict === void 0 ) strict = true; | ||
if(!deepEqual(object1, object2, {strict: strict})){ | ||
Assertions.prototype.deepEqual = function deepEqual$1 (object1, object2, message){ | ||
if(!deepEqual(object1, object2, {strict:true})){ | ||
var err = createAssertError({ | ||
@@ -155,3 +174,15 @@ message: showNotEqual(message, object1, object2), | ||
}; | ||
Assertions.prototype.deepEqualish = function deepEqualish (object1, object2, message){ | ||
if(!deepEqual(object1, object2, {strict:false})){ | ||
var err = createAssertError({ | ||
message: showNotEqual(message, object1, object2), | ||
operator: 'deepEqualish', | ||
expected: showEqual(null, object1, object2), | ||
actual: showNotEqual(null, object1, object2) | ||
}, false); | ||
throw err; | ||
} | ||
}; | ||
var RunControls = function RunControls(tracker, ref){ | ||
@@ -165,3 +196,3 @@ if ( ref === void 0 ) ref = {}; | ||
Object.defineProperties(this, { | ||
count: {value: count} | ||
count: {value: count}, | ||
}); | ||
@@ -175,3 +206,3 @@ | ||
} | ||
return { | ||
@@ -220,26 +251,2 @@ description: description, | ||
var writeVersion = (function (){ | ||
var g; | ||
var TAP_VERSION_WRITTEN = false; | ||
if(typeof global === 'undefined'){ | ||
g = window; | ||
}else{ | ||
g = global; | ||
} | ||
if(typeof g['TAP_VERSION_WRITTEN'] === 'undefined'){ | ||
Object.defineProperty(g, 'TAP_VERSION_WRITTEN', { | ||
get: function get(){ | ||
return TAP_VERSION_WRITTEN; | ||
} | ||
}); | ||
} | ||
return function (){ | ||
if(g.TAP_VERSION_WRITTEN) { return; } | ||
console.log('TAP version 13'); | ||
TAP_VERSION_WRITTEN = true; | ||
}; | ||
})(); | ||
function def(self, src){ | ||
@@ -272,11 +279,6 @@ for(var n in src){ | ||
value: value, | ||
count: count | ||
count: count, | ||
tracker: tracker | ||
}); | ||
Object.defineProperty(this, 'startTime', { | ||
get: function get(){ | ||
return tracker.startTime | ||
} | ||
}); | ||
Object.defineProperty(this, 'plan', { | ||
@@ -287,37 +289,42 @@ get: function get(){ | ||
}); | ||
}; | ||
PrintControls.prototype.tap = function tap (){ | ||
var buffer = []; | ||
if(this.count === 1){ | ||
buffer.push('TAP version 13'); | ||
buffer.push('1..'+this.plan); | ||
} | ||
this.tap = function(){ | ||
var this$1 = this; | ||
var ref = this; | ||
var description = ref.description; | ||
var value = ref.value; | ||
var count = ref.count; | ||
var tracker = ref.tracker; | ||
var message = description.length ? description : ''; | ||
var str = ''; | ||
if(this.passed){ | ||
str = 'ok ' + count + ' - ' + message; | ||
}else if(this.failed){ | ||
var errMessage = value ? value.message : ''; | ||
str = 'not ok ' + count + ' - ' + message + ' ' + errMessage; | ||
} | ||
if(count === 1){ | ||
console.log('TAP version 13'); | ||
console.log('1..'+this.plan); | ||
} | ||
buffer.push(str); | ||
var message = description.length ? description : ''; | ||
var str = ''; | ||
if(passed){ | ||
str = 'ok ' + count + ' - ' + message; | ||
}else if(failed){ | ||
var errMessage = value ? value.message : ''; | ||
str = 'not ok ' + count + ' - ' + message + ' ' + errMessage; | ||
if(this.count === tracker.plan){ | ||
buffer.push('# duration '+(Date.now()-tracker.startTime) + ' ms'); | ||
var end = ''; | ||
if(tracker.passed) | ||
{ end += '# passed '+tracker.passed; } | ||
if(tracker.failed) | ||
{ end += ' failed '+tracker.failed; } | ||
if(end.length){ | ||
buffer.push(end); | ||
} | ||
if(count === tracker.plan){ | ||
setTimeout(function (){ | ||
if(!tracker.startTime) { return; } | ||
console.log('# duration '+(Date.now()-this$1.startTime) + ' ms'); | ||
if(tracker.passed) | ||
{ console.log('# passed '+tracker.passed); } | ||
if(tracker.failed) | ||
{ console.log('# failed '+tracker.failed); } | ||
}); | ||
} | ||
return str; | ||
}; | ||
} | ||
return buffer; | ||
}; | ||
var Test = function Test(tracker, ref){ | ||
var Test = function Test(ref){ | ||
if ( ref === void 0 ) ref = {}; | ||
@@ -333,17 +340,8 @@ var description = ref.description; if ( description === void 0 ) description = ''; | ||
Object.defineProperty(this, 'run', { | ||
value: function(ref){ | ||
if ( ref === void 0 ) ref = {}; | ||
var count = ref.count; if ( count === void 0 ) count = 1; | ||
var plan = ref.plan; if ( plan === void 0 ) plan = 1; | ||
Object.defineProperty(this, 'runTest', { | ||
value: function(tracker){ | ||
Object.defineProperty(this, 'plan', { | ||
value: plan | ||
}); | ||
var running = new RunControls(tracker, { | ||
description: description, | ||
count: count, | ||
plan: plan | ||
count: tracker.count | ||
}); | ||
@@ -362,25 +360,18 @@ | ||
}; | ||
FastReducableQueue.prototype.take = function take (){ | ||
FastReducableQueue.prototype.take = function take (queue){ | ||
var this$1 = this; | ||
var queues = [], len = arguments.length; | ||
while ( len-- ) queues[ len ] = arguments[ len ]; | ||
for(var j=0; j<queues.length; j++){ | ||
for(var i=0; i<queues[j].length; i++){ | ||
this$1.push(queues[j][i]); | ||
} | ||
queues[j].clear(); | ||
for(var i=0, len=queue.length; i<len; i++){ | ||
this$1.push(queue[i]); | ||
} | ||
queue.clear(); | ||
}; | ||
FastReducableQueue.prototype.push = function push (){ | ||
var this$1 = this; | ||
var values = [], len = arguments.length; | ||
while ( len-- ) values[ len ] = arguments[ len ]; | ||
var values = [], len$1 = arguments.length; | ||
while ( len$1-- ) values[ len$1 ] = arguments[ len$1 ]; | ||
if(this.length === 0){ | ||
for(var i=0; i<50; i++){ this$1[i] = {}; } | ||
} | ||
for(var i$1=0; i$1<values.length; i$1++){ | ||
this$1[this$1.length] = values[i$1]; | ||
for(var i=0, len=values.length; i<len; i++){ | ||
this$1[this$1.length] = values[i]; | ||
++this$1.length; | ||
@@ -415,4 +406,4 @@ } | ||
var i = 0; | ||
while(i < this.length){ | ||
var i = -1, len = this.length; | ||
while(++i < len){ | ||
try{ | ||
@@ -426,4 +417,4 @@ delete this$1[i]; | ||
var Demeter = function Demeter(){ | ||
var self = this, | ||
queue = this.queue = new FastReducableQueue(); | ||
var self = this; | ||
this.queue = new FastReducableQueue(); | ||
@@ -433,3 +424,3 @@ this.count = 0; | ||
this.failed = 0; | ||
//this.complete = false; | ||
Object.defineProperty(this, 'complete', { | ||
@@ -440,5 +431,6 @@ get: function get(){ | ||
}); | ||
Object.defineProperty(this, 'plan', { | ||
get: function get(){ | ||
return queue.length; | ||
return self.queue.length; | ||
} | ||
@@ -456,3 +448,3 @@ }); | ||
++this$1.count; | ||
t.run(this$1); | ||
return t.runTest(this$1); | ||
}); | ||
@@ -469,11 +461,5 @@ }, Promise.resolve()); | ||
for(var j=0; j<holders.length; j++){ | ||
var queue = holders[j].queue; | ||
var i = 0; | ||
while(i < queue.length){ | ||
this$1.queue.push(queue[i]); | ||
++i; | ||
} | ||
holders[j].queue = null; | ||
} | ||
holders.forEach(function (h){ | ||
this$1.queue.take(h.queue); | ||
}); | ||
@@ -489,8 +475,8 @@ return this; | ||
var test = new Test(this, { | ||
var test = new Test({ | ||
description: description, | ||
startTime: this.startTime, | ||
print: function print(complete){ | ||
var output = complete.tap(); | ||
console.log(output); | ||
complete.tap().forEach(function (str){ | ||
console.log(str); | ||
}); | ||
}, | ||
@@ -512,8 +498,8 @@ run: function run(controls){ | ||
var test = new Test(this, { | ||
var test = new Test({ | ||
description: description, | ||
startTime: this.startTime, | ||
print: function print(complete){ | ||
var output = complete.tap(); | ||
console.log(output); | ||
complete.tap().forEach(function (str){ | ||
console.log(str); | ||
}); | ||
}, | ||
@@ -520,0 +506,0 @@ run: function run(controls){ |
@@ -8,3 +8,2 @@ 'use strict'; | ||
var deepEqual = _interopDefault(require('deep-equal')); | ||
var indentString = _interopDefault(require('indent-string')); | ||
@@ -107,5 +106,4 @@ var str = function (a) { return ( | ||
}; | ||
Assertions.prototype.equal = function equal (value1, value2, message, strict){ | ||
if(!isEqual(value1, value2, strict)){ | ||
//if(value1 !== value2){ | ||
Assertions.prototype.equal = function equal (value1, value2, message){ | ||
if(!isEqual(value1, value2, true)){ | ||
var err = createAssertError({ | ||
@@ -121,5 +119,16 @@ message: showNotEqual(message, value1, value2), | ||
}; | ||
Assertions.prototype.notEqual = function notEqual (value1, value2, message, strict){ | ||
if(isEqual(value1, value2, strict)){ | ||
//if(value1 === value2){ | ||
Assertions.prototype.equalish = function equalish (value1, value2, message){ | ||
if(!isEqual(value1, value2, false)){ | ||
var err = createAssertError({ | ||
message: showNotEqual(message, value1, value2), | ||
operator: 'equalish', | ||
expected: showEqual(null, value1, value2), | ||
actual: showNotEqual(null, value1, value2) | ||
}, false); | ||
throw err; | ||
} | ||
}; | ||
Assertions.prototype.notEqual = function notEqual (value1, value2, message){ | ||
if(isEqual(value1, value2, true)){ | ||
var err = createAssertError(message, { | ||
@@ -135,2 +144,14 @@ message: showEqual(message, value1, value2), | ||
}; | ||
Assertions.prototype.notEqualish = function notEqualish (value1, value2, message){ | ||
if(isEqual(value1, value2, false)){ | ||
var err = createAssertError(message, { | ||
message: showEqual(message, value1, value2), | ||
operator: 'notEqualish', | ||
expected: showNotEqual(null, value1, value2), | ||
actual: showEqual(null, value1, value2) | ||
}, false); | ||
throw err; | ||
} | ||
}; | ||
Assertions.prototype.reject = function reject (message){ | ||
@@ -147,6 +168,4 @@ if ( message === void 0 ) message=''; | ||
}; | ||
Assertions.prototype.deepEqual = function deepEqual$1 (object1, object2, message, strict){ | ||
if ( strict === void 0 ) strict = true; | ||
if(!deepEqual(object1, object2, {strict: strict})){ | ||
Assertions.prototype.deepEqual = function deepEqual$1 (object1, object2, message){ | ||
if(!deepEqual(object1, object2, {strict:true})){ | ||
var err = createAssertError({ | ||
@@ -162,3 +181,15 @@ message: showNotEqual(message, object1, object2), | ||
}; | ||
Assertions.prototype.deepEqualish = function deepEqualish (object1, object2, message){ | ||
if(!deepEqual(object1, object2, {strict:false})){ | ||
var err = createAssertError({ | ||
message: showNotEqual(message, object1, object2), | ||
operator: 'deepEqualish', | ||
expected: showEqual(null, object1, object2), | ||
actual: showNotEqual(null, object1, object2) | ||
}, false); | ||
throw err; | ||
} | ||
}; | ||
var RunControls = function RunControls(tracker, ref){ | ||
@@ -172,3 +203,3 @@ if ( ref === void 0 ) ref = {}; | ||
Object.defineProperties(this, { | ||
count: {value: count} | ||
count: {value: count}, | ||
}); | ||
@@ -182,3 +213,3 @@ | ||
} | ||
return { | ||
@@ -227,26 +258,2 @@ description: description, | ||
var writeVersion = (function (){ | ||
var g; | ||
var TAP_VERSION_WRITTEN = false; | ||
if(typeof global === 'undefined'){ | ||
g = window; | ||
}else{ | ||
g = global; | ||
} | ||
if(typeof g['TAP_VERSION_WRITTEN'] === 'undefined'){ | ||
Object.defineProperty(g, 'TAP_VERSION_WRITTEN', { | ||
get: function get(){ | ||
return TAP_VERSION_WRITTEN; | ||
} | ||
}); | ||
} | ||
return function (){ | ||
if(g.TAP_VERSION_WRITTEN) { return; } | ||
console.log('TAP version 13'); | ||
TAP_VERSION_WRITTEN = true; | ||
}; | ||
})(); | ||
function def(self, src){ | ||
@@ -279,11 +286,6 @@ for(var n in src){ | ||
value: value, | ||
count: count | ||
count: count, | ||
tracker: tracker | ||
}); | ||
Object.defineProperty(this, 'startTime', { | ||
get: function get(){ | ||
return tracker.startTime | ||
} | ||
}); | ||
Object.defineProperty(this, 'plan', { | ||
@@ -294,37 +296,42 @@ get: function get(){ | ||
}); | ||
}; | ||
PrintControls.prototype.tap = function tap (){ | ||
var buffer = []; | ||
if(this.count === 1){ | ||
buffer.push('TAP version 13'); | ||
buffer.push('1..'+this.plan); | ||
} | ||
this.tap = function(){ | ||
var this$1 = this; | ||
var ref = this; | ||
var description = ref.description; | ||
var value = ref.value; | ||
var count = ref.count; | ||
var tracker = ref.tracker; | ||
var message = description.length ? description : ''; | ||
var str = ''; | ||
if(this.passed){ | ||
str = 'ok ' + count + ' - ' + message; | ||
}else if(this.failed){ | ||
var errMessage = value ? value.message : ''; | ||
str = 'not ok ' + count + ' - ' + message + ' ' + errMessage; | ||
} | ||
if(count === 1){ | ||
console.log('TAP version 13'); | ||
console.log('1..'+this.plan); | ||
} | ||
buffer.push(str); | ||
var message = description.length ? description : ''; | ||
var str = ''; | ||
if(passed){ | ||
str = 'ok ' + count + ' - ' + message; | ||
}else if(failed){ | ||
var errMessage = value ? value.message : ''; | ||
str = 'not ok ' + count + ' - ' + message + ' ' + errMessage; | ||
if(this.count === tracker.plan){ | ||
buffer.push('# duration '+(Date.now()-tracker.startTime) + ' ms'); | ||
var end = ''; | ||
if(tracker.passed) | ||
{ end += '# passed '+tracker.passed; } | ||
if(tracker.failed) | ||
{ end += ' failed '+tracker.failed; } | ||
if(end.length){ | ||
buffer.push(end); | ||
} | ||
if(count === tracker.plan){ | ||
setTimeout(function (){ | ||
if(!tracker.startTime) { return; } | ||
console.log('# duration '+(Date.now()-this$1.startTime) + ' ms'); | ||
if(tracker.passed) | ||
{ console.log('# passed '+tracker.passed); } | ||
if(tracker.failed) | ||
{ console.log('# failed '+tracker.failed); } | ||
}); | ||
} | ||
return str; | ||
}; | ||
} | ||
return buffer; | ||
}; | ||
var Test = function Test(tracker, ref){ | ||
var Test = function Test(ref){ | ||
if ( ref === void 0 ) ref = {}; | ||
@@ -340,17 +347,8 @@ var description = ref.description; if ( description === void 0 ) description = ''; | ||
Object.defineProperty(this, 'run', { | ||
value: function(ref){ | ||
if ( ref === void 0 ) ref = {}; | ||
var count = ref.count; if ( count === void 0 ) count = 1; | ||
var plan = ref.plan; if ( plan === void 0 ) plan = 1; | ||
Object.defineProperty(this, 'runTest', { | ||
value: function(tracker){ | ||
Object.defineProperty(this, 'plan', { | ||
value: plan | ||
}); | ||
var running = new RunControls(tracker, { | ||
description: description, | ||
count: count, | ||
plan: plan | ||
count: tracker.count | ||
}); | ||
@@ -369,25 +367,18 @@ | ||
}; | ||
FastReducableQueue.prototype.take = function take (){ | ||
FastReducableQueue.prototype.take = function take (queue){ | ||
var this$1 = this; | ||
var queues = [], len = arguments.length; | ||
while ( len-- ) queues[ len ] = arguments[ len ]; | ||
for(var j=0; j<queues.length; j++){ | ||
for(var i=0; i<queues[j].length; i++){ | ||
this$1.push(queues[j][i]); | ||
} | ||
queues[j].clear(); | ||
for(var i=0, len=queue.length; i<len; i++){ | ||
this$1.push(queue[i]); | ||
} | ||
queue.clear(); | ||
}; | ||
FastReducableQueue.prototype.push = function push (){ | ||
var this$1 = this; | ||
var values = [], len = arguments.length; | ||
while ( len-- ) values[ len ] = arguments[ len ]; | ||
var values = [], len$1 = arguments.length; | ||
while ( len$1-- ) values[ len$1 ] = arguments[ len$1 ]; | ||
if(this.length === 0){ | ||
for(var i=0; i<50; i++){ this$1[i] = {}; } | ||
} | ||
for(var i$1=0; i$1<values.length; i$1++){ | ||
this$1[this$1.length] = values[i$1]; | ||
for(var i=0, len=values.length; i<len; i++){ | ||
this$1[this$1.length] = values[i]; | ||
++this$1.length; | ||
@@ -422,4 +413,4 @@ } | ||
var i = 0; | ||
while(i < this.length){ | ||
var i = -1, len = this.length; | ||
while(++i < len){ | ||
try{ | ||
@@ -433,4 +424,4 @@ delete this$1[i]; | ||
var Demeter = function Demeter(){ | ||
var self = this, | ||
queue = this.queue = new FastReducableQueue(); | ||
var self = this; | ||
this.queue = new FastReducableQueue(); | ||
@@ -440,3 +431,3 @@ this.count = 0; | ||
this.failed = 0; | ||
//this.complete = false; | ||
Object.defineProperty(this, 'complete', { | ||
@@ -447,5 +438,6 @@ get: function get(){ | ||
}); | ||
Object.defineProperty(this, 'plan', { | ||
get: function get(){ | ||
return queue.length; | ||
return self.queue.length; | ||
} | ||
@@ -463,3 +455,3 @@ }); | ||
++this$1.count; | ||
t.run(this$1); | ||
return t.runTest(this$1); | ||
}); | ||
@@ -476,11 +468,5 @@ }, Promise.resolve()); | ||
for(var j=0; j<holders.length; j++){ | ||
var queue = holders[j].queue; | ||
var i = 0; | ||
while(i < queue.length){ | ||
this$1.queue.push(queue[i]); | ||
++i; | ||
} | ||
holders[j].queue = null; | ||
} | ||
holders.forEach(function (h){ | ||
this$1.queue.take(h.queue); | ||
}); | ||
@@ -496,8 +482,8 @@ return this; | ||
var test = new Test(this, { | ||
var test = new Test({ | ||
description: description, | ||
startTime: this.startTime, | ||
print: function print(complete){ | ||
var output = complete.tap(); | ||
console.log(output); | ||
complete.tap().forEach(function (str){ | ||
console.log(str); | ||
}); | ||
}, | ||
@@ -519,8 +505,8 @@ run: function run(controls){ | ||
var test = new Test(this, { | ||
var test = new Test({ | ||
description: description, | ||
startTime: this.startTime, | ||
print: function print(complete){ | ||
var output = complete.tap(); | ||
console.log(output); | ||
complete.tap().forEach(function (str){ | ||
console.log(str); | ||
}); | ||
}, | ||
@@ -527,0 +513,0 @@ run: function run(controls){ |
@@ -236,5 +236,4 @@ (function (exports) { | ||
}; | ||
Assertions.prototype.equal = function equal (value1, value2, message, strict){ | ||
if(!isEqual(value1, value2, strict)){ | ||
//if(value1 !== value2){ | ||
Assertions.prototype.equal = function equal (value1, value2, message){ | ||
if(!isEqual(value1, value2, true)){ | ||
var err = createAssertError({ | ||
@@ -250,5 +249,16 @@ message: showNotEqual(message, value1, value2), | ||
}; | ||
Assertions.prototype.notEqual = function notEqual (value1, value2, message, strict){ | ||
if(isEqual(value1, value2, strict)){ | ||
//if(value1 === value2){ | ||
Assertions.prototype.equalish = function equalish (value1, value2, message){ | ||
if(!isEqual(value1, value2, false)){ | ||
var err = createAssertError({ | ||
message: showNotEqual(message, value1, value2), | ||
operator: 'equalish', | ||
expected: showEqual(null, value1, value2), | ||
actual: showNotEqual(null, value1, value2) | ||
}, false); | ||
throw err; | ||
} | ||
}; | ||
Assertions.prototype.notEqual = function notEqual (value1, value2, message){ | ||
if(isEqual(value1, value2, true)){ | ||
var err = createAssertError(message, { | ||
@@ -264,2 +274,14 @@ message: showEqual(message, value1, value2), | ||
}; | ||
Assertions.prototype.notEqualish = function notEqualish (value1, value2, message){ | ||
if(isEqual(value1, value2, false)){ | ||
var err = createAssertError(message, { | ||
message: showEqual(message, value1, value2), | ||
operator: 'notEqualish', | ||
expected: showNotEqual(null, value1, value2), | ||
actual: showEqual(null, value1, value2) | ||
}, false); | ||
throw err; | ||
} | ||
}; | ||
Assertions.prototype.reject = function reject (message){ | ||
@@ -276,6 +298,4 @@ if ( message === void 0 ) message=''; | ||
}; | ||
Assertions.prototype.deepEqual = function deepEqual$1 (object1, object2, message, strict){ | ||
if ( strict === void 0 ) strict = true; | ||
if(!index(object1, object2, {strict: strict})){ | ||
Assertions.prototype.deepEqual = function deepEqual$1 (object1, object2, message){ | ||
if(!index(object1, object2, {strict:true})){ | ||
var err = createAssertError({ | ||
@@ -291,3 +311,15 @@ message: showNotEqual(message, object1, object2), | ||
}; | ||
Assertions.prototype.deepEqualish = function deepEqualish (object1, object2, message){ | ||
if(!index(object1, object2, {strict:false})){ | ||
var err = createAssertError({ | ||
message: showNotEqual(message, object1, object2), | ||
operator: 'deepEqualish', | ||
expected: showEqual(null, object1, object2), | ||
actual: showNotEqual(null, object1, object2) | ||
}, false); | ||
throw err; | ||
} | ||
}; | ||
var RunControls = function RunControls(tracker, ref){ | ||
@@ -301,3 +333,3 @@ if ( ref === void 0 ) ref = {}; | ||
Object.defineProperties(this, { | ||
count: {value: count} | ||
count: {value: count}, | ||
}); | ||
@@ -311,3 +343,3 @@ | ||
} | ||
return { | ||
@@ -356,26 +388,2 @@ description: description, | ||
var writeVersion = (function (){ | ||
var g; | ||
var TAP_VERSION_WRITTEN = false; | ||
if(typeof global === 'undefined'){ | ||
g = window; | ||
}else{ | ||
g = global; | ||
} | ||
if(typeof g['TAP_VERSION_WRITTEN'] === 'undefined'){ | ||
Object.defineProperty(g, 'TAP_VERSION_WRITTEN', { | ||
get: function get(){ | ||
return TAP_VERSION_WRITTEN; | ||
} | ||
}); | ||
} | ||
return function (){ | ||
if(g.TAP_VERSION_WRITTEN) { return; } | ||
console.log('TAP version 13'); | ||
TAP_VERSION_WRITTEN = true; | ||
}; | ||
})(); | ||
function def(self, src){ | ||
@@ -408,11 +416,6 @@ for(var n in src){ | ||
value: value, | ||
count: count | ||
count: count, | ||
tracker: tracker | ||
}); | ||
Object.defineProperty(this, 'startTime', { | ||
get: function get(){ | ||
return tracker.startTime | ||
} | ||
}); | ||
Object.defineProperty(this, 'plan', { | ||
@@ -423,37 +426,42 @@ get: function get(){ | ||
}); | ||
}; | ||
PrintControls.prototype.tap = function tap (){ | ||
var buffer = []; | ||
if(this.count === 1){ | ||
buffer.push('TAP version 13'); | ||
buffer.push('1..'+this.plan); | ||
} | ||
this.tap = function(){ | ||
var this$1 = this; | ||
var ref = this; | ||
var description = ref.description; | ||
var value = ref.value; | ||
var count = ref.count; | ||
var tracker = ref.tracker; | ||
var message = description.length ? description : ''; | ||
var str = ''; | ||
if(this.passed){ | ||
str = 'ok ' + count + ' - ' + message; | ||
}else if(this.failed){ | ||
var errMessage = value ? value.message : ''; | ||
str = 'not ok ' + count + ' - ' + message + ' ' + errMessage; | ||
} | ||
if(count === 1){ | ||
console.log('TAP version 13'); | ||
console.log('1..'+this.plan); | ||
} | ||
buffer.push(str); | ||
var message = description.length ? description : ''; | ||
var str = ''; | ||
if(passed){ | ||
str = 'ok ' + count + ' - ' + message; | ||
}else if(failed){ | ||
var errMessage = value ? value.message : ''; | ||
str = 'not ok ' + count + ' - ' + message + ' ' + errMessage; | ||
if(this.count === tracker.plan){ | ||
buffer.push('# duration '+(Date.now()-tracker.startTime) + ' ms'); | ||
var end = ''; | ||
if(tracker.passed) | ||
{ end += '# passed '+tracker.passed; } | ||
if(tracker.failed) | ||
{ end += ' failed '+tracker.failed; } | ||
if(end.length){ | ||
buffer.push(end); | ||
} | ||
if(count === tracker.plan){ | ||
setTimeout(function (){ | ||
if(!tracker.startTime) { return; } | ||
console.log('# duration '+(Date.now()-this$1.startTime) + ' ms'); | ||
if(tracker.passed) | ||
{ console.log('# passed '+tracker.passed); } | ||
if(tracker.failed) | ||
{ console.log('# failed '+tracker.failed); } | ||
}); | ||
} | ||
return str; | ||
}; | ||
} | ||
return buffer; | ||
}; | ||
var Test = function Test(tracker, ref){ | ||
var Test = function Test(ref){ | ||
if ( ref === void 0 ) ref = {}; | ||
@@ -469,17 +477,8 @@ var description = ref.description; if ( description === void 0 ) description = ''; | ||
Object.defineProperty(this, 'run', { | ||
value: function(ref){ | ||
if ( ref === void 0 ) ref = {}; | ||
var count = ref.count; if ( count === void 0 ) count = 1; | ||
var plan = ref.plan; if ( plan === void 0 ) plan = 1; | ||
Object.defineProperty(this, 'runTest', { | ||
value: function(tracker){ | ||
Object.defineProperty(this, 'plan', { | ||
value: plan | ||
}); | ||
var running = new RunControls(tracker, { | ||
description: description, | ||
count: count, | ||
plan: plan | ||
count: tracker.count | ||
}); | ||
@@ -498,25 +497,18 @@ | ||
}; | ||
FastReducableQueue.prototype.take = function take (){ | ||
FastReducableQueue.prototype.take = function take (queue){ | ||
var this$1 = this; | ||
var queues = [], len = arguments.length; | ||
while ( len-- ) queues[ len ] = arguments[ len ]; | ||
for(var j=0; j<queues.length; j++){ | ||
for(var i=0; i<queues[j].length; i++){ | ||
this$1.push(queues[j][i]); | ||
} | ||
queues[j].clear(); | ||
for(var i=0, len=queue.length; i<len; i++){ | ||
this$1.push(queue[i]); | ||
} | ||
queue.clear(); | ||
}; | ||
FastReducableQueue.prototype.push = function push (){ | ||
var this$1 = this; | ||
var values = [], len = arguments.length; | ||
while ( len-- ) values[ len ] = arguments[ len ]; | ||
var values = [], len$1 = arguments.length; | ||
while ( len$1-- ) values[ len$1 ] = arguments[ len$1 ]; | ||
if(this.length === 0){ | ||
for(var i=0; i<50; i++){ this$1[i] = {}; } | ||
} | ||
for(var i$1=0; i$1<values.length; i$1++){ | ||
this$1[this$1.length] = values[i$1]; | ||
for(var i=0, len=values.length; i<len; i++){ | ||
this$1[this$1.length] = values[i]; | ||
++this$1.length; | ||
@@ -551,4 +543,4 @@ } | ||
var i = 0; | ||
while(i < this.length){ | ||
var i = -1, len = this.length; | ||
while(++i < len){ | ||
try{ | ||
@@ -562,4 +554,4 @@ delete this$1[i]; | ||
var Demeter = function Demeter(){ | ||
var self = this, | ||
queue = this.queue = new FastReducableQueue(); | ||
var self = this; | ||
this.queue = new FastReducableQueue(); | ||
@@ -569,3 +561,3 @@ this.count = 0; | ||
this.failed = 0; | ||
//this.complete = false; | ||
Object.defineProperty(this, 'complete', { | ||
@@ -576,5 +568,6 @@ get: function get(){ | ||
}); | ||
Object.defineProperty(this, 'plan', { | ||
get: function get(){ | ||
return queue.length; | ||
return self.queue.length; | ||
} | ||
@@ -592,3 +585,3 @@ }); | ||
++this$1.count; | ||
t.run(this$1); | ||
return t.runTest(this$1); | ||
}); | ||
@@ -605,11 +598,5 @@ }, Promise.resolve()); | ||
for(var j=0; j<holders.length; j++){ | ||
var queue = holders[j].queue; | ||
var i = 0; | ||
while(i < queue.length){ | ||
this$1.queue.push(queue[i]); | ||
++i; | ||
} | ||
holders[j].queue = null; | ||
} | ||
holders.forEach(function (h){ | ||
this$1.queue.take(h.queue); | ||
}); | ||
@@ -625,8 +612,8 @@ return this; | ||
var test = new Test(this, { | ||
var test = new Test({ | ||
description: description, | ||
startTime: this.startTime, | ||
print: function print(complete){ | ||
var output = complete.tap(); | ||
console.log(output); | ||
complete.tap().forEach(function (str){ | ||
console.log(str); | ||
}); | ||
}, | ||
@@ -648,8 +635,8 @@ run: function run(controls){ | ||
var test = new Test(this, { | ||
var test = new Test({ | ||
description: description, | ||
startTime: this.startTime, | ||
print: function print(complete){ | ||
var output = complete.tap(); | ||
console.log(output); | ||
complete.tap().forEach(function (str){ | ||
console.log(str); | ||
}); | ||
}, | ||
@@ -656,0 +643,0 @@ run: function run(controls){ |
@@ -1,2 +0,2 @@ | ||
!function(t){"use strict";function e(t,e){return e={exports:{}},t(e,e.exports),e.exports}function r(t,e){void 0===t&&(t={}),void 0===e&&(e=!0);var r="\n\n ---\n"+Object.keys(t).reduce(function(e,r){return e+" "+r+": "+t[r]+"\n"},"")+" ...\n",n=new Error(r);return n.passed=!!e,n.failed=!e,n}function n(t,e,r){return void 0===r&&(r=!0),r?t===e:t==e}function o(t,e){for(var r in e)e.hasOwnProperty(r)&&Object.defineProperty(t,r,{value:e[r],enumerable:!0});return t}var i=e(function(t,e){function r(t){var e=[];for(var r in t)e.push(r);return e}(t.exports="function"==typeof Object.keys?Object.keys:r).shim=r}),u=e(function(t,e){function r(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function n(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Object.prototype.hasOwnProperty.call(t,"callee")&&!Object.prototype.propertyIsEnumerable.call(t,"callee")||!1}var o="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();(e=t.exports=o?r:n).supported=r,e.unsupported=n}),s=e(function(t){function e(t){return null===t||void 0===t}function r(t){return!(!t||"object"!=typeof t||"number"!=typeof t.length)&&("function"==typeof t.copy&&"function"==typeof t.slice&&!(t.length>0&&"number"!=typeof t[0]))}function n(t,n,a){var c,p;if(e(t)||e(n))return!1;if(t.prototype!==n.prototype)return!1;if(u(t))return!!u(n)&&(t=o.call(t),n=o.call(n),s(t,n,a));if(r(t)){if(!r(n))return!1;if(t.length!==n.length)return!1;for(c=0;c<t.length;c++)if(t[c]!==n[c])return!1;return!0}try{var l=i(t),f=i(n)}catch(t){return!1}if(l.length!=f.length)return!1;for(l.sort(),f.sort(),c=l.length-1;c>=0;c--)if(l[c]!=f[c])return!1;for(c=l.length-1;c>=0;c--)if(p=l[c],!s(t[p],n[p],a))return!1;return typeof t==typeof n}var o=Array.prototype.slice,s=t.exports=function(t,e,r){return r||(r={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||"object"!=typeof t&&"object"!=typeof e?r.strict?t===e:t==e:n(t,e,r))}}),a=function(t){return"object"==typeof t?JSON.stringify(t,null,2):t},c=function(t){return function(e){for(var r=[],n=arguments.length-1;n-- >0;)r[n]=arguments[n+1];return e||t.apply(void 0,r.map(function(t){return a(t)}))}},p=c(function(t,e){return t+" equal to "+e}),l=c(function(t,e){return t+" not equal to "+e}),f=c(function(t){return t+" is truthy"}),h=c(function(t){return t+" is falsy"}),v=function(t){this.running=t};v.prototype.ok=function(t,e){if(!t)throw r({message:h(e,t),operator:"ok",expected:!0,actual:t},!1)},v.prototype.assert=function(t,e){if(!t)throw r({message:h(e,t),operator:"assert",expected:!0,actual:t},!1)},v.prototype.not=function(t,e){if(t)throw r({message:f(e,t),operator:"not",expected:!1,actual:t},!1)},v.prototype.fail=function(t){throw r({operator:"fail"},!1)},v.prototype.equal=function(t,e,o,i){if(!n(t,e,i))throw r({message:l(o,t,e),operator:"equal",expected:p(null,t,e),actual:l(null,t,e)},!1)},v.prototype.notEqual=function(t,e,o,i){if(n(t,e,i))throw r(o,{message:p(o,t,e),operator:"notEqual",expected:l(null,t,e),actual:p(null,t,e)})},v.prototype.reject=function(t){void 0===t&&(t="");var e=r({message:t,operator:"reject",expected:"reject to not be called",actual:"reject was called"},!1);return Promise.reject(e)},v.prototype.deepEqual=function(t,e,n,o){if(void 0===o&&(o=!0),!s(t,e,{strict:o}))throw r({message:l(n,t,e),operator:"deepEqual",expected:p(null,t,e),actual:l(null,t,e)},!1)};var d=function(t,e){void 0===e&&(e={});var r=e.description;void 0===r&&(r="");var n=e.count;void 0===n&&(n=0);var o=e.plan;void 0===o&&(o=1),Object.defineProperties(this,{count:{value:n}}),this.getResult=function(e,o){return o?++t.passed:++t.failed,{description:r,passed:!!o,failed:!o,value:e,count:n}}};d.prototype.pass=function(t){return this.getResult(t,!0)},d.prototype.fail=function(t){return this.getResult(t,!1)},d.prototype.asserts=function(){return new v(this)},d.prototype.resolve=function(t,e){var r=this;void 0===e&&(e=!1);try{var n=t(this.asserts());return e?Promise.resolve(n).then(function(t){return r.fail(t)}).catch(function(t){return r.pass(t)}):Promise.resolve(n).then(function(t){return r.pass(t)}).catch(function(t){return r.fail(t)})}catch(t){return e?Promise.resolve(this.pass(t)):Promise.resolve(this.fail(t))}},d.prototype.reverse=function(t){return this.resolve(t,!0)};!function(){var t,e=!1;void 0===(t="undefined"==typeof global?window:global).TAP_VERSION_WRITTEN&&Object.defineProperty(t,"TAP_VERSION_WRITTEN",{get:function(){return e}})}();var y=function(t,e){void 0===e&&(e={});var r=e.description;void 0===r&&(r="");var n=e.passed;void 0===n&&(n=!0);var i=e.failed;void 0===i&&(i=!0);var u=e.value;void 0===u&&(u="");var s=e.count;o(this,{description:r,passed:n,failed:i,value:u,count:s}),Object.defineProperty(this,"startTime",{get:function(){return t.startTime}}),Object.defineProperty(this,"plan",{get:function(){return t.plan}}),this.tap=function(){var e=this;1===s&&(console.log("TAP version 13"),console.log("1.."+this.plan));var o=r.length?r:"",a="";if(n)a="ok "+s+" - "+o;else if(i){var c=u?u.message:"";a="not ok "+s+" - "+o+" "+c}return s===t.plan&&setTimeout(function(){t.startTime&&(console.log("# duration "+(Date.now()-e.startTime)+" ms"),t.passed&&console.log("# passed "+t.passed),t.failed&&console.log("# failed "+t.failed))}),a}},g=function(t,e){void 0===e&&(e={});var r=e.description;void 0===r&&(r="");var n=e.run;void 0===n&&(n=null);var i=e.print;void 0===i&&(i=null),o(this,{description:r}),Object.defineProperty(this,"run",{value:function(e){void 0===e&&(e={});var o=e.count;void 0===o&&(o=1);var u=e.plan;void 0===u&&(u=1),Object.defineProperty(this,"plan",{value:u});var s=new d(t,{description:r,count:o,plan:u});return Promise.resolve(n(s)).then(function(e){return i(new y(t,e))})}})},m=function(){this.length=0};m.prototype.take=function(){for(var t=this,e=[],r=arguments.length;r--;)e[r]=arguments[r];for(var n=0;n<e.length;n++){for(var o=0;o<e[n].length;o++)t.push(e[n][o]);e[n].clear()}},m.prototype.push=function(){for(var t=this,e=[],r=arguments.length;r--;)e[r]=arguments[r];if(0===this.length)for(var n=0;n<50;n++)t[n]={};for(var o=0;o<e.length;o++)t[t.length]=e[o],++t.length},m.prototype.shift=function(){var t=this,e=this[0];for(--this.length;0<this.length;)t[0]=t[1];return e},m.prototype.reduce=function(t,e){for(var r=this,n=0,o=e;n<this.length;)o=t(o,r[n],n,r),++n;return o},m.prototype.clear=function(){for(var t=this;0<this.length;)try{delete t[0]}catch(t){}this.length=0};var b=function(){var t=this,e=this.queue=new m;this.count=0,this.passed=0,this.failed=0,Object.defineProperty(this,"complete",{get:function(){return t.count===t.plan}}),Object.defineProperty(this,"plan",{get:function(){return e.length}})};b.prototype.run=function(){var t=this;return this.startTime=Date.now(),this.queue.reduce(function(e,r){return e.then(function(e){++t.count,r.run(t)})},Promise.resolve())},b.prototype.take=function(){for(var t=this,e=[],r=arguments.length;r--;)e[r]=arguments[r];for(var n=0;n<e.length;n++){for(var o=e[n].queue,i=0;i<o.length;)t.queue.push(o[i]),++i;e[n].queue=null}return this},b.prototype.test=function(t,e){void 0===e&&(e=t,t="");var r=new g(this,{description:t,startTime:this.startTime,print:function(t){var e=t.tap();console.log(e)},run:function(t){return t.resolve(e)}});return this.queue.push(r),this},b.prototype.reverse=function(t,e){void 0===e&&(e=t,t="");var r=new g(this,{description:t,startTime:this.startTime,print:function(t){var e=t.tap();console.log(e)},run:function(t){return t.reverse(e)}});return this.queue.push(r),this},t.Demeter=b,t.test=function(t){return void 0===t&&(t={}),new b(t)}}(this.demeter=this.demeter||{}); | ||
!function(t){"use strict";function e(t,e){return e={exports:{}},t(e,e.exports),e.exports}function r(t,e){void 0===t&&(t={}),void 0===e&&(e=!0);var r="\n\n ---\n"+Object.keys(t).reduce(function(e,r){return e+" "+r+": "+t[r]+"\n"},"")+" ...\n",n=new Error(r);return n.passed=!!e,n.failed=!e,n}function n(t,e,r){return void 0===r&&(r=!0),r?t===e:t==e}function o(t,e){for(var r in e)e.hasOwnProperty(r)&&Object.defineProperty(t,r,{value:e[r],enumerable:!0});return t}var i=e(function(t,e){function r(t){var e=[];for(var r in t)e.push(r);return e}(t.exports="function"==typeof Object.keys?Object.keys:r).shim=r}),u=e(function(t,e){function r(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function n(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Object.prototype.hasOwnProperty.call(t,"callee")&&!Object.prototype.propertyIsEnumerable.call(t,"callee")||!1}var o="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();(e=t.exports=o?r:n).supported=r,e.unsupported=n}),s=e(function(t){function e(t){return null===t||void 0===t}function r(t){return!(!t||"object"!=typeof t||"number"!=typeof t.length)&&("function"==typeof t.copy&&"function"==typeof t.slice&&!(t.length>0&&"number"!=typeof t[0]))}function n(t,n,a){var c,p;if(e(t)||e(n))return!1;if(t.prototype!==n.prototype)return!1;if(u(t))return!!u(n)&&(t=o.call(t),n=o.call(n),s(t,n,a));if(r(t)){if(!r(n))return!1;if(t.length!==n.length)return!1;for(c=0;c<t.length;c++)if(t[c]!==n[c])return!1;return!0}try{var l=i(t),f=i(n)}catch(t){return!1}if(l.length!=f.length)return!1;for(l.sort(),f.sort(),c=l.length-1;c>=0;c--)if(l[c]!=f[c])return!1;for(c=l.length-1;c>=0;c--)if(p=l[c],!s(t[p],n[p],a))return!1;return typeof t==typeof n}var o=Array.prototype.slice,s=t.exports=function(t,e,r){return r||(r={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||"object"!=typeof t&&"object"!=typeof e?r.strict?t===e:t==e:n(t,e,r))}}),a=function(t){return"object"==typeof t?JSON.stringify(t,null,2):t},c=function(t){return function(e){for(var r=[],n=arguments.length-1;n-- >0;)r[n]=arguments[n+1];return e||t.apply(void 0,r.map(function(t){return a(t)}))}},p=c(function(t,e){return t+" equal to "+e}),l=c(function(t,e){return t+" not equal to "+e}),f=c(function(t){return t+" is truthy"}),h=c(function(t){return t+" is falsy"}),v=function(t){this.running=t};v.prototype.ok=function(t,e){if(!t)throw r({message:h(e,t),operator:"ok",expected:!0,actual:t},!1)},v.prototype.assert=function(t,e){if(!t)throw r({message:h(e,t),operator:"assert",expected:!0,actual:t},!1)},v.prototype.not=function(t,e){if(t)throw r({message:f(e,t),operator:"not",expected:!1,actual:t},!1)},v.prototype.fail=function(t){throw r({operator:"fail"},!1)},v.prototype.equal=function(t,e,o){if(!n(t,e,!0))throw r({message:l(o,t,e),operator:"equal",expected:p(null,t,e),actual:l(null,t,e)},!1)},v.prototype.equalish=function(t,e,o){if(!n(t,e,!1))throw r({message:l(o,t,e),operator:"equalish",expected:p(null,t,e),actual:l(null,t,e)},!1)},v.prototype.notEqual=function(t,e,o){if(n(t,e,!0))throw r(o,{message:p(o,t,e),operator:"notEqual",expected:l(null,t,e),actual:p(null,t,e)})},v.prototype.notEqualish=function(t,e,o){if(n(t,e,!1))throw r(o,{message:p(o,t,e),operator:"notEqualish",expected:l(null,t,e),actual:p(null,t,e)})},v.prototype.reject=function(t){void 0===t&&(t="");var e=r({message:t,operator:"reject",expected:"reject to not be called",actual:"reject was called"},!1);return Promise.reject(e)},v.prototype.deepEqual=function(t,e,n){if(!s(t,e,{strict:!0}))throw r({message:l(n,t,e),operator:"deepEqual",expected:p(null,t,e),actual:l(null,t,e)},!1)},v.prototype.deepEqualish=function(t,e,n){if(!s(t,e,{strict:!1}))throw r({message:l(n,t,e),operator:"deepEqualish",expected:p(null,t,e),actual:l(null,t,e)},!1)};var d=function(t,e){void 0===e&&(e={});var r=e.description;void 0===r&&(r="");var n=e.count;void 0===n&&(n=0);var o=e.plan;void 0===o&&(o=1),Object.defineProperties(this,{count:{value:n}}),this.getResult=function(e,o){return o?++t.passed:++t.failed,{description:r,passed:!!o,failed:!o,value:e,count:n}}};d.prototype.pass=function(t){return this.getResult(t,!0)},d.prototype.fail=function(t){return this.getResult(t,!1)},d.prototype.asserts=function(){return new v(this)},d.prototype.resolve=function(t,e){var r=this;void 0===e&&(e=!1);try{var n=t(this.asserts());return e?Promise.resolve(n).then(function(t){return r.fail(t)}).catch(function(t){return r.pass(t)}):Promise.resolve(n).then(function(t){return r.pass(t)}).catch(function(t){return r.fail(t)})}catch(t){return e?Promise.resolve(this.pass(t)):Promise.resolve(this.fail(t))}},d.prototype.reverse=function(t){return this.resolve(t,!0)};var y=function(t,e){void 0===e&&(e={});var r=e.description;void 0===r&&(r="");var n=e.passed;void 0===n&&(n=!0);var i=e.failed;void 0===i&&(i=!0);var u=e.value;void 0===u&&(u=""),o(this,{description:r,passed:n,failed:i,value:u,count:e.count,tracker:t}),Object.defineProperty(this,"plan",{get:function(){return t.plan}})};y.prototype.tap=function(){var t=[];1===this.count&&(t.push("TAP version 13"),t.push("1.."+this.plan));var e=this,r=e.description,n=e.value,o=e.count,i=e.tracker,u=r.length?r:"",s="";if(this.passed?s="ok "+o+" - "+u:this.failed&&(s="not ok "+o+" - "+u+" "+(n?n.message:"")),t.push(s),this.count===i.plan){t.push("# duration "+(Date.now()-i.startTime)+" ms");var a="";i.passed&&(a+="# passed "+i.passed),i.failed&&(a+=" failed "+i.failed),a.length&&t.push(a)}return t};var g=function(t){void 0===t&&(t={});var e=t.description;void 0===e&&(e="");var r=t.run;void 0===r&&(r=null);var n=t.print;void 0===n&&(n=null),o(this,{description:e}),Object.defineProperty(this,"runTest",{value:function(t){var o=new d(t,{description:e,count:t.count});return Promise.resolve(r(o)).then(function(e){return n(new y(t,e))})}})},m=function(){this.length=0};m.prototype.take=function(t){for(var e=this,r=0,n=t.length;r<n;r++)e.push(t[r]);t.clear()},m.prototype.push=function(){for(var t=this,e=[],r=arguments.length;r--;)e[r]=arguments[r];for(var n=0,o=e.length;n<o;n++)t[t.length]=e[n],++t.length},m.prototype.shift=function(){var t=this,e=this[0];for(--this.length;0<this.length;)t[0]=t[1];return e},m.prototype.reduce=function(t,e){for(var r=this,n=0,o=e;n<this.length;)o=t(o,r[n],n,r),++n;return o},m.prototype.clear=function(){for(var t=this,e=-1,r=this.length;++e<r;)try{delete t[e]}catch(t){}this.length=0};var b=function(){var t=this;this.queue=new m,this.count=0,this.passed=0,this.failed=0,Object.defineProperty(this,"complete",{get:function(){return t.count===t.plan}}),Object.defineProperty(this,"plan",{get:function(){return t.queue.length}})};b.prototype.run=function(){var t=this;return this.startTime=Date.now(),this.queue.reduce(function(e,r){return e.then(function(e){return++t.count,r.runTest(t)})},Promise.resolve())},b.prototype.take=function(){for(var t=this,e=[],r=arguments.length;r--;)e[r]=arguments[r];return e.forEach(function(e){t.queue.take(e.queue)}),this},b.prototype.test=function(t,e){void 0===e&&(e=t,t="");var r=new g({description:t,print:function(t){t.tap().forEach(function(t){console.log(t)})},run:function(t){return t.resolve(e)}});return this.queue.push(r),this},b.prototype.reverse=function(t,e){void 0===e&&(e=t,t="");var r=new g({description:t,print:function(t){t.tap().forEach(function(t){console.log(t)})},run:function(t){return t.reverse(e)}});return this.queue.push(r),this},t.Demeter=b,t.test=function(t){return void 0===t&&(t={}),new b(t)}}(this.demeter=this.demeter||{}); | ||
//# sourceMappingURL=demeter.min.js.map |
{ | ||
"name": "demeter", | ||
"version": "1.1.0", | ||
"version": "1.2.0", | ||
"description": "A test library", | ||
@@ -8,3 +8,3 @@ "main": "dist/bundle.js", | ||
"test-run": "node test/run_all.js", | ||
"test": "npm run build && cd test && nyc node ./run.js", | ||
"test": "npm run build && cd test && node ./run.js", | ||
"build": "ebam" | ||
@@ -34,13 +34,5 @@ }, | ||
"dependencies": { | ||
"clear": "0.0.1", | ||
"deep-equal": "^1.0.1", | ||
"delay": "^2.0.0", | ||
"glob-promise": "^3.1.0", | ||
"indent": "0.0.2", | ||
"indent-string": "^3.2.0", | ||
"is-promise": "^2.1.0", | ||
"multistream": "^2.1.0", | ||
"object-assign": "^4.1.1", | ||
"string.prototype.padstart": "^3.0.0", | ||
"tap-merge": "^0.3.1" | ||
"indent-string": "^3.2.0" | ||
}, | ||
@@ -47,0 +39,0 @@ "directories": { |
@@ -11,2 +11,7 @@ demeter | ||
Intro | ||
----- | ||
`demeter` prints TAP output. | ||
Import from this module | ||
@@ -31,1 +36,46 @@ ----------------- | ||
``` | ||
Assertions | ||
---------- | ||
The message argument is an optional argument. | ||
### t.assert(boolean, message), t.ok(boolean, message) | ||
Throw if `boolean` is false. | ||
### t.ok(boolean, message), t.ok(boolean, message) | ||
Throw if `boolean` is false. Just like `t.assert()`. | ||
### t.not(boolean, message) | ||
Throw if `boolean` is true. | ||
### t.equal(value1, value2, message) | ||
Throw if `value1` is not equal to `value2`. This is a strict equal, or in other words `t.equal()` uses (**===**) the **Identity operator** | ||
### t.equalish(value1, value2, message) | ||
Throw if `value1` is not equal to `value2`. This is a non-strict equal. `t.equalish()` converts value types using (**==**). | ||
### t.notEqual(value1, value2, message) | ||
Throw if `value1` is equal to `value2` using strict comparison. | ||
### t.notEqualish(value1, value2, message) | ||
Throw if `value1` is equal to `value2` using non-strict comparison. | ||
### t.fail(message) | ||
Just throw right away if `t.fail()` is called. | ||
### t.deepEqual(object1, object2, message) | ||
Throw if `object1` is not deeply equal to `object2` using strict comparison. | ||
### t.deepEqual(object1, object2, message) | ||
Throw if `object1` is not deeply equal to `object2` using non-strict comparison. |
@@ -1,2 +0,1 @@ | ||
import getTestArgs from './lib/get_test_args.js'; | ||
import Test from './lib/test.js'; | ||
@@ -7,4 +6,4 @@ import FastReducableQueue from './lib/fast_reducable_queue.js'; | ||
constructor(){ | ||
let self = this, | ||
queue = this.queue = new FastReducableQueue(); | ||
let self = this; | ||
this.queue = new FastReducableQueue(); | ||
@@ -14,3 +13,3 @@ this.count = 0; | ||
this.failed = 0; | ||
//this.complete = false; | ||
Object.defineProperty(this, 'complete', { | ||
@@ -21,5 +20,6 @@ get(){ | ||
}); | ||
Object.defineProperty(this, 'plan', { | ||
get(){ | ||
return queue.length; | ||
return self.queue.length; | ||
} | ||
@@ -35,3 +35,3 @@ }); | ||
++this.count; | ||
t.run(this); | ||
return t.runTest(this); | ||
}); | ||
@@ -44,11 +44,5 @@ }, Promise.resolve()); | ||
for(let j=0; j<holders.length; j++){ | ||
let queue = holders[j].queue; | ||
let i = 0; | ||
while(i < queue.length){ | ||
this.queue.push(queue[i]); | ||
++i; | ||
} | ||
holders[j].queue = null; | ||
} | ||
holders.forEach(h=>{ | ||
this.queue.take(h.queue); | ||
}); | ||
@@ -64,8 +58,8 @@ return this; | ||
let test = new Test(this, { | ||
let test = new Test({ | ||
description, | ||
startTime: this.startTime, | ||
print(complete){ | ||
let output = complete.tap(); | ||
console.log(output); | ||
complete.tap().forEach(str=>{ | ||
console.log(str); | ||
}); | ||
}, | ||
@@ -87,8 +81,8 @@ run(controls){ | ||
let test = new Test(this, { | ||
let test = new Test({ | ||
description, | ||
startTime: this.startTime, | ||
print(complete){ | ||
let output = complete.tap(); | ||
console.log(output); | ||
complete.tap().forEach(str=>{ | ||
console.log(str); | ||
}); | ||
}, | ||
@@ -95,0 +89,0 @@ run(controls){ |
@@ -74,5 +74,4 @@ import deepEqual from 'deep-equal'; | ||
} | ||
equal(value1, value2, message, strict){ | ||
if(!isEqual(value1, value2, strict)){ | ||
//if(value1 !== value2){ | ||
equal(value1, value2, message){ | ||
if(!isEqual(value1, value2, true)){ | ||
let err = createAssertError({ | ||
@@ -88,5 +87,16 @@ message: m.showNotEqual(message, value1, value2), | ||
} | ||
notEqual(value1, value2, message, strict){ | ||
if(isEqual(value1, value2, strict)){ | ||
//if(value1 === value2){ | ||
equalish(value1, value2, message){ | ||
if(!isEqual(value1, value2, false)){ | ||
let err = createAssertError({ | ||
message: m.showNotEqual(message, value1, value2), | ||
operator: 'equalish', | ||
expected: m.showEqual(null, value1, value2), | ||
actual: m.showNotEqual(null, value1, value2) | ||
}, false); | ||
throw err; | ||
} | ||
} | ||
notEqual(value1, value2, message){ | ||
if(isEqual(value1, value2, true)){ | ||
let err = createAssertError(message, { | ||
@@ -102,2 +112,14 @@ message: m.showEqual(message, value1, value2), | ||
} | ||
notEqualish(value1, value2, message){ | ||
if(isEqual(value1, value2, false)){ | ||
let err = createAssertError(message, { | ||
message: m.showEqual(message, value1, value2), | ||
operator: 'notEqualish', | ||
expected: m.showNotEqual(null, value1, value2), | ||
actual: m.showEqual(null, value1, value2) | ||
}, false); | ||
throw err; | ||
} | ||
} | ||
reject(message=''){ | ||
@@ -112,4 +134,4 @@ let err = createAssertError({ | ||
} | ||
deepEqual(object1, object2, message, strict = true){ | ||
if(!deepEqual(object1, object2, {strict})){ | ||
deepEqual(object1, object2, message){ | ||
if(!deepEqual(object1, object2, {strict:true})){ | ||
let err = createAssertError({ | ||
@@ -125,2 +147,14 @@ message: m.showNotEqual(message, object1, object2), | ||
} | ||
deepEqualish(object1, object2, message){ | ||
if(!deepEqual(object1, object2, {strict:false})){ | ||
let err = createAssertError({ | ||
message: m.showNotEqual(message, object1, object2), | ||
operator: 'deepEqualish', | ||
expected: m.showEqual(null, object1, object2), | ||
actual: m.showNotEqual(null, object1, object2) | ||
}, false); | ||
throw err; | ||
} | ||
} | ||
} |
@@ -5,16 +5,11 @@ export default class FastReducableQueue { | ||
} | ||
take(...queues){ | ||
for(let j=0; j<queues.length; j++){ | ||
for(let i=0; i<queues[j].length; i++){ | ||
this.push(queues[j][i]); | ||
} | ||
queues[j].clear(); | ||
take(queue){ | ||
for(let i=0, len=queue.length; i<len; i++){ | ||
this.push(queue[i]); | ||
} | ||
queue.clear(); | ||
} | ||
push(...values){ | ||
if(this.length === 0){ | ||
for(let i=0; i<50; i++){ this[i] = {}; } | ||
} | ||
for(let i=0; i<values.length; i++){ | ||
for(let i=0, len=values.length; i<len; i++){ | ||
this[this.length] = values[i]; | ||
@@ -44,4 +39,4 @@ ++this.length; | ||
clear(){ | ||
let i = 0; | ||
while(i < this.length){ | ||
let i = -1, len = this.length; | ||
while(++i < len){ | ||
try{ | ||
@@ -48,0 +43,0 @@ delete this[i]; |
@@ -1,3 +0,1 @@ | ||
import writeVersion from './write_version.js'; | ||
import indent from 'indent-string'; | ||
import def from './def.js'; | ||
@@ -19,11 +17,6 @@ | ||
value, | ||
count | ||
count, | ||
tracker | ||
}); | ||
Object.defineProperty(this, 'startTime', { | ||
get(){ | ||
return tracker.startTime | ||
} | ||
}); | ||
Object.defineProperty(this, 'plan', { | ||
@@ -34,33 +27,36 @@ get(){ | ||
}); | ||
} | ||
tap(){ | ||
let buffer = []; | ||
if(this.count === 1){ | ||
buffer.push('TAP version 13'); | ||
buffer.push('1..'+this.plan); | ||
} | ||
this.tap = function(){ | ||
let { description, value, count, tracker } = this; | ||
if(count === 1){ | ||
console.log('TAP version 13'); | ||
console.log('1..'+this.plan); | ||
} | ||
let message = description.length ? description : ''; | ||
let str = ''; | ||
if(this.passed){ | ||
str = 'ok ' + count + ' - ' + message; | ||
}else if(this.failed){ | ||
let errMessage = value ? value.message : ''; | ||
str = 'not ok ' + count + ' - ' + message + ' ' + errMessage; | ||
} | ||
let message = description.length ? description : ''; | ||
let str = ''; | ||
if(passed){ | ||
str = 'ok ' + count + ' - ' + message; | ||
}else if(failed){ | ||
let errMessage = value ? value.message : ''; | ||
str = 'not ok ' + count + ' - ' + message + ' ' + errMessage; | ||
} | ||
buffer.push(str); | ||
if(count === tracker.plan){ | ||
setTimeout(()=>{ | ||
if(!tracker.startTime) return; | ||
console.log('# duration '+(Date.now()-this.startTime) + ' ms'); | ||
if(tracker.passed) | ||
console.log('# passed '+tracker.passed); | ||
if(tracker.failed) | ||
console.log('# failed '+tracker.failed); | ||
}); | ||
if(this.count === tracker.plan){ | ||
buffer.push('# duration '+(Date.now()-tracker.startTime) + ' ms'); | ||
let end = ''; | ||
if(tracker.passed) | ||
end += '# passed '+tracker.passed; | ||
if(tracker.failed) | ||
end += ' failed '+tracker.failed; | ||
if(end.length){ | ||
buffer.push(end); | ||
} | ||
return str; | ||
}; | ||
} | ||
return buffer; | ||
} | ||
} |
@@ -11,3 +11,3 @@ import Assertions from './assertions.js'; | ||
Object.defineProperties(this, { | ||
count: {value: count} | ||
count: {value: count}, | ||
}); | ||
@@ -21,3 +21,3 @@ | ||
} | ||
return { | ||
@@ -24,0 +24,0 @@ description, |
@@ -6,3 +6,3 @@ import RunControls from './run_controls.js'; | ||
export default class Test { | ||
constructor(tracker, { | ||
constructor({ | ||
description = '', | ||
@@ -17,16 +17,8 @@ run = null, | ||
Object.defineProperty(this, 'run', { | ||
value: function({ | ||
count = 1, | ||
plan = 1 | ||
} = {}){ | ||
Object.defineProperty(this, 'runTest', { | ||
value: function(tracker){ | ||
Object.defineProperty(this, 'plan', { | ||
value: plan | ||
}); | ||
let running = new RunControls(tracker, { | ||
description, | ||
count, | ||
plan | ||
count: tracker.count | ||
}); | ||
@@ -33,0 +25,0 @@ |
@@ -56,3 +56,3 @@ const test = require('../').test; | ||
await Promise.reject().catch(e=>t.reject()); | ||
}) | ||
}); | ||
@@ -59,0 +59,0 @@ test() |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
3
80
2
439208
45
3361
- Removedclear@0.0.1
- Removeddelay@^2.0.0
- Removedglob-promise@^3.1.0
- Removedis-promise@^2.1.0
- Removedmultistream@^2.1.0
- Removedobject-assign@^4.1.1
- Removedstring.prototype.padstart@^3.0.0
- Removedtap-merge@^0.3.1
- Removed@isaacs/cliui@8.0.2(transitive)
- Removed@types/glob@8.1.0(transitive)
- Removed@types/minimatch@5.1.2(transitive)
- Removed@types/node@22.13.1(transitive)
- Removedansi-regex@5.0.16.1.0(transitive)
- Removedansi-styles@4.3.06.2.1(transitive)
- Removedarray-buffer-byte-length@1.0.2(transitive)
- Removedarraybuffer.prototype.slice@1.0.4(transitive)
- Removedasync-function@1.0.0(transitive)
- Removedavailable-typed-arrays@1.0.7(transitive)
- Removedbalanced-match@1.0.2(transitive)
- Removedbrace-expansion@2.0.1(transitive)
- Removedclear@0.0.1(transitive)
- Removedcolor-convert@2.0.1(transitive)
- Removedcolor-name@1.1.4(transitive)
- Removedcore-util-is@1.0.3(transitive)
- Removedcross-spawn@7.0.6(transitive)
- Removeddata-view-buffer@1.0.2(transitive)
- Removeddata-view-byte-length@1.0.2(transitive)
- Removeddata-view-byte-offset@1.0.1(transitive)
- Removeddelay@2.0.0(transitive)
- Removedeastasianwidth@0.2.0(transitive)
- Removedemoji-regex@8.0.09.2.2(transitive)
- Removedes-abstract@1.23.9(transitive)
- Removedes-set-tostringtag@2.1.0(transitive)
- Removedes-to-primitive@1.3.0(transitive)
- Removedfor-each@0.3.4(transitive)
- Removedforeground-child@3.3.0(transitive)
- Removedfunction.prototype.name@1.1.8(transitive)
- Removedget-symbol-description@1.1.0(transitive)
- Removedglob@11.0.1(transitive)
- Removedglob-promise@3.4.0(transitive)
- Removedglobalthis@1.0.4(transitive)
- Removedhas-bigints@1.1.0(transitive)
- Removedhas-proto@1.2.0(transitive)
- Removedhighland@2.13.5(transitive)
- Removedinherits@2.0.4(transitive)
- Removedinternal-slot@1.1.0(transitive)
- Removedis-array-buffer@3.0.5(transitive)
- Removedis-async-function@2.1.1(transitive)
- Removedis-bigint@1.1.0(transitive)
- Removedis-boolean-object@1.2.2(transitive)
- Removedis-callable@1.2.7(transitive)
- Removedis-data-view@1.0.2(transitive)
- Removedis-finalizationregistry@1.1.1(transitive)
- Removedis-fullwidth-code-point@3.0.0(transitive)
- Removedis-generator-function@1.1.0(transitive)
- Removedis-map@2.0.3(transitive)
- Removedis-number-object@1.1.1(transitive)
- Removedis-promise@2.2.2(transitive)
- Removedis-set@2.0.3(transitive)
- Removedis-shared-array-buffer@1.0.4(transitive)
- Removedis-string@1.1.1(transitive)
- Removedis-symbol@1.1.1(transitive)
- Removedis-typed-array@1.1.15(transitive)
- Removedis-weakmap@2.0.2(transitive)
- Removedis-weakref@1.1.1(transitive)
- Removedis-weakset@2.0.4(transitive)
- Removedisarray@1.0.02.0.5(transitive)
- Removedisexe@2.0.0(transitive)
- Removedjackspeak@4.0.2(transitive)
- Removedlru-cache@11.0.2(transitive)
- Removedminimatch@10.0.1(transitive)
- Removedminipass@7.1.2(transitive)
- Removedmultistream@2.1.1(transitive)
- Removedobject-assign@4.1.1(transitive)
- Removedobject-inspect@1.13.4(transitive)
- Removedobject.assign@4.1.7(transitive)
- Removedown-keys@1.0.1(transitive)
- Removedp-defer@1.0.0(transitive)
- Removedpackage-json-from-dist@1.0.1(transitive)
- Removedpath-key@3.1.1(transitive)
- Removedpath-scurry@2.0.0(transitive)
- Removedpossible-typed-array-names@1.1.0(transitive)
- Removedprocess-nextick-args@2.0.1(transitive)
- Removedreadable-stream@2.3.8(transitive)
- Removedreflect.getprototypeof@1.0.10(transitive)
- Removedsafe-array-concat@1.1.3(transitive)
- Removedsafe-buffer@5.1.2(transitive)
- Removedsafe-push-apply@1.0.0(transitive)
- Removedsafe-regex-test@1.1.0(transitive)
- Removedset-proto@1.0.0(transitive)
- Removedshebang-command@2.0.0(transitive)
- Removedshebang-regex@3.0.0(transitive)
- Removedside-channel@1.1.0(transitive)
- Removedside-channel-list@1.0.0(transitive)
- Removedside-channel-map@1.0.1(transitive)
- Removedside-channel-weakmap@1.0.2(transitive)
- Removedsignal-exit@4.1.0(transitive)
- Removedstring-width@4.2.35.1.2(transitive)
- Removedstring.prototype.padstart@3.1.6(transitive)
- Removedstring.prototype.trim@1.2.10(transitive)
- Removedstring.prototype.trimend@1.0.9(transitive)
- Removedstring.prototype.trimstart@1.0.8(transitive)
- Removedstring_decoder@1.1.1(transitive)
- Removedstrip-ansi@6.0.17.1.0(transitive)
- Removedtap-merge@0.3.1(transitive)
- Removedtyped-array-buffer@1.0.3(transitive)
- Removedtyped-array-byte-length@1.0.3(transitive)
- Removedtyped-array-byte-offset@1.0.4(transitive)
- Removedtyped-array-length@1.0.7(transitive)
- Removedunbox-primitive@1.1.0(transitive)
- Removedundici-types@6.20.0(transitive)
- Removedutil-deprecate@1.0.2(transitive)
- Removedwhich@2.0.2(transitive)
- Removedwhich-boxed-primitive@1.1.1(transitive)
- Removedwhich-builtin-type@1.2.1(transitive)
- Removedwhich-collection@1.0.2(transitive)
- Removedwhich-typed-array@1.1.18(transitive)
- Removedwrap-ansi@7.0.08.1.0(transitive)