blob: dc2b31ceed0b95370dc8321429b388ef326835aa [file] [log] [blame]
<!doctype html>
<html>
<head>
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script src="resources/script-for-breakpoint-actions.js"></script>
<script>
function runBreakpointActions()
{
breakpointActions(42, {x:1, y:2});
}
function test()
{
let suite = InspectorTest.createSyncSuite("Debugger.BreakpointLogMessageLexer");
function addTestCase({name, input, expectedTokens}) {
suite.addTestCase({
name,
test() {
let lexer = new WI.BreakpointLogMessageLexer;
let tokens = lexer.tokenize(input);
InspectorTest.log("Input: " + input);
InspectorTest.expectShallowEqual(tokens, expectedTokens, "Token stream should match expected tokens.");
return true;
}
});
}
addTestCase({
name: "EmptyMessage",
input: "",
expectedTokens: []
});
addTestCase({
name: "TextOnly",
input: "hello world",
expectedTokens: [
{
type: WI.BreakpointLogMessageLexer.TokenType.PlainText,
data: "hello world",
}
]
});
addTestCase({
name: "PlaceholderOnly",
input: "${x}",
expectedTokens: [
{
type: WI.BreakpointLogMessageLexer.TokenType.Expression,
data: "x",
}
]
});
addTestCase({
name: "NestedTemplateLiteral",
input: "${'x' + `${'y'}`}",
expectedTokens: [
{
type: WI.BreakpointLogMessageLexer.TokenType.Expression,
data: "'x' + `${'y'}`",
}
]
});
addTestCase({
name: "TextBeforePlaceholder",
input: "abc ${x}",
expectedTokens: [
{
type: WI.BreakpointLogMessageLexer.TokenType.PlainText,
data: "abc ",
},
{
type: WI.BreakpointLogMessageLexer.TokenType.Expression,
data: "x",
},
]
});
addTestCase({
name: "TextAfterPlaceholder",
input: "${x} abc",
expectedTokens: [
{
type: WI.BreakpointLogMessageLexer.TokenType.Expression,
data: "x",
},
{
type: WI.BreakpointLogMessageLexer.TokenType.PlainText,
data: " abc",
},
]
});
addTestCase({
name: "PlaceholderWithNestedBraces",
input: "${({a: '${}'}).a}",
expectedTokens: [
{
type: WI.BreakpointLogMessageLexer.TokenType.Expression,
data: "({a: '${}'}).a",
}
]
});
addTestCase({
name: "PlaceholderWithRegExpLiteral",
input: "${/\\}/.test('${')}",
expectedTokens: [
{
type: WI.BreakpointLogMessageLexer.TokenType.Expression,
data: "/\\}/.test('${')",
}
]
});
addTestCase({
name: "MultiplePlaceholders",
input: "${1} ${2}",
expectedTokens: [
{
type: WI.BreakpointLogMessageLexer.TokenType.Expression,
data: "1",
},
{
type: WI.BreakpointLogMessageLexer.TokenType.PlainText,
data: " ",
},
{
type: WI.BreakpointLogMessageLexer.TokenType.Expression,
data: "2",
}
]
});
addTestCase({
name: "ExpressionFollowedByBraces",
input: "${1}{2}",
expectedTokens: [
{
type: WI.BreakpointLogMessageLexer.TokenType.Expression,
data: "1",
},
{
type: WI.BreakpointLogMessageLexer.TokenType.PlainText,
data: "{2}",
},
]
});
suite.runTestCasesAndFinish();
}
</script>
</head>
<body onload="runTest()">
<p>Check that BreakpointLogMessageLexer correctly tokenizes breakpoint action log messages. Message text can include template literal placeholders.</p>
</body>
</html>