Test for console formatting Running test: testFloatFormatter Testing console.debug('%f', 3.1415)... debug[ [0] : { type : string value : %f } [1] : { description : 3.1415 type : number value : 3.1415 } ] Testing console.error('%f', '3e2')... error[ [0] : { type : string value : %f } [1] : { description : 300 type : number value : 300 } ] Testing console.info('%f', Symbol('1.1'))... info[ [0] : { type : string value : %f } [1] : { description : NaN type : number unserializableValue : NaN } ] Testing console.log('%f', {toString() { return '42'; }})... log[ [0] : { type : string value : %f } [1] : { description : 42 type : number value : 42 } ] Testing console.trace('%f', {[Symbol.toPrimitive]() { return 2.78; }})... trace[ [0] : { type : string value : %f } [1] : { description : 2.78 type : number value : 2.78 } ] Testing console.warn('%f', {toString() { throw new Error(); }})... { columnNumber : 33 exception : { className : Error description : Error at Object.toString (:1:40) at parseFloat () at console.warn () at :1:9 objectId : subtype : error type : object } exceptionId : lineNumber : 0 scriptId : stackTrace : { callFrames : [ [0] : { columnNumber : 39 functionName : toString lineNumber : 0 scriptId : url : } [1] : { columnNumber : 8 functionName : lineNumber : 0 scriptId : url : } ] } text : Uncaught } Running test: testIntegerFormatter Testing console.debug('%d', 42)... debug[ [0] : { type : string value : %d } [1] : { description : 42 type : number value : 42 } ] Testing console.error('%i', '987654321')... error[ [0] : { type : string value : %i } [1] : { description : 987654321 type : number value : 987654321 } ] Testing console.info('%d', Symbol('12345'))... info[ [0] : { type : string value : %d } [1] : { description : NaN type : number unserializableValue : NaN } ] Testing console.log('%i', {toString() { return '42'; }})... log[ [0] : { type : string value : %i } [1] : { description : 42 type : number value : 42 } ] Testing console.trace('%d', {[Symbol.toPrimitive]() { return 256; }})... trace[ [0] : { type : string value : %d } [1] : { description : 256 type : number value : 256 } ] Testing console.warn('%i', {toString() { throw new Error(); }})... { columnNumber : 33 exception : { className : Error description : Error at Object.toString (:1:40) at parseInt () at console.warn () at :1:9 objectId : subtype : error type : object } exceptionId : lineNumber : 0 scriptId : stackTrace : { callFrames : [ [0] : { columnNumber : 39 functionName : toString lineNumber : 0 scriptId : url : } [1] : { columnNumber : 8 functionName : lineNumber : 0 scriptId : url : } ] } text : Uncaught } Running test: testStringFormatter Testing console.debug('%s', 42)... debug[ [0] : { type : string value : %s } [1] : { type : string value : 42 } ] Testing console.error('%s', 'Test string')... error[ [0] : { type : string value : %s } [1] : { type : string value : Test string } ] Testing console.info('%s', Symbol('Test symbol'))... info[ [0] : { type : string value : %s } [1] : { type : string value : Symbol(Test symbol) } ] Testing console.log('%s', {toString() { return 'Test object'; }})... log[ [0] : { type : string value : %s } [1] : { type : string value : Test object } ] Testing console.trace('%s', {[Symbol.toPrimitive]() { return true; }})... trace[ [0] : { type : string value : %s } [1] : { type : string value : true } ] Testing console.warn('%s', {toString() { throw new Error(); }})... { columnNumber : 33 exception : { className : Error description : Error at Object.toString (:1:40) at String () at console.warn () at :1:9 objectId : subtype : error type : object } exceptionId : lineNumber : 0 scriptId : stackTrace : { callFrames : [ [0] : { columnNumber : 39 functionName : toString lineNumber : 0 scriptId : url : } [1] : { columnNumber : 8 functionName : lineNumber : 0 scriptId : url : } ] } text : Uncaught } Running test: testOtherFormatters Testing console.debug('%c', 'color:red')... debug[ [0] : { type : string value : %c } [1] : { type : string value : color:red } ] Testing console.error('%o', {toString() { throw new Error(); }})... error[ [0] : { type : string value : %o } [1] : { className : Object description : Object objectId : 1.1.7 preview : { description : Object overflow : false properties : [ [0] : { name : toString type : function value : } ] type : object } type : object } ] Testing console.info('%O', {toString() { throw new Error(); }})... info[ [0] : { type : string value : %O } [1] : { className : Object description : Object objectId : 1.1.8 preview : { description : Object overflow : false properties : [ [0] : { name : toString type : function value : } ] type : object } type : object } ] Testing console.log('We have reached 100% of our users', 'with this!')... log[ [0] : { type : string value : We have reached 100% of our users } [1] : { type : string value : with this! } ] Running test: testMultipleFormatters Testing console.debug('%s%some Text%i', '', 'S', 1)... debug[ [0] : { type : string value : %s%some Text%i } [1] : { type : string value : } [2] : { type : string value : S } [3] : { description : 1 type : number value : 1 } ] Testing console.error('%c%i%c%s', 'color:red', 42, 'color:green', 'Message!')... error[ [0] : { type : string value : %c%i%c%s } [1] : { type : string value : color:red } [2] : { description : 42 type : number value : 42 } [3] : { type : string value : color:green } [4] : { type : string value : Message! } ] Testing console.info('%s', {toString() { return '%i% %s %s'; }}, {toString() { return '100'; }}, 'more', 'arguments')... info[ [0] : { type : string value : %s } [1] : { type : string value : %i% %s %s } [2] : { description : 100 type : number value : 100 } [3] : { type : string value : more } [4] : { type : string value : arguments } ] Testing console.log('%s %s', {toString() { return 'Too %s %s'; }}, 'many', 'specifiers')... log[ [0] : { type : string value : %s %s } [1] : { type : string value : Too %s %s } [2] : { type : string value : many } [3] : { type : string value : specifiers } ] Testing console.trace('%s %f', {toString() { return '%s'; }}, {[Symbol.toPrimitive]() { return 'foo'; }}, 1, 'Test')... trace[ [0] : { type : string value : %s %f } [1] : { type : string value : %s } [2] : { type : string value : foo } [3] : { description : 1 type : number value : 1 } [4] : { type : string value : Test } ] Running test: testAssert Testing console.assert(true, '%s', {toString() { throw new Error(); }})... Testing console.assert(false, '%s %i', {toString() { return '%s'; }}, {[Symbol.toPrimitive]() { return 1; }}, 1, 'Test')... assert[ [0] : { type : string value : %s %i } [1] : { type : string value : %s } [2] : { type : string value : 1 } [3] : { description : 1 type : number value : 1 } [4] : { type : string value : Test } ] Testing console.assert(false, '%s', {toString() { throw new Error(); }})... { columnNumber : 42 exception : { className : Error description : Error at Object.toString (:1:49) at String () at console.assert () at :1:9 objectId : subtype : error type : object } exceptionId : lineNumber : 0 scriptId : stackTrace : { callFrames : [ [0] : { columnNumber : 48 functionName : toString lineNumber : 0 scriptId : url : } [1] : { columnNumber : 8 functionName : lineNumber : 0 scriptId : url : } ] } text : Uncaught } Running test: testGroup Testing console.group('%s', {toString() { throw new Error(); }})... { columnNumber : 34 exception : { className : Error description : Error at Object.toString (:1:41) at String () at console.group () at :1:9 objectId : subtype : error type : object } exceptionId : lineNumber : 0 scriptId : stackTrace : { callFrames : [ [0] : { columnNumber : 40 functionName : toString lineNumber : 0 scriptId : url : } [1] : { columnNumber : 8 functionName : lineNumber : 0 scriptId : url : } ] } text : Uncaught } Testing console.group('%s%i', 'Gruppe', {[Symbol.toPrimitive]() { return 1; }})... startGroup[ [0] : { type : string value : %s%i } [1] : { type : string value : Gruppe } [2] : { description : 1 type : number value : 1 } ] Testing console.groupEnd()... endGroup[ [0] : { type : string value : console.groupEnd } ] Running test: testGroupCollapsed Testing console.groupCollapsed('%d', {toString() { throw new Error(); }})... { columnNumber : 43 exception : { className : Error description : Error at Object.toString (:1:50) at parseInt () at console.groupCollapsed () at :1:9 objectId : subtype : error type : object } exceptionId : lineNumber : 0 scriptId : stackTrace : { callFrames : [ [0] : { columnNumber : 49 functionName : toString lineNumber : 0 scriptId : url : } [1] : { columnNumber : 8 functionName : lineNumber : 0 scriptId : url : } ] } text : Uncaught } Testing console.groupCollapsed('%s%f', {[Symbol.toPrimitive]() { return 'Gruppe'; }}, 3.1415)... startGroupCollapsed[ [0] : { type : string value : %s%f } [1] : { type : string value : Gruppe } [2] : { description : 3.1415 type : number value : 3.1415 } ] Testing console.groupEnd()... endGroup[ [0] : { type : string value : console.groupEnd } ] Running test: testNonStandardFormatSpecifiers Testing console.log('%_ %s', {toString() { throw new Error(); }}, {toString() { return 'foo'; }})... log[ [0] : { type : string value : %_ %s } [1] : { className : Object description : Object objectId : 1.1.15 preview : { description : Object overflow : false properties : [ [0] : { name : toString type : function value : } ] type : object } type : object } [2] : { type : string value : foo } ] Testing console.log('%%s', {toString() { throw new Error(); }})... log[ [0] : { type : string value : %%s } [1] : { className : Object description : Object objectId : 1.1.16 preview : { description : Object overflow : false properties : [ [0] : { name : toString type : function value : } ] type : object } type : object } ]