Spaces:
Sleeping
Sleeping
<html> | |
<head> | |
<title>JSONSelect JS lex tests</title> | |
<link rel="stylesheet" type="text/css" href="js/doctest.css" /> | |
<script src="js/doctest.js"></script> | |
<script src="../jsonselect.js"></script> | |
<meta http-equiv="Content-type" content="text/html; charset=utf-8"> | |
</head> | |
<body> | |
<div> | |
<button onclick="doctest()" type="button">run tests</button> | |
<pre id="doctestOutput"></pre> | |
</div> | |
<h2> Tests of the JSONSelect lexer </h2> | |
<div class="test"> | |
Simple tokens | |
<pre class="doctest"> | |
$ JSONSelect._lex(">"); | |
[1, ">"] | |
$ JSONSelect._lex("*"); | |
[1, "*"] | |
$ JSONSelect._lex(","); | |
[1, ","] | |
$ JSONSelect._lex("."); | |
[1, "."] | |
</pre> | |
</div> | |
<div class="test"> | |
Offsets | |
<pre class="doctest"> | |
$ JSONSelect._lex("foobar>",6); | |
[7, ">"] | |
</pre> | |
</div> | |
<div class="test"> | |
Types | |
<pre class="doctest"> | |
$ JSONSelect._lex("string"); | |
[6, 3, "string"] | |
$ JSONSelect._lex("boolean"); | |
[7, 3, "boolean"] | |
$ JSONSelect._lex("null"); | |
[4, 3, "null"] | |
$ JSONSelect._lex("array"); | |
[5, 3, "array"] | |
$ JSONSelect._lex("object"); | |
[6, 3, "object"] | |
$ JSONSelect._lex("number"); | |
[6, 3, "number"] | |
</pre> | |
</div> | |
<div class="test"> | |
Whitespace | |
<pre class="doctest"> | |
$ JSONSelect._lex("\r"); | |
[1, " "] | |
$ JSONSelect._lex("\n"); | |
[1, " "] | |
$ JSONSelect._lex("\t"); | |
[1, " "] | |
$ JSONSelect._lex(" "); | |
[1, " "] | |
$ JSONSelect._lex(" \t \r\n !"); | |
[13, " "] | |
</pre> | |
<div class="test"> | |
pseudo classes | |
<pre class="doctest"> | |
$ JSONSelect._lex(":root"); | |
[5, 1, ":root"] | |
$ JSONSelect._lex(":first-child"); | |
[12, 1, ":first-child"] | |
$ JSONSelect._lex(":last-child"); | |
[11, 1, ":last-child"] | |
$ JSONSelect._lex(":only-child"); | |
[11, 1, ":only-child"] | |
</pre> | |
</div> | |
<div class="test"> | |
json strings | |
<pre class="doctest"> | |
$ JSONSelect._lex('"foo bar baz"'); | |
[13, 4, "foo bar baz"] | |
$ JSONSelect._lex('"\\u0020"'); | |
[8, 4, " "] | |
$ JSONSelect._lex('\"not terminated'); | |
Error: unclosed json string | |
$ JSONSelect._lex('"invalid escape: \\y"'); | |
Error: invalid json string | |
</pre> | |
</div> | |
<div class="test"> | |
identifiers (like after '.') | |
<pre class="doctest"> | |
$ JSONSelect._lex("foo"); | |
[3, 4, "foo"] | |
$ JSONSelect._lex("foo\\ bar"); | |
[8, 4, "foo bar"] | |
$ JSONSelect._lex("_aB129bcde-\\:foo\\@$"); | |
[18, 4, "_aB129bcde-:foo@"] | |
</pre> | |
</div> | |
<div class="test"> | |
non-ascii | |
<pre class="doctest"> | |
$ JSONSelect._lex("обичам\\ те\\!"); | |
[12, 4, "обичам те!"] | |
</pre> | |
</div> | |
</body> | |
</html> | |