Test collecting code coverage data with Profiler.collectCoverage.

Running test: testPreciseCountBaseline
{
    id : <messageId>
    result : {
        result : [
        ]
    }
}
{
    id : <messageId>
    result : {
        result : [
        ]
    }
}

Running test: testPreciseCountCoverage
{
    id : <messageId>
    result : {
        result : {
            description : 8
            type : number
            value : 8
        }
    }
}
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 221
                                startOffset : 0
                            }
                        ]
                    }
                    [1] : {
                        functionName : fib
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 15
                                endOffset : 73
                                startOffset : 1
                            }
                            [1] : {
                                count : 8
                                endOffset : 41
                                startOffset : 32
                            }
                            [2] : {
                                count : 7
                                endOffset : 71
                                startOffset : 41
                            }
                            [3] : {
                                count : 0
                                endOffset : 72
                                startOffset : 71
                            }
                        ]
                    }
                    [2] : {
                        functionName : is_optimized
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 0
                                endOffset : 175
                                startOffset : 74
                            }
                        ]
                    }
                    [3] : {
                        functionName : iife
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 208
                                startOffset : 177
                            }
                            [1] : {
                                count : 0
                                endOffset : 207
                                startOffset : 206
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : testPreciseCountCoverage
            }
            [1] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 38
                                startOffset : 0
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : 
            }
        ]
    }
}
{
    id : <messageId>
    result : {
        result : [
        ]
    }
}

Running test: testPreciseCountCoverageIncremental
{
    id : <messageId>
    result : {
        result : {
            description : 8
            type : number
            value : 8
        }
    }
}
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 221
                                startOffset : 0
                            }
                        ]
                    }
                    [1] : {
                        functionName : fib
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 15
                                endOffset : 73
                                startOffset : 1
                            }
                            [1] : {
                                count : 8
                                endOffset : 41
                                startOffset : 32
                            }
                            [2] : {
                                count : 7
                                endOffset : 71
                                startOffset : 41
                            }
                            [3] : {
                                count : 0
                                endOffset : 72
                                startOffset : 71
                            }
                        ]
                    }
                    [2] : {
                        functionName : is_optimized
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 0
                                endOffset : 175
                                startOffset : 74
                            }
                        ]
                    }
                    [3] : {
                        functionName : iife
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 208
                                startOffset : 177
                            }
                            [1] : {
                                count : 0
                                endOffset : 207
                                startOffset : 206
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : testPreciseCountCoverageIncremental
            }
        ]
    }
}
{
    id : <messageId>
    result : {
        result : {
            type : string
            value : unoptimized
        }
    }
}
{
    id : <messageId>
    result : {
        result : {
            description : 10946
            type : number
            value : 10946
        }
    }
}
{
    id : <messageId>
    result : {
        result : {
            type : string
            value : unoptimized
        }
    }
}
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                functions : [
                    [0] : {
                        functionName : fib
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 21891
                                endOffset : 73
                                startOffset : 1
                            }
                            [1] : {
                                count : 10946
                                endOffset : 41
                                startOffset : 32
                            }
                            [2] : {
                                count : 10945
                                endOffset : 71
                                startOffset : 41
                            }
                            [3] : {
                                count : 0
                                endOffset : 72
                                startOffset : 71
                            }
                        ]
                    }
                    [1] : {
                        functionName : is_optimized
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 2
                                endOffset : 175
                                startOffset : 74
                            }
                            [1] : {
                                count : 0
                                endOffset : 156
                                startOffset : 143
                            }
                            [2] : {
                                count : 0
                                endOffset : 174
                                startOffset : 173
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : testPreciseCountCoverageIncremental
            }
            [1] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 2
                                endOffset : 17
                                startOffset : 0
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : 
            }
            [2] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 7
                                startOffset : 0
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : 
            }
        ]
    }
}

Running test: testPreciseCoverageFail
{
    id : <messageId>
    result : {
        result : {
            description : 8
            type : number
            value : 8
        }
    }
}
{
    error : {
        code : -32000
        message : Precise coverage has not been started.
    }
    id : <messageId>
}

Running test: testBestEffortCoverage
{
    id : <messageId>
    result : {
        result : {
            description : 8
            type : number
            value : 8
        }
    }
}
{
    id : <messageId>
    result : {
        result : [
        ]
    }
}
{
    id : <messageId>
    result : {
        result : [
        ]
    }
}

Running test: testBestEffortCoverageWithPreciseBinaryEnabled
{
    id : <messageId>
    result : {
        result : {
            description : 8
            type : number
            value : 8
        }
    }
}
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 221
                                startOffset : 0
                            }
                        ]
                    }
                    [1] : {
                        functionName : fib
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 73
                                startOffset : 1
                            }
                        ]
                    }
                    [2] : {
                        functionName : is_optimized
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 0
                                endOffset : 175
                                startOffset : 74
                            }
                        ]
                    }
                    [3] : {
                        functionName : iife
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 208
                                startOffset : 177
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : testBestEffortCoverageWithPreciseBinaryEnabled
            }
            [1] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 38
                                startOffset : 0
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : 
            }
        ]
    }
}
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 221
                                startOffset : 0
                            }
                        ]
                    }
                    [1] : {
                        functionName : fib
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 73
                                startOffset : 1
                            }
                        ]
                    }
                    [2] : {
                        functionName : is_optimized
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 0
                                endOffset : 175
                                startOffset : 74
                            }
                        ]
                    }
                    [3] : {
                        functionName : iife
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 208
                                startOffset : 177
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : testBestEffortCoverageWithPreciseBinaryEnabled
            }
            [1] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 38
                                startOffset : 0
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : 
            }
        ]
    }
}

Running test: testBestEffortCoverageWithPreciseCountEnabled
{
    id : <messageId>
    result : {
        result : {
            description : 8
            type : number
            value : 8
        }
    }
}
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 221
                                startOffset : 0
                            }
                        ]
                    }
                    [1] : {
                        functionName : fib
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 73
                                startOffset : 1
                            }
                        ]
                    }
                    [2] : {
                        functionName : is_optimized
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 0
                                endOffset : 175
                                startOffset : 74
                            }
                        ]
                    }
                    [3] : {
                        functionName : iife
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 208
                                startOffset : 177
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : testBestEffortCoverageWithPreciseCountEnabled
            }
            [1] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 38
                                startOffset : 0
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : 
            }
        ]
    }
}
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 221
                                startOffset : 0
                            }
                        ]
                    }
                    [1] : {
                        functionName : fib
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 73
                                startOffset : 1
                            }
                        ]
                    }
                    [2] : {
                        functionName : is_optimized
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 0
                                endOffset : 175
                                startOffset : 74
                            }
                        ]
                    }
                    [3] : {
                        functionName : iife
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 208
                                startOffset : 177
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : testBestEffortCoverageWithPreciseCountEnabled
            }
            [1] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 38
                                startOffset : 0
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : 
            }
        ]
    }
}

Running test: testEnablePreciseCountCoverageAtPause
{
    id : <messageId>
    result : {
        result : {
            type : undefined
        }
    }
}
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 38
                                startOffset : 0
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : 
            }
        ]
    }
}

Running test: testPreciseBinaryCoverage
{
    id : <messageId>
    result : {
        result : {
            description : 8
            type : number
            value : 8
        }
    }
}
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 221
                                startOffset : 0
                            }
                        ]
                    }
                    [1] : {
                        functionName : fib
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 73
                                startOffset : 1
                            }
                            [1] : {
                                count : 0
                                endOffset : 72
                                startOffset : 71
                            }
                        ]
                    }
                    [2] : {
                        functionName : is_optimized
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 0
                                endOffset : 175
                                startOffset : 74
                            }
                        ]
                    }
                    [3] : {
                        functionName : iife
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 208
                                startOffset : 177
                            }
                            [1] : {
                                count : 0
                                endOffset : 207
                                startOffset : 206
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : testPreciseBinaryCoverage
            }
        ]
    }
}
{
    id : <messageId>
    result : {
        result : {
            type : string
            value : unoptimized
        }
    }
}
{
    id : <messageId>
    result : {
        result : {
            description : 10946
            type : number
            value : 10946
        }
    }
}
{
    id : <messageId>
    result : {
        result : {
            type : string
            value : optimized
        }
    }
}
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                functions : [
                    [0] : {
                        functionName : fib
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 0
                                endOffset : 73
                                startOffset : 1
                            }
                            [1] : {
                                count : 1
                                endOffset : 71
                                startOffset : 32
                            }
                        ]
                    }
                    [1] : {
                        functionName : is_optimized
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 175
                                startOffset : 74
                            }
                            [1] : {
                                count : 0
                                endOffset : 174
                                startOffset : 173
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : testPreciseBinaryCoverage
            }
            [1] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 17
                                startOffset : 0
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : 
            }
            [2] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 7
                                startOffset : 0
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : 
            }
        ]
    }
}

Running test: testPreciseEmptyScriptCoverageEntries
{
    id : <messageId>
    result : {
        result : [
        ]
    }
}

Running test: testPreciseCountCoveragePartial
{
    id : <messageId>
    result : {
        result : {
            type : undefined
        }
    }
}
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 238
                                startOffset : 0
                            }
                        ]
                    }
                    [1] : {
                        functionName : outer
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 224
                                startOffset : 10
                            }
                            [1] : {
                                count : 0
                                endOffset : 223
                                startOffset : 222
                            }
                        ]
                    }
                    [2] : {
                        functionName : nested_0
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 176
                                startOffset : 31
                            }
                            [1] : {
                                count : 0
                                endOffset : 175
                                startOffset : 172
                            }
                        ]
                    }
                    [3] : {
                        functionName : nested_1
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 172
                                startOffset : 64
                            }
                            [1] : {
                                count : 0
                                endOffset : 171
                                startOffset : 166
                            }
                        ]
                    }
                    [4] : {
                        functionName : nested_2
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 166
                                startOffset : 99
                            }
                            [1] : {
                                count : 0
                                endOffset : 165
                                startOffset : 158
                            }
                        ]
                    }
                    [5] : {
                        functionName : nested_3
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 158
                                startOffset : 136
                            }
                        ]
                    }
                    [6] : {
                        functionName : nested_4
                        isBlockCoverage : false
                        ranges : [
                            [0] : {
                                count : 0
                                endOffset : 201
                                startOffset : 179
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : testPreciseCountCoveragePartial
            }
        ]
    }
}
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                functions : [
                    [0] : {
                        functionName : nested_1
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 172
                                startOffset : 64
                            }
                            [1] : {
                                count : 0
                                endOffset : 171
                                startOffset : 166
                            }
                        ]
                    }
                    [1] : {
                        functionName : nested_2
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 0
                                endOffset : 166
                                startOffset : 99
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : testPreciseCountCoveragePartial
            }
            [1] : {
                functions : [
                    [0] : {
                        functionName : 
                        isBlockCoverage : true
                        ranges : [
                            [0] : {
                                count : 1
                                endOffset : 3
                                startOffset : 0
                            }
                        ]
                    }
                ]
                scriptId : <scriptId>
                url : 
            }
        ]
    }
}
