modules/graphics/src/test/java/javafx/css/CssLexerTest.java
Print this page
rev 9240 : 8076423: JEP 253: Prepare JavaFX UI Controls & CSS APIs for Modularization
*** 21,31 ****
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
! package com.sun.javafx.css.parser;
import java.io.CharArrayReader;
import java.io.Reader;
import java.util.ArrayList;
import java.util.Arrays;
--- 21,33 ----
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
! package javafx.css;
!
! import com.sun.javafx.css.parser.Token;
import java.io.CharArrayReader;
import java.io.Reader;
import java.util.ArrayList;
import java.util.Arrays;
*** 35,47 ****
import static org.junit.Assert.assertEquals;
import org.junit.Test;
! public class CSSLexerTest {
! public CSSLexerTest() {
}
private void checkTokens(List<Token> resultTokens, Token... expectedTokens)
throws org.junit.ComparisonFailure {
--- 37,49 ----
import static org.junit.Assert.assertEquals;
import org.junit.Test;
! public class CssLexerTest {
! public CssLexerTest() {
}
private void checkTokens(List<Token> resultTokens, Token... expectedTokens)
throws org.junit.ComparisonFailure {
*** 80,90 ****
}
List<Token> getTokens(String string) {
Reader reader = new CharArrayReader(string.toCharArray());
! final CSSLexer lexer = CSSLexer.getInstance();
lexer.setReader(reader);
final List<Token> tokens = new ArrayList<Token>();
Token token = null;
--- 82,92 ----
}
List<Token> getTokens(String string) {
Reader reader = new CharArrayReader(string.toCharArray());
! final CssLexer lexer = new CssLexer();
lexer.setReader(reader);
final List<Token> tokens = new ArrayList<Token>();
Token token = null;
*** 107,302 ****
checkTokens(getTokens("+.45"+units), new Token(type, "+.45"+units), Token.EOF_TOKEN);
}
@Test
public void testLexValidDigits() {
! lexDigitsWithUnits("", CSSLexer.NUMBER);
}
@Test
public void testLexValidDigitsWithCM() {
! lexDigitsWithUnits("cm", CSSLexer.CM);
// case should be ignored
! lexDigitsWithUnits("cM", CSSLexer.CM);
}
@Test
public void testLexValidDigitsWithDEG() {
! lexDigitsWithUnits("deg", CSSLexer.DEG);
// case should be ignored
! lexDigitsWithUnits("dEg", CSSLexer.DEG);
}
@Test
public void testLexValidDigitsWithEM() {
! lexDigitsWithUnits("em", CSSLexer.EMS);
// case should be ignored
! lexDigitsWithUnits("Em", CSSLexer.EMS);
}
@Test
public void testLexValidDigitsWithEX() {
! lexDigitsWithUnits("ex", CSSLexer.EXS);
// case should be ignored
! lexDigitsWithUnits("Ex", CSSLexer.EXS);
}
@Test
public void testLexValidDigitsWithGRAD() {
! lexDigitsWithUnits("grad", CSSLexer.GRAD);
// case should be ignored
! lexDigitsWithUnits("gRad", CSSLexer.GRAD);
}
@Test
public void testLexValidDigitsWithIN() {
! lexDigitsWithUnits("in", CSSLexer.IN);
// case should be ignored
! lexDigitsWithUnits("In", CSSLexer.IN);
}
@Test
public void testLexValidDigitsWithMM() {
! lexDigitsWithUnits("mm", CSSLexer.MM);
// case should be ignored
! lexDigitsWithUnits("mM", CSSLexer.MM);
}
@Test
public void testLexValidDigitsWithPC() {
! lexDigitsWithUnits("pc", CSSLexer.PC);
// case should be ignored
! lexDigitsWithUnits("Pc", CSSLexer.PC);
}
@Test
public void testLexValidDigitsWithPT() {
! lexDigitsWithUnits("pt", CSSLexer.PT);
// case should be ignored
! lexDigitsWithUnits("PT", CSSLexer.PT);
}
@Test
public void testLexValidDigitsWithPX() {
! lexDigitsWithUnits("px", CSSLexer.PX);
// case should be ignored
! lexDigitsWithUnits("Px", CSSLexer.PX);
}
@Test
public void testLexValidDigitsWithRAD() {
! lexDigitsWithUnits("rad", CSSLexer.RAD);
// case should be ignored
! lexDigitsWithUnits("RaD", CSSLexer.RAD);
}
@Test
public void testLexValidDigitsWithTURN() {
! lexDigitsWithUnits("turn", CSSLexer.TURN);
// case should be ignored
! lexDigitsWithUnits("TurN", CSSLexer.TURN);
}
@Test
public void testLexValidDigitsWithS() {
! lexDigitsWithUnits("s", CSSLexer.SECONDS);
// case should be ignored
! lexDigitsWithUnits("S", CSSLexer.SECONDS);
}
@Test
public void testLexValidDigitsWithMS() {
! lexDigitsWithUnits("ms", CSSLexer.MS);
// case should be ignored
! lexDigitsWithUnits("mS", CSSLexer.MS);
}
@Test
public void testLexValidDigitsWithPCT() {
! lexDigitsWithUnits("%", CSSLexer.PERCENTAGE);
}
@Test
public void testLexValidDigitsWithBadUnits() {
lexDigitsWithUnits("xyzzy", Token.INVALID);
}
@Test
public void textLexValidDigitsValidDigits() {
checkTokens(
getTokens("foo: 10pt; bar: 20%;"),
! new Token(CSSLexer.IDENT, "foo"),
! new Token(CSSLexer.COLON, ":"),
! new Token(CSSLexer.WS, " "),
! new Token(CSSLexer.PT, "10pt"),
! new Token(CSSLexer.SEMI, ";"),
! new Token(CSSLexer.WS, " "),
! new Token(CSSLexer.IDENT, "bar"),
! new Token(CSSLexer.COLON, ":"),
! new Token(CSSLexer.WS, " "),
! new Token(CSSLexer.PERCENTAGE, "20%"),
! new Token(CSSLexer.SEMI, ";"),
Token.EOF_TOKEN
);
}
@Test
public void textLexInvalidDigitsValidDigits() {
checkTokens(
getTokens("foo: 10pz; bar: 20%;"),
! new Token(CSSLexer.IDENT, "foo"),
! new Token(CSSLexer.COLON, ":"),
! new Token(CSSLexer.WS, " "),
new Token(Token.INVALID, "10pz"),
! new Token(CSSLexer.SEMI, ";"),
! new Token(CSSLexer.WS, " "),
! new Token(CSSLexer.IDENT, "bar"),
! new Token(CSSLexer.COLON, ":"),
! new Token(CSSLexer.WS, " "),
! new Token(CSSLexer.PERCENTAGE, "20%"),
! new Token(CSSLexer.SEMI, ";"),
Token.EOF_TOKEN
);
}
@Test
public void textLexValidDigitsBangImportant() {
checkTokens(
getTokens("foo: 10pt !important;"),
! new Token(CSSLexer.IDENT, "foo"),
! new Token(CSSLexer.COLON, ":"),
! new Token(CSSLexer.WS, " "),
! new Token(CSSLexer.PT, "10pt"),
! new Token(CSSLexer.WS, " "),
! new Token(CSSLexer.IMPORTANT_SYM, "!important"),
! new Token(CSSLexer.SEMI, ";"),
Token.EOF_TOKEN
);
}
@Test
public void textLexInvalidDigitsBangImportant() {
checkTokens(
getTokens("foo: 10pz !important;"),
! new Token(CSSLexer.IDENT, "foo"),
! new Token(CSSLexer.COLON, ":"),
! new Token(CSSLexer.WS, " "),
new Token(Token.INVALID, "10pz"),
! new Token(CSSLexer.WS, " "),
! new Token(CSSLexer.IMPORTANT_SYM, "!important"),
! new Token(CSSLexer.SEMI, ";"),
Token.EOF_TOKEN
);
}
@Test
public void textLexValidDigitsInSequence() {
checkTokens(
getTokens("-1 0px 1pt .5em;"),
! new Token(CSSLexer.NUMBER, "-1"),
! new Token(CSSLexer.WS, " "),
! new Token(CSSLexer.PX, "0px"),
! new Token(CSSLexer.WS, " "),
! new Token(CSSLexer.PT, "1pt"),
! new Token(CSSLexer.WS, " "),
! new Token(CSSLexer.EMS, ".5em"),
! new Token(CSSLexer.SEMI, ";"),
Token.EOF_TOKEN
);
}
@Test
public void textLexInvalidDigitsInSequence() {
checkTokens(
getTokens("-1 0px 1pz .5em;"),
! new Token(CSSLexer.NUMBER, "-1"),
! new Token(CSSLexer.WS, " "),
! new Token(CSSLexer.PX, "0px"),
! new Token(CSSLexer.WS, " "),
new Token(Token.INVALID, "1pz"),
! new Token(CSSLexer.WS, " "),
! new Token(CSSLexer.EMS, ".5em"),
! new Token(CSSLexer.SEMI, ";"),
Token.EOF_TOKEN
);
}
@Test
--- 109,304 ----
checkTokens(getTokens("+.45"+units), new Token(type, "+.45"+units), Token.EOF_TOKEN);
}
@Test
public void testLexValidDigits() {
! lexDigitsWithUnits("", CssLexer.NUMBER);
}
@Test
public void testLexValidDigitsWithCM() {
! lexDigitsWithUnits("cm", CssLexer.CM);
// case should be ignored
! lexDigitsWithUnits("cM", CssLexer.CM);
}
@Test
public void testLexValidDigitsWithDEG() {
! lexDigitsWithUnits("deg", CssLexer.DEG);
// case should be ignored
! lexDigitsWithUnits("dEg", CssLexer.DEG);
}
@Test
public void testLexValidDigitsWithEM() {
! lexDigitsWithUnits("em", CssLexer.EMS);
// case should be ignored
! lexDigitsWithUnits("Em", CssLexer.EMS);
}
@Test
public void testLexValidDigitsWithEX() {
! lexDigitsWithUnits("ex", CssLexer.EXS);
// case should be ignored
! lexDigitsWithUnits("Ex", CssLexer.EXS);
}
@Test
public void testLexValidDigitsWithGRAD() {
! lexDigitsWithUnits("grad", CssLexer.GRAD);
// case should be ignored
! lexDigitsWithUnits("gRad", CssLexer.GRAD);
}
@Test
public void testLexValidDigitsWithIN() {
! lexDigitsWithUnits("in", CssLexer.IN);
// case should be ignored
! lexDigitsWithUnits("In", CssLexer.IN);
}
@Test
public void testLexValidDigitsWithMM() {
! lexDigitsWithUnits("mm", CssLexer.MM);
// case should be ignored
! lexDigitsWithUnits("mM", CssLexer.MM);
}
@Test
public void testLexValidDigitsWithPC() {
! lexDigitsWithUnits("pc", CssLexer.PC);
// case should be ignored
! lexDigitsWithUnits("Pc", CssLexer.PC);
}
@Test
public void testLexValidDigitsWithPT() {
! lexDigitsWithUnits("pt", CssLexer.PT);
// case should be ignored
! lexDigitsWithUnits("PT", CssLexer.PT);
}
@Test
public void testLexValidDigitsWithPX() {
! lexDigitsWithUnits("px", CssLexer.PX);
// case should be ignored
! lexDigitsWithUnits("Px", CssLexer.PX);
}
@Test
public void testLexValidDigitsWithRAD() {
! lexDigitsWithUnits("rad", CssLexer.RAD);
// case should be ignored
! lexDigitsWithUnits("RaD", CssLexer.RAD);
}
@Test
public void testLexValidDigitsWithTURN() {
! lexDigitsWithUnits("turn", CssLexer.TURN);
// case should be ignored
! lexDigitsWithUnits("TurN", CssLexer.TURN);
}
@Test
public void testLexValidDigitsWithS() {
! lexDigitsWithUnits("s", CssLexer.SECONDS);
// case should be ignored
! lexDigitsWithUnits("S", CssLexer.SECONDS);
}
@Test
public void testLexValidDigitsWithMS() {
! lexDigitsWithUnits("ms", CssLexer.MS);
// case should be ignored
! lexDigitsWithUnits("mS", CssLexer.MS);
}
@Test
public void testLexValidDigitsWithPCT() {
! lexDigitsWithUnits("%", CssLexer.PERCENTAGE);
}
@Test
public void testLexValidDigitsWithBadUnits() {
lexDigitsWithUnits("xyzzy", Token.INVALID);
}
@Test
public void textLexValidDigitsValidDigits() {
checkTokens(
getTokens("foo: 10pt; bar: 20%;"),
! new Token(CssLexer.IDENT, "foo"),
! new Token(CssLexer.COLON, ":"),
! new Token(CssLexer.WS, " "),
! new Token(CssLexer.PT, "10pt"),
! new Token(CssLexer.SEMI, ";"),
! new Token(CssLexer.WS, " "),
! new Token(CssLexer.IDENT, "bar"),
! new Token(CssLexer.COLON, ":"),
! new Token(CssLexer.WS, " "),
! new Token(CssLexer.PERCENTAGE, "20%"),
! new Token(CssLexer.SEMI, ";"),
Token.EOF_TOKEN
);
}
@Test
public void textLexInvalidDigitsValidDigits() {
checkTokens(
getTokens("foo: 10pz; bar: 20%;"),
! new Token(CssLexer.IDENT, "foo"),
! new Token(CssLexer.COLON, ":"),
! new Token(CssLexer.WS, " "),
new Token(Token.INVALID, "10pz"),
! new Token(CssLexer.SEMI, ";"),
! new Token(CssLexer.WS, " "),
! new Token(CssLexer.IDENT, "bar"),
! new Token(CssLexer.COLON, ":"),
! new Token(CssLexer.WS, " "),
! new Token(CssLexer.PERCENTAGE, "20%"),
! new Token(CssLexer.SEMI, ";"),
Token.EOF_TOKEN
);
}
@Test
public void textLexValidDigitsBangImportant() {
checkTokens(
getTokens("foo: 10pt !important;"),
! new Token(CssLexer.IDENT, "foo"),
! new Token(CssLexer.COLON, ":"),
! new Token(CssLexer.WS, " "),
! new Token(CssLexer.PT, "10pt"),
! new Token(CssLexer.WS, " "),
! new Token(CssLexer.IMPORTANT_SYM, "!important"),
! new Token(CssLexer.SEMI, ";"),
Token.EOF_TOKEN
);
}
@Test
public void textLexInvalidDigitsBangImportant() {
checkTokens(
getTokens("foo: 10pz !important;"),
! new Token(CssLexer.IDENT, "foo"),
! new Token(CssLexer.COLON, ":"),
! new Token(CssLexer.WS, " "),
new Token(Token.INVALID, "10pz"),
! new Token(CssLexer.WS, " "),
! new Token(CssLexer.IMPORTANT_SYM, "!important"),
! new Token(CssLexer.SEMI, ";"),
Token.EOF_TOKEN
);
}
@Test
public void textLexValidDigitsInSequence() {
checkTokens(
getTokens("-1 0px 1pt .5em;"),
! new Token(CssLexer.NUMBER, "-1"),
! new Token(CssLexer.WS, " "),
! new Token(CssLexer.PX, "0px"),
! new Token(CssLexer.WS, " "),
! new Token(CssLexer.PT, "1pt"),
! new Token(CssLexer.WS, " "),
! new Token(CssLexer.EMS, ".5em"),
! new Token(CssLexer.SEMI, ";"),
Token.EOF_TOKEN
);
}
@Test
public void textLexInvalidDigitsInSequence() {
checkTokens(
getTokens("-1 0px 1pz .5em;"),
! new Token(CssLexer.NUMBER, "-1"),
! new Token(CssLexer.WS, " "),
! new Token(CssLexer.PX, "0px"),
! new Token(CssLexer.WS, " "),
new Token(Token.INVALID, "1pz"),
! new Token(CssLexer.WS, " "),
! new Token(CssLexer.EMS, ".5em"),
! new Token(CssLexer.SEMI, ";"),
Token.EOF_TOKEN
);
}
@Test
*** 304,318 ****
String str = "a: b;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CSSLexer.IDENT, "a", 1, 0),
! new Token(CSSLexer.COLON, ":", 1, 1),
! new Token(CSSLexer.WS, " ", 1, 2),
! new Token(CSSLexer.IDENT, "b", 1, 3),
! new Token(CSSLexer.SEMI, ";", 1, 4),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 306,320 ----
String str = "a: b;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CssLexer.IDENT, "a", 1, 0),
! new Token(CssLexer.COLON, ":", 1, 1),
! new Token(CssLexer.WS, " ", 1, 2),
! new Token(CssLexer.IDENT, "b", 1, 3),
! new Token(CssLexer.SEMI, ";", 1, 4),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
*** 330,350 ****
String str = "a: b;\rc: d;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CSSLexer.IDENT, "a", 1, 0),
! new Token(CSSLexer.COLON, ":", 1, 1),
! new Token(CSSLexer.WS, " ", 1, 2),
! new Token(CSSLexer.IDENT, "b", 1, 3),
! new Token(CSSLexer.SEMI, ";", 1, 4),
! new Token(CSSLexer.NL, "\\r", 1, 5),
! new Token(CSSLexer.IDENT, "c", 2, 0),
! new Token(CSSLexer.COLON, ":", 2, 1),
! new Token(CSSLexer.WS, " ", 2, 2),
! new Token(CSSLexer.IDENT, "d", 2, 3),
! new Token(CSSLexer.SEMI, ";", 2, 4),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 332,352 ----
String str = "a: b;\rc: d;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CssLexer.IDENT, "a", 1, 0),
! new Token(CssLexer.COLON, ":", 1, 1),
! new Token(CssLexer.WS, " ", 1, 2),
! new Token(CssLexer.IDENT, "b", 1, 3),
! new Token(CssLexer.SEMI, ";", 1, 4),
! new Token(CssLexer.NL, "\\r", 1, 5),
! new Token(CssLexer.IDENT, "c", 2, 0),
! new Token(CssLexer.COLON, ":", 2, 1),
! new Token(CssLexer.WS, " ", 2, 2),
! new Token(CssLexer.IDENT, "d", 2, 3),
! new Token(CssLexer.SEMI, ";", 2, 4),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
*** 362,382 ****
String str = "a: b;\nc: d;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CSSLexer.IDENT, "a", 1, 0),
! new Token(CSSLexer.COLON, ":", 1, 1),
! new Token(CSSLexer.WS, " ", 1, 2),
! new Token(CSSLexer.IDENT, "b", 1, 3),
! new Token(CSSLexer.SEMI, ";", 1, 4),
! new Token(CSSLexer.NL, "\\n", 1, 5),
! new Token(CSSLexer.IDENT, "c", 2, 0),
! new Token(CSSLexer.COLON, ":", 2, 1),
! new Token(CSSLexer.WS, " ", 2, 2),
! new Token(CSSLexer.IDENT, "d", 2, 3),
! new Token(CSSLexer.SEMI, ";", 2, 4),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 364,384 ----
String str = "a: b;\nc: d;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CssLexer.IDENT, "a", 1, 0),
! new Token(CssLexer.COLON, ":", 1, 1),
! new Token(CssLexer.WS, " ", 1, 2),
! new Token(CssLexer.IDENT, "b", 1, 3),
! new Token(CssLexer.SEMI, ";", 1, 4),
! new Token(CssLexer.NL, "\\n", 1, 5),
! new Token(CssLexer.IDENT, "c", 2, 0),
! new Token(CssLexer.COLON, ":", 2, 1),
! new Token(CssLexer.WS, " ", 2, 2),
! new Token(CssLexer.IDENT, "d", 2, 3),
! new Token(CssLexer.SEMI, ";", 2, 4),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
*** 394,414 ****
// 012345 01234
String str = "a: b;\r\nc: d;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CSSLexer.IDENT, "a", 1, 0),
! new Token(CSSLexer.COLON, ":", 1, 1),
! new Token(CSSLexer.WS, " ", 1, 2),
! new Token(CSSLexer.IDENT, "b", 1, 3),
! new Token(CSSLexer.SEMI, ";", 1, 4),
! new Token(CSSLexer.NL, "\\r\\n", 1, 5),
! new Token(CSSLexer.IDENT, "c", 2, 0),
! new Token(CSSLexer.COLON, ":", 2, 1),
! new Token(CSSLexer.WS, " ", 2, 2),
! new Token(CSSLexer.IDENT, "d", 2, 3),
! new Token(CSSLexer.SEMI, ";", 2, 4),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 396,416 ----
// 012345 01234
String str = "a: b;\r\nc: d;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CssLexer.IDENT, "a", 1, 0),
! new Token(CssLexer.COLON, ":", 1, 1),
! new Token(CssLexer.WS, " ", 1, 2),
! new Token(CssLexer.IDENT, "b", 1, 3),
! new Token(CssLexer.SEMI, ";", 1, 4),
! new Token(CssLexer.NL, "\\r\\n", 1, 5),
! new Token(CssLexer.IDENT, "c", 2, 0),
! new Token(CssLexer.COLON, ":", 2, 1),
! new Token(CssLexer.WS, " ", 2, 2),
! new Token(CssLexer.IDENT, "d", 2, 3),
! new Token(CssLexer.SEMI, ";", 2, 4),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
*** 426,440 ****
// 0123456789012345
String str = "a: /*comment*/b;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CSSLexer.IDENT, "a", 1, 0),
! new Token(CSSLexer.COLON, ":", 1, 1),
! new Token(CSSLexer.WS, " ", 1, 2),
! new Token(CSSLexer.IDENT, "b", 1, 14),
! new Token(CSSLexer.SEMI, ";", 1, 15),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 428,442 ----
// 0123456789012345
String str = "a: /*comment*/b;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CssLexer.IDENT, "a", 1, 0),
! new Token(CssLexer.COLON, ":", 1, 1),
! new Token(CssLexer.WS, " ", 1, 2),
! new Token(CssLexer.IDENT, "b", 1, 14),
! new Token(CssLexer.SEMI, ";", 1, 15),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
*** 451,466 ****
// 012345678901 01234
String str = "/*comment*/\na: b;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CSSLexer.NL, "\\n", 1, 11),
! new Token(CSSLexer.IDENT, "a", 2, 0),
! new Token(CSSLexer.COLON, ":", 2, 1),
! new Token(CSSLexer.WS, " ", 2, 2),
! new Token(CSSLexer.IDENT, "b", 2, 3),
! new Token(CSSLexer.SEMI, ";", 2, 4),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 453,468 ----
// 012345678901 01234
String str = "/*comment*/\na: b;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CssLexer.NL, "\\n", 1, 11),
! new Token(CssLexer.IDENT, "a", 2, 0),
! new Token(CssLexer.COLON, ":", 2, 1),
! new Token(CssLexer.WS, " ", 2, 2),
! new Token(CssLexer.IDENT, "b", 2, 3),
! new Token(CssLexer.SEMI, ";", 2, 4),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
*** 477,494 ****
// 01234567890
String str = "a: b(arg);";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CSSLexer.IDENT, "a", 1, 0),
! new Token(CSSLexer.COLON, ":", 1, 1),
! new Token(CSSLexer.WS, " ", 1, 2),
! new Token(CSSLexer.IDENT, "b", 1, 3),
! new Token(CSSLexer.LPAREN, "(", 1, 4),
! new Token(CSSLexer.IDENT, "arg", 1, 5),
! new Token(CSSLexer.RPAREN, ")", 1, 8),
! new Token(CSSLexer.SEMI, ";", 1, 9),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 479,496 ----
// 01234567890
String str = "a: b(arg);";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CssLexer.IDENT, "a", 1, 0),
! new Token(CssLexer.COLON, ":", 1, 1),
! new Token(CssLexer.WS, " ", 1, 2),
! new Token(CssLexer.IDENT, "b", 1, 3),
! new Token(CssLexer.LPAREN, "(", 1, 4),
! new Token(CssLexer.IDENT, "arg", 1, 5),
! new Token(CssLexer.RPAREN, ")", 1, 8),
! new Token(CssLexer.SEMI, ";", 1, 9),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
*** 505,519 ****
// 01234567890
String str = "a: #012345;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CSSLexer.IDENT, "a", 1, 0),
! new Token(CSSLexer.COLON, ":", 1, 1),
! new Token(CSSLexer.WS, " ", 1, 2),
! new Token(CSSLexer.HASH, "#012345", 1, 3),
! new Token(CSSLexer.SEMI, ";", 1, 10),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 507,521 ----
// 01234567890
String str = "a: #012345;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CssLexer.IDENT, "a", 1, 0),
! new Token(CssLexer.COLON, ":", 1, 1),
! new Token(CssLexer.WS, " ", 1, 2),
! new Token(CssLexer.HASH, "#012345", 1, 3),
! new Token(CssLexer.SEMI, ";", 1, 10),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
*** 530,544 ****
// 01234567890
String str = "a: 123.45;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CSSLexer.IDENT, "a", 1, 0),
! new Token(CSSLexer.COLON, ":", 1, 1),
! new Token(CSSLexer.WS, " ", 1, 2),
! new Token(CSSLexer.NUMBER, "123.45", 1, 3),
! new Token(CSSLexer.SEMI, ";", 1, 9),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 532,546 ----
// 01234567890
String str = "a: 123.45;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CssLexer.IDENT, "a", 1, 0),
! new Token(CssLexer.COLON, ":", 1, 1),
! new Token(CssLexer.WS, " ", 1, 2),
! new Token(CssLexer.NUMBER, "123.45", 1, 3),
! new Token(CssLexer.SEMI, ";", 1, 9),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
*** 555,571 ****
// 0123456789012345
String str = "a: b !important;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CSSLexer.IDENT, "a", 1, 0),
! new Token(CSSLexer.COLON, ":", 1, 1),
! new Token(CSSLexer.WS, " ", 1, 2),
! new Token(CSSLexer.IDENT, "b", 1, 3),
! new Token(CSSLexer.WS, " ", 1, 4),
! new Token(CSSLexer.IMPORTANT_SYM, "!important", 1, 5),
! new Token(CSSLexer.SEMI, ";", 1, 15),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 557,573 ----
// 0123456789012345
String str = "a: b !important;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CssLexer.IDENT, "a", 1, 0),
! new Token(CssLexer.COLON, ":", 1, 1),
! new Token(CssLexer.WS, " ", 1, 2),
! new Token(CssLexer.IDENT, "b", 1, 3),
! new Token(CssLexer.WS, " ", 1, 4),
! new Token(CssLexer.IMPORTANT_SYM, "!important", 1, 5),
! new Token(CssLexer.SEMI, ";", 1, 15),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
*** 582,598 ****
// 0123456789012345
String str = "a: b !imporzant;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CSSLexer.IDENT, "a", 1, 0),
! new Token(CSSLexer.COLON, ":", 1, 1),
! new Token(CSSLexer.WS, " ", 1, 2),
! new Token(CSSLexer.IDENT, "b", 1, 3),
! new Token(CSSLexer.WS, " ", 1, 4),
new Token(Token.SKIP, "!imporz", 1, 5),
! new Token(CSSLexer.SEMI, ";", 1, 15),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 584,600 ----
// 0123456789012345
String str = "a: b !imporzant;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CssLexer.IDENT, "a", 1, 0),
! new Token(CssLexer.COLON, ":", 1, 1),
! new Token(CssLexer.WS, " ", 1, 2),
! new Token(CssLexer.IDENT, "b", 1, 3),
! new Token(CssLexer.WS, " ", 1, 4),
new Token(Token.SKIP, "!imporz", 1, 5),
! new Token(CssLexer.SEMI, ";", 1, 15),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
*** 609,623 ****
// 0123456789012345
String str = "a: 1pz;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CSSLexer.IDENT, "a", 1, 0),
! new Token(CSSLexer.COLON, ":", 1, 1),
! new Token(CSSLexer.WS, " ", 1, 2),
new Token(Token.INVALID, "1pz", 1, 3),
! new Token(CSSLexer.SEMI, ";", 1, 6),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 611,625 ----
// 0123456789012345
String str = "a: 1pz;";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CssLexer.IDENT, "a", 1, 0),
! new Token(CssLexer.COLON, ":", 1, 1),
! new Token(CssLexer.WS, " ", 1, 2),
new Token(Token.INVALID, "1pz", 1, 3),
! new Token(CssLexer.SEMI, ";", 1, 6),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
*** 635,662 ****
// 012345678901 0123456789012345 012345678 0
String str = "/*comment*/\n*.foo#bar:baz {\n\ta: 1em;\n}";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CSSLexer.NL, "\\n", 1, 11),
! new Token(CSSLexer.STAR, "*", 2, 0),
! new Token(CSSLexer.DOT, ".", 2, 1),
! new Token(CSSLexer.IDENT, "foo", 2, 2),
! new Token(CSSLexer.HASH, "#bar", 2, 5),
! new Token(CSSLexer.COLON, ":", 2, 9),
! new Token(CSSLexer.IDENT, "baz", 2, 10),
! new Token(CSSLexer.WS, " ", 2, 13),
! new Token(CSSLexer.LBRACE, "{", 2, 14),
! new Token(CSSLexer.NL, "\\n", 2, 15),
! new Token(CSSLexer.WS, "\t", 3, 0),
! new Token(CSSLexer.IDENT, "a", 3, 1),
! new Token(CSSLexer.COLON, ":", 3, 2),
! new Token(CSSLexer.WS, " ", 3, 3),
! new Token(CSSLexer.EMS, "1em", 3, 4),
! new Token(CSSLexer.SEMI, ";", 3, 7),
! new Token(CSSLexer.NL, "\\n", 3, 8),
! new Token(CSSLexer.RBRACE, "}", 4, 0),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 637,664 ----
// 012345678901 0123456789012345 012345678 0
String str = "/*comment*/\n*.foo#bar:baz {\n\ta: 1em;\n}";
// [?][0] = line
// [?][1] = offset
Token[] expected = {
! new Token(CssLexer.NL, "\\n", 1, 11),
! new Token(CssLexer.STAR, "*", 2, 0),
! new Token(CssLexer.DOT, ".", 2, 1),
! new Token(CssLexer.IDENT, "foo", 2, 2),
! new Token(CssLexer.HASH, "#bar", 2, 5),
! new Token(CssLexer.COLON, ":", 2, 9),
! new Token(CssLexer.IDENT, "baz", 2, 10),
! new Token(CssLexer.WS, " ", 2, 13),
! new Token(CssLexer.LBRACE, "{", 2, 14),
! new Token(CssLexer.NL, "\\n", 2, 15),
! new Token(CssLexer.WS, "\t", 3, 0),
! new Token(CssLexer.IDENT, "a", 3, 1),
! new Token(CssLexer.COLON, ":", 3, 2),
! new Token(CssLexer.WS, " ", 3, 3),
! new Token(CssLexer.EMS, "1em", 3, 4),
! new Token(CssLexer.SEMI, ";", 3, 7),
! new Token(CssLexer.NL, "\\n", 3, 8),
! new Token(CssLexer.RBRACE, "}", 4, 0),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
*** 673,683 ****
// 1 2 3 4
// 01234567890101234567890123450123456780123456789
String str = "url(http://foo.bar.com/fonts/serif/fubar.ttf)";
Token[] expected = new Token[]{
! new Token(CSSLexer.URL, "http://foo.bar.com/fonts/serif/fubar.ttf", 1, 0),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 675,685 ----
// 1 2 3 4
// 01234567890101234567890123450123456780123456789
String str = "url(http://foo.bar.com/fonts/serif/fubar.ttf)";
Token[] expected = new Token[]{
! new Token(CssLexer.URL, "http://foo.bar.com/fonts/serif/fubar.ttf", 1, 0),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
*** 695,705 ****
// 1 2 3 4
// 01234567890101234567890123450123456780123456789
String str = "url( http://foo.bar.com/fonts/serif/fubar.ttf\t)";
Token[] expected = new Token[]{
! new Token(CSSLexer.URL, "http://foo.bar.com/fonts/serif/fubar.ttf", 1, 0),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 697,707 ----
// 1 2 3 4
// 01234567890101234567890123450123456780123456789
String str = "url( http://foo.bar.com/fonts/serif/fubar.ttf\t)";
Token[] expected = new Token[]{
! new Token(CssLexer.URL, "http://foo.bar.com/fonts/serif/fubar.ttf", 1, 0),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
*** 717,727 ****
// 1 2 3 4
// 01234567890101234567890123450123456780123456789
String str = "url( 'http://foo.bar.com/fonts/serif/fubar.ttf'\t)";
Token[] expected = new Token[]{
! new Token(CSSLexer.URL, "http://foo.bar.com/fonts/serif/fubar.ttf", 1, 0),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 719,729 ----
// 1 2 3 4
// 01234567890101234567890123450123456780123456789
String str = "url( 'http://foo.bar.com/fonts/serif/fubar.ttf'\t)";
Token[] expected = new Token[]{
! new Token(CssLexer.URL, "http://foo.bar.com/fonts/serif/fubar.ttf", 1, 0),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
*** 739,749 ****
// 1 2 3 4
// 01234567890101234567890123450123456780123456789
String str = "url(\"http://foo.bar.com/fonts/serif/fubar.ttf\")";
Token[] expected = new Token[]{
! new Token(CSSLexer.URL, "http://foo.bar.com/fonts/serif/fubar.ttf", 1, 0),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 741,751 ----
// 1 2 3 4
// 01234567890101234567890123450123456780123456789
String str = "url(\"http://foo.bar.com/fonts/serif/fubar.ttf\")";
Token[] expected = new Token[]{
! new Token(CssLexer.URL, "http://foo.bar.com/fonts/serif/fubar.ttf", 1, 0),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
*** 761,771 ****
// 1 2 3 4
// 01234567890101234567890123450123456780123456789
String str = "url(http://foo.bar.com/fonts/true\\ type/fubar.ttf)";
Token[] expected = new Token[]{
! new Token(CSSLexer.URL, "http://foo.bar.com/fonts/true type/fubar.ttf", 1, 0),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 763,773 ----
// 1 2 3 4
// 01234567890101234567890123450123456780123456789
String str = "url(http://foo.bar.com/fonts/true\\ type/fubar.ttf)";
Token[] expected = new Token[]{
! new Token(CssLexer.URL, "http://foo.bar.com/fonts/true type/fubar.ttf", 1, 0),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
*** 783,793 ****
// 1 2 3 4
// 01234567890101234567890123450123456780123456789
String str = "url(\"http://foo.bar.com/fonts/true\\ type/fubar.ttf\")";
Token[] expected = new Token[]{
! new Token(CSSLexer.URL, "http://foo.bar.com/fonts/true type/fubar.ttf", 1, 0),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);
--- 785,795 ----
// 1 2 3 4
// 01234567890101234567890123450123456780123456789
String str = "url(\"http://foo.bar.com/fonts/true\\ type/fubar.ttf\")";
Token[] expected = new Token[]{
! new Token(CssLexer.URL, "http://foo.bar.com/fonts/true type/fubar.ttf", 1, 0),
Token.EOF_TOKEN
};
List<Token> tlist = getTokens(str);
checkTokens(tlist, expected);