| 1078 | } |
| 1079 | |
| 1080 | func TestStringTokensAfterVariable(t *testing.T) { |
| 1081 | src := `<?php "test \"$var\""` |
| 1082 | |
| 1083 | expected := []string{ |
| 1084 | TokenID(int('"')).String(), |
| 1085 | T_ENCAPSED_AND_WHITESPACE.String(), |
| 1086 | T_VARIABLE.String(), |
| 1087 | T_ENCAPSED_AND_WHITESPACE.String(), |
| 1088 | TokenID(int('"')).String(), |
| 1089 | } |
| 1090 | |
| 1091 | expectedTokens := []string{ |
| 1092 | "\"", |
| 1093 | "test \\\"", |
| 1094 | "$var", |
| 1095 | "\\\"", |
| 1096 | "\"", |
| 1097 | } |
| 1098 | |
| 1099 | lexer := NewLexer([]byte(src)) |
| 1100 | lv := &lval{} |
| 1101 | actual := []string{} |
| 1102 | actualTokens := []string{} |
| 1103 | |
| 1104 | for { |
| 1105 | token := lexer.Lex(lv) |
| 1106 | if token == 0 { |
| 1107 | break |
| 1108 | } |
| 1109 | |
| 1110 | actualTokens = append(actualTokens, lv.Tkn.Value) |
| 1111 | actual = append(actual, TokenID(token).String()) |
| 1112 | } |
| 1113 | |
| 1114 | assert.DeepEqual(t, expected, actual) |
| 1115 | assert.DeepEqual(t, expectedTokens, actualTokens) |
| 1116 | } |
| 1117 | |
| 1118 | func TestSlashAfterVariable(t *testing.T) { |
| 1119 | src := `<?php $foo/3` |