blob: fc5d58765516983914c2e777c1a3a40bd6b4d84c [file] [log] [blame]
<html>
<head>
<script src="../../http/tests/inspector/inspector-test.js"></script>
<script src="highlighter-test.js"></script>
<script>
function test()
{
var textModel = new WebInspector.TextEditorModel();
var highlighter = new WebInspector.TextEditorHighlighter(textModel, function() {});
highlighter.mimeType = "text/javascript";
highlighter.highlightChunkLimit = Number.MAX_VALUE; // Synchronous.
highlighter.setHighlightLineLimit(Number.MAX_VALUE);
var src = "/* asdf */ ";
var comments = 1;
for (var i = 0; i < 10; ++i) {
src += src;
comments *= 2;
}
textModel.setText(src);
function checkHighlights()
{
var commentsFound = 0;
for (var lineNumber = 0; lineNumber < textModel.linesCount; ++lineNumber) {
var highlight = textModel.getAttribute(lineNumber, "highlight");
for (var i = 0; i < highlight.ranges.length; ++i) {
var range = highlight.ranges[i];
if (range.token === "whitespace")
continue;
var rangeLength = range.endColumn - range.startColumn + 1;
if (rangeLength !== 10 || (range.startColumn % 11)) {
InspectorTest.addResult("ERROR: unexpected highlight result: i=" + range.startColumn + ", length=" + rangeLength);
break;
}
++commentsFound;
}
}
if (comments !== commentsFound)
InspectorTest.addResult("ERROR: some of the comments were not highlighted, found: " + commentsFound);
}
InspectorTest.addResult("Line length: " + src.length + ", number of comments: " + comments);
highlighter.highlight(textModel.linesCount);
checkHighlights();
// Insert a caret return in the middle of the long line.
var halfLength = Math.floor(src.length / 2);
var range = new WebInspector.TextRange(0, halfLength, 0, halfLength);
var newRange = textModel.editRange(range, "\n");
highlighter.updateHighlight(newRange.startLine, newRange.endLine + 1);
checkHighlights();
InspectorTest.addResult("All checks completed.");
InspectorTest.completeTest();
}
</script>
</head>
<body onload="runTest()">
<p>
This test checks highlighter on a long line.
</p>
</body>
</html>