Checks command line API.

Running test: testKeys
{
    id : <messageId>
    result : {
        result : {
            className : Function
            description : function keys(object) { [Command Line API] }
            objectId : <objectId>
            type : function
        }
    }
}
{
    id : <messageId>
    result : {
        result : {
            type : object
            value : [
                [0] : a
            ]
        }
    }
}
{
    id : <messageId>
    result : {
        result : {
            type : object
            value : [
                [0] : a
            ]
        }
    }
}

Running test: testInspect
[object Object]
{
    method : Runtime.inspectRequested
    params : {
        hints : {
        }
        object : {
            className : Object
            description : Object
            objectId : <objectId>
            type : object
        }
    }
}
{
    method : Runtime.inspectRequested
    params : {
        hints : {
        }
        object : {
            description : 239
            type : number
            value : 239
        }
    }
}
{
    method : Runtime.inspectRequested
    params : {
        hints : {
        }
        object : {
            description : -0
            type : number
            unserializableValue : -0
        }
    }
}
{
    method : Runtime.inspectRequested
    params : {
        hints : {
            copyToClipboard : true
        }
        object : {
            type : string
            value : hello
        }
    }
}
{
    id : <messageId>
    result : {
        result : {
            type : undefined
        }
    }
}
{
    method : Runtime.inspectRequested
    params : {
        hints : {
        }
        object : {
            className : Object
            description : Object
            objectId : <objectId>
            type : object
        }
    }
}

Running test: testQueryObjects
{
    id : <messageId>
    result : {
        result : {
            className : Function
            description : function queryObjects(constructor) { [Command Line API] }
            objectId : <objectId>
            type : function
        }
    }
}
{
    method : Runtime.inspectRequested
    params : {
        hints : {
            queryObjects : true
        }
        object : {
            className : Promise
            description : Promise
            objectId : <objectId>
            type : object
        }
    }
}
Is Promise.prototype: true
{
    method : Runtime.inspectRequested
    params : {
        hints : {
            queryObjects : true
        }
        object : {
            className : Promise
            description : Promise
            objectId : <objectId>
            type : object
        }
    }
}
Is Promise.prototype: true
{
    method : Runtime.inspectRequested
    params : {
        hints : {
            queryObjects : true
        }
        object : {
            className : Object
            description : Object
            objectId : <objectId>
            type : object
        }
    }
}
Is p: true
{
    method : Runtime.inspectRequested
    params : {
        hints : {
            queryObjects : true
        }
        object : {
            description : 1
            type : number
            value : 1
        }
    }
}

Running test: testEvaluationResult
{
    id : <messageId>
    result : {
        result : {
            type : undefined
        }
    }
}
{
    id : <messageId>
    result : {
        result : {
            description : 42
            type : number
            value : 42
        }
    }
}
{
    id : <messageId>
    result : {
        result : {
            description : 42
            type : number
            value : 42
        }
    }
}
{
    id : <messageId>
    result : {
        result : {
            description : -0
            type : number
            unserializableValue : -0
        }
    }
}
{
    id : <messageId>
    result : {
        result : {
            type : object
            value : {
            }
        }
    }
}

Running test: testDebug
{
    id : <messageId>
    result : {
        result : {
            className : Function
            description : function debug(function) { [Command Line API] }
            objectId : <objectId>
            type : function
        }
    }
}
{
    id : <messageId>
    result : {
        result : {
            className : Function
            description : function undebug(function) { [Command Line API] }
            objectId : <objectId>
            type : function
        }
    }
}
foo (:0:16)
(anonymous) (:0:0)
[
    [0] : <scriptId>:0:12:debug
]
foo (:0:16)
(anonymous) (:0:0)
[
    [0] : <scriptId>:0:12:debug
]

Running test: testMonitor
{
    id : <messageId>
    result : {
        result : {
            className : Function
            description : function monitor(function) { [Command Line API] }
            objectId : <objectId>
            type : function
        }
    }
}
{
    id : <messageId>
    result : {
        result : {
            className : Function
            description : function unmonitor(function) { [Command Line API] }
            objectId : <objectId>
            type : function
        }
    }
}
function foo called
after first call
store functions..
function foo called
after first call

Running test: testProfile
{
    id : <messageId>
    result : {
        result : {
            className : Function
            description : function profile(title) { [Command Line API] }
            objectId : <objectId>
            type : function
        }
    }
}
{
    id : <messageId>
    result : {
        result : {
            className : Function
            description : function profileEnd(title) { [Command Line API] }
            objectId : <objectId>
            type : function
        }
    }
}
{
    method : Profiler.consoleProfileStarted
    params : {
        id : 1
        location : {
            columnNumber : 1
            lineNumber : 1
            scriptId : <scriptId>
        }
        title : 42
    }
}
{
    method : Profiler.consoleProfileFinished
    params : {
        id : 1
        location : {
            columnNumber : 1
            lineNumber : 1
            scriptId : <scriptId>
        }
        profile : <profile>
        title : 42
    }
}
{
    method : Profiler.consoleProfileStarted
    params : {
        id : 2
        location : {
            columnNumber : 6
            lineNumber : 1
            scriptId : <scriptId>
        }
        title : 239
    }
}
{
    method : Profiler.consoleProfileFinished
    params : {
        id : 2
        location : {
            columnNumber : 6
            lineNumber : 1
            scriptId : <scriptId>
        }
        profile : <profile>
        title : 239
    }
}

Running test: testDir
{
    id : <messageId>
    result : {
        result : {
            className : Function
            description : function dir(value) { [Command Line API] }
            objectId : <objectId>
            type : function
        }
    }
}
{
    method : Runtime.consoleAPICalled
    params : {
        args : [
            [0] : {
                className : Object
                description : Object
                objectId : <objectId>
                preview : {
                    description : Object
                    overflow : false
                    properties : [
                    ]
                    type : object
                }
                type : object
            }
        ]
        executionContextId : <executionContextId>
        stackTrace : {
            callFrames : [
                [0] : {
                    columnNumber : 0
                    functionName : 
                    lineNumber : 0
                    scriptId : <scriptId>
                    url : 
                }
            ]
        }
        timestamp : <timestamp>
        type : dir
    }
}
{
    method : Runtime.consoleAPICalled
    params : {
        args : [
            [0] : {
                description : 42
                type : number
                value : 42
            }
        ]
        executionContextId : <executionContextId>
        stackTrace : {
            callFrames : [
                [0] : {
                    columnNumber : 0
                    functionName : 
                    lineNumber : 0
                    scriptId : <scriptId>
                    url : 
                }
            ]
        }
        timestamp : <timestamp>
        type : dir
    }
}
{
    method : Runtime.consoleAPICalled
    params : {
        args : [
            [0] : {
                className : Object
                description : Object
                objectId : <objectId>
                preview : {
                    description : Object
                    overflow : false
                    properties : [
                    ]
                    type : object
                }
                type : object
            }
        ]
        executionContextId : <executionContextId>
        stackTrace : {
            callFrames : [
                [0] : {
                    columnNumber : 5
                    functionName : 
                    lineNumber : 0
                    scriptId : <scriptId>
                    url : 
                }
            ]
        }
        timestamp : <timestamp>
        type : dir
    }
}

Running test: testDirXML
{
    id : <messageId>
    result : {
        result : {
            className : Function
            description : function dirxml(value) { [Command Line API] }
            objectId : <objectId>
            type : function
        }
    }
}
{
    method : Runtime.consoleAPICalled
    params : {
        args : [
            [0] : {
                className : Object
                description : Object
                objectId : <objectId>
                preview : {
                    description : Object
                    overflow : false
                    properties : [
                    ]
                    type : object
                }
                type : object
            }
        ]
        executionContextId : <executionContextId>
        stackTrace : {
            callFrames : [
                [0] : {
                    columnNumber : 0
                    functionName : 
                    lineNumber : 0
                    scriptId : <scriptId>
                    url : 
                }
            ]
        }
        timestamp : <timestamp>
        type : dirxml
    }
}
{
    method : Runtime.consoleAPICalled
    params : {
        args : [
            [0] : {
                description : 42
                type : number
                value : 42
            }
        ]
        executionContextId : <executionContextId>
        stackTrace : {
            callFrames : [
                [0] : {
                    columnNumber : 0
                    functionName : 
                    lineNumber : 0
                    scriptId : <scriptId>
                    url : 
                }
            ]
        }
        timestamp : <timestamp>
        type : dirxml
    }
}

Running test: testTable
{
    id : <messageId>
    result : {
        result : {
            className : Function
            description : function table(data, [columns]) { [Command Line API] }
            objectId : <objectId>
            type : function
        }
    }
}
{
    method : Runtime.consoleAPICalled
    params : {
        args : [
            [0] : {
                className : Object
                description : Object
                objectId : <objectId>
                preview : {
                    description : Object
                    overflow : false
                    properties : [
                    ]
                    type : object
                }
                type : object
            }
        ]
        executionContextId : <executionContextId>
        stackTrace : {
            callFrames : [
                [0] : {
                    columnNumber : 0
                    functionName : 
                    lineNumber : 0
                    scriptId : <scriptId>
                    url : 
                }
            ]
        }
        timestamp : <timestamp>
        type : table
    }
}
{
    method : Runtime.consoleAPICalled
    params : {
        args : [
            [0] : {
                description : 42
                type : number
                value : 42
            }
        ]
        executionContextId : <executionContextId>
        stackTrace : {
            callFrames : [
                [0] : {
                    columnNumber : 0
                    functionName : 
                    lineNumber : 0
                    scriptId : <scriptId>
                    url : 
                }
            ]
        }
        timestamp : <timestamp>
        type : table
    }
}

Running test: testClear
{
    id : <messageId>
    result : {
        result : {
            className : Function
            description : function clear() { [Command Line API] }
            objectId : <objectId>
            type : function
        }
    }
}
{
    method : Runtime.consoleAPICalled
    params : {
        args : [
            [0] : {
                type : string
                value : console.clear
            }
        ]
        executionContextId : <executionContextId>
        stackTrace : {
            callFrames : [
                [0] : {
                    columnNumber : 0
                    functionName : 
                    lineNumber : 0
                    scriptId : <scriptId>
                    url : 
                }
            ]
        }
        timestamp : <timestamp>
        type : clear
    }
}
{
    method : Runtime.consoleAPICalled
    params : {
        args : [
            [0] : {
                type : string
                value : console.clear
            }
        ]
        executionContextId : <executionContextId>
        stackTrace : {
            callFrames : [
                [0] : {
                    columnNumber : 5
                    functionName : 
                    lineNumber : 0
                    scriptId : <scriptId>
                    url : 
                }
            ]
        }
        timestamp : <timestamp>
        type : clear
    }
}
