@Test
public void systemQueryOptions() {

  UriTokenizer tokenizer = new UriTokenizer("$expand=*;$filter=true;$levels=max;$orderby=false");
  assertTrue(tokenizer.next(TokenKind.EXPAND));
  assertTrue(tokenizer.next(TokenKind.EQ));
  assertTrue(tokenizer.next(TokenKind.STAR));
  assertTrue(tokenizer.next(TokenKind.SEMI));
  assertTrue(tokenizer.next(TokenKind.FILTER));
  assertTrue(tokenizer.next(TokenKind.EQ));
  assertTrue(tokenizer.next(TokenKind.BooleanValue));
  assertTrue(tokenizer.next(TokenKind.SEMI));
  assertTrue(tokenizer.next(TokenKind.LEVELS));
  assertTrue(tokenizer.next(TokenKind.EQ));
  assertTrue(tokenizer.next(TokenKind.MAX));
  assertTrue(tokenizer.next(TokenKind.SEMI));
  assertTrue(tokenizer.next(TokenKind.ORDERBY));
  assertTrue(tokenizer.next(TokenKind.EQ));
  assertTrue(tokenizer.next(TokenKind.BooleanValue));
  assertTrue(tokenizer.next(TokenKind.EOF));
  tokenizer = new UriTokenizer("$search=A;$select=*;$skip=1;$top=2");
  assertTrue(tokenizer.next(TokenKind.SEARCH));
  assertTrue(tokenizer.next(TokenKind.EQ));
  assertTrue(tokenizer.next(TokenKind.ODataIdentifier));
  assertTrue(tokenizer.next(TokenKind.SEMI));
  assertTrue(tokenizer.next(TokenKind.SELECT));
  assertTrue(tokenizer.next(TokenKind.EQ));
  assertTrue(tokenizer.next(TokenKind.STAR));
  assertTrue(tokenizer.next(TokenKind.SEMI));
  assertTrue(tokenizer.next(TokenKind.SKIP));
  assertTrue(tokenizer.next(TokenKind.EQ));
  assertTrue(tokenizer.next(TokenKind.IntegerValue));
  assertTrue(tokenizer.next(TokenKind.SEMI));
  assertTrue(tokenizer.next(TokenKind.TOP));
  assertTrue(tokenizer.next(TokenKind.EQ));
  assertTrue(tokenizer.next(TokenKind.IntegerValue));
  assertTrue(tokenizer.next(TokenKind.EOF));
}