var concat = require('concat-stream'); var tap = require('tap'); var tape = require('../'); // Exploratory test to ascertain proper output when no t.comment() call // is made. tap.test('no comment', function (assert) { assert.plan(1); var verify = function (output) { assert.equal(output.toString('utf8'), [ 'TAP version 13', '# no comment', '', '1..0', '# tests 0', '# pass 0', '', '# ok', '' ].join('\n')); }; var test = tape.createHarness(); test.createStream().pipe(concat(verify)); test('no comment', function (t) { t.end(); }); }); // Exploratory test, can we call t.comment() passing nothing? tap.test('missing argument', function (assert) { assert.plan(1); var test = tape.createHarness(); test.createStream(); test('missing argument', function (t) { try { t.comment(); t.end(); } catch (err) { assert.equal(err.constructor, TypeError); } finally { assert.end(); } }); }); // Exploratory test, can we call t.comment() passing nothing? tap.test('null argument', function (assert) { assert.plan(1); var test = tape.createHarness(); test.createStream(); test('null argument', function (t) { try { t.comment(null); t.end(); } catch (err) { assert.equal(err.constructor, TypeError); } finally { assert.end(); } }); }); // Exploratory test, how is whitespace treated? tap.test('whitespace', function (assert) { assert.plan(1); var verify = function (output) { assert.equal(output.toString('utf8'), [ 'TAP version 13', '# whitespace', '# ', '# a', '# a', '# a', '', '1..0', '# tests 0', '# pass 0', '', '# ok', '' ].join('\n')); }; var test = tape.createHarness(); test.createStream().pipe(concat(verify)); test('whitespace', function (t) { t.comment(' '); t.comment(' a'); t.comment('a '); t.comment(' a '); t.end(); }); }); // Exploratory test, how about passing types other than strings? tap.test('non-string types', function (assert) { assert.plan(1); var verify = function (output) { assert.equal(output.toString('utf8'), [ 'TAP version 13', '# non-string types', '# true', '# false', '# 42', '# 6.66', '# [object Object]', '# [object Object]', '# [object Object]', '# function ConstructorFunction() {}', '', '1..0', '# tests 0', '# pass 0', '', '# ok', '' ].join('\n')); }; var test = tape.createHarness(); test.createStream().pipe(concat(verify)); test('non-string types', function (t) { t.comment(true); t.comment(false); t.comment(42); t.comment(6.66); t.comment({}); t.comment({"answer": 42}); function ConstructorFunction() {} t.comment(new ConstructorFunction()); t.comment(ConstructorFunction); t.end(); }); }); tap.test('multiline string', function (assert) { assert.plan(1); var verify = function (output) { assert.equal(output.toString('utf8'), [ 'TAP version 13', '# multiline strings', '# a', '# b', '# c', '# d', '', '1..0', '# tests 0', '# pass 0', '', '# ok', '' ].join('\n')); }; var test = tape.createHarness(); test.createStream().pipe(concat(verify)); test('multiline strings', function (t) { t.comment([ 'a', 'b', ].join('\n')); t.comment([ 'c', 'd', ].join('\r\n')); t.end(); }); });