@ -4,61 +4,70 @@ const assert = require('assert');
const util = require ( 'util' ) ;
const symbol = Symbol ( 'foo' ) ;
assert . e qual( util . format ( ) , '' ) ;
assert . e qual( util . format ( '' ) , '' ) ;
assert . e qual( util . format ( [ ] ) , '[]' ) ;
assert . e qual( util . format ( [ 0 ] ) , '[ 0 ]' ) ;
assert . e qual( util . format ( { } ) , '{}' ) ;
assert . e qual( util . format ( { foo : 42 } ) , '{ foo: 42 }' ) ;
assert . e qual( util . format ( null ) , 'null' ) ;
assert . e qual( util . format ( true ) , 'true' ) ;
assert . e qual( util . format ( false ) , 'false' ) ;
assert . e qual( util . format ( 'test' ) , 'test' ) ;
assert . strictE qual( util . format ( ) , '' ) ;
assert . strictE qual( util . format ( '' ) , '' ) ;
assert . strictE qual( util . format ( [ ] ) , '[]' ) ;
assert . strictE qual( util . format ( [ 0 ] ) , '[ 0 ]' ) ;
assert . strictE qual( util . format ( { } ) , '{}' ) ;
assert . strictE qual( util . format ( { foo : 42 } ) , '{ foo: 42 }' ) ;
assert . strictE qual( util . format ( null ) , 'null' ) ;
assert . strictE qual( util . format ( true ) , 'true' ) ;
assert . strictE qual( util . format ( false ) , 'false' ) ;
assert . strictE qual( util . format ( 'test' ) , 'test' ) ;
// CHECKME this is for console.log() compatibility - but is it *right*?
assert . e qual( util . format ( 'foo' , 'bar' , 'baz' ) , 'foo bar baz' ) ;
assert . strictE qual( util . format ( 'foo' , 'bar' , 'baz' ) , 'foo bar baz' ) ;
// ES6 Symbol handling
assert . e qual( util . format ( symbol ) , 'Symbol(foo)' ) ;
assert . e qual( util . format ( 'foo' , symbol ) , 'foo Symbol(foo)' ) ;
assert . e qual( util . format ( '%s' , symbol ) , 'Symbol(foo)' ) ;
assert . e qual( util . format ( '%j' , symbol ) , 'undefined' ) ;
assert . strictE qual( util . format ( symbol ) , 'Symbol(foo)' ) ;
assert . strictE qual( util . format ( 'foo' , symbol ) , 'foo Symbol(foo)' ) ;
assert . strictE qual( util . format ( '%s' , symbol ) , 'Symbol(foo)' ) ;
assert . strictE qual( util . format ( '%j' , symbol ) , 'undefined' ) ;
assert . throws ( function ( ) {
util . format ( '%d' , symbol ) ;
} , TypeError ) ;
assert . e qual( util . format ( '%d' , 42.0 ) , '42' ) ;
assert . e qual( util . format ( '%d' , 42 ) , '42' ) ;
assert . e qual( util . format ( '%s' , 42 ) , '42' ) ;
assert . e qual( util . format ( '%j' , 42 ) , '42' ) ;
assert . strictE qual( util . format ( '%d' , 42.0 ) , '42' ) ;
assert . strictE qual( util . format ( '%d' , 42 ) , '42' ) ;
assert . strictE qual( util . format ( '%s' , 42 ) , '42' ) ;
assert . strictE qual( util . format ( '%j' , 42 ) , '42' ) ;
assert . e qual( util . format ( '%d' , '42.0' ) , '42' ) ;
assert . e qual( util . format ( '%d' , '42' ) , '42' ) ;
assert . e qual( util . format ( '%s' , '42' ) , '42' ) ;
assert . e qual( util . format ( '%j' , '42' ) , '"42"' ) ;
assert . strictE qual( util . format ( '%d' , '42.0' ) , '42' ) ;
assert . strictE qual( util . format ( '%d' , '42' ) , '42' ) ;
assert . strictE qual( util . format ( '%s' , '42' ) , '42' ) ;
assert . strictE qual( util . format ( '%j' , '42' ) , '"42"' ) ;
assert . e qual( util . format ( '%%s%s' , 'foo' ) , '%sfoo' ) ;
assert . strictE qual( util . format ( '%%s%s' , 'foo' ) , '%sfoo' ) ;
assert . equal ( util . format ( '%s' ) , '%s' ) ;
assert . equal ( util . format ( '%s' , undefined ) , 'undefined' ) ;
assert . equal ( util . format ( '%s' , 'foo' ) , 'foo' ) ;
assert . equal ( util . format ( '%s:%s' ) , '%s:%s' ) ;
assert . equal ( util . format ( '%s:%s' , undefined ) , 'undefined:%s' ) ;
assert . equal ( util . format ( '%s:%s' , 'foo' ) , 'foo:%s' ) ;
assert . equal ( util . format ( '%s:%s' , 'foo' , 'bar' ) , 'foo:bar' ) ;
assert . equal ( util . format ( '%s:%s' , 'foo' , 'bar' , 'baz' ) , 'foo:bar baz' ) ;
assert . equal ( util . format ( '%%%s%%' , 'hi' ) , '%hi%' ) ;
assert . equal ( util . format ( '%%%s%%%%' , 'hi' ) , '%hi%%' ) ;
assert . strictEqual ( util . format ( '%s' ) , '%s' ) ;
assert . strictEqual ( util . format ( '%s' , undefined ) , 'undefined' ) ;
assert . strictEqual ( util . format ( '%s' , 'foo' ) , 'foo' ) ;
assert . strictEqual ( util . format ( '%s:%s' ) , '%s:%s' ) ;
assert . strictEqual ( util . format ( '%s:%s' , undefined ) , 'undefined:%s' ) ;
assert . strictEqual ( util . format ( '%s:%s' , 'foo' ) , 'foo:%s' ) ;
assert . strictEqual ( util . format ( '%s:%s' , 'foo' , 'bar' ) , 'foo:bar' ) ;
assert . strictEqual ( util . format ( '%s:%s' , 'foo' , 'bar' , 'baz' ) , 'foo:bar baz' ) ;
assert . strictEqual ( util . format ( '%%%s%%' , 'hi' ) , '%hi%' ) ;
assert . strictEqual ( util . format ( '%%%s%%%%' , 'hi' ) , '%hi%%' ) ;
assert . strictEqual ( util . format ( '%sbc%%def' , 'a' ) , 'abc%def' ) ;
assert . strictEqual ( util . format ( '%d:%d' , 12 , 30 ) , '12:30' ) ;
assert . strictEqual ( util . format ( '%d:%d' , 12 ) , '12:%d' ) ;
assert . strictEqual ( util . format ( '%d:%d' ) , '%d:%d' ) ;
assert . strictEqual ( util . format ( 'o: %j, a: %j' , { } , [ ] ) , 'o: {}, a: []' ) ;
assert . strictEqual ( util . format ( 'o: %j, a: %j' , { } ) , 'o: {}, a: %j' ) ;
assert . strictEqual ( util . format ( 'o: %j, a: %j' ) , 'o: %j, a: %j' ) ;
{
const o = { } ;
o . o = o ;
assert . equal ( util . format ( '%j' , o ) , '[Circular]' ) ;
assert . strictE qual( util . format ( '%j' , o ) , '[Circular]' ) ;
}
// Errors
const err = new Error ( 'foo' ) ;
assert . e qual( util . format ( err ) , err . stack ) ;
assert . strictE qual( util . format ( err ) , err . stack ) ;
function CustomError ( msg ) {
Error . call ( this ) ;
Object . defineProperty ( this , 'message' ,
@ -69,7 +78,7 @@ function CustomError(msg) {
}
util . inherits ( CustomError , Error ) ;
const customError = new CustomError ( 'bar' ) ;
assert . e qual( util . format ( customError ) , customError . stack ) ;
assert . strictE qual( util . format ( customError ) , customError . stack ) ;
// Doesn't capture stack trace
function BadCustomError ( msg ) {
Error . call ( this ) ;
@ -79,4 +88,5 @@ function BadCustomError(msg) {
{ value : 'BadCustomError' , enumerable : false } ) ;
}
util . inherits ( BadCustomError , Error ) ;
assert . equal ( util . format ( new BadCustomError ( 'foo' ) ) , '[BadCustomError: foo]' ) ;
assert . strictEqual ( util . format ( new BadCustomError ( 'foo' ) ) ,
'[BadCustomError: foo]' ) ;