in android-lang/testSrc/com/android/tools/idea/lang/androidSql/parser/AndroidSqlParserTest.kt [394:654]
fun testPragmas() {
assertEquals(
"""
FILE
AndroidSqlPragmaStatementImpl(PRAGMA_STATEMENT)
PsiElement(PRAGMA)('PRAGMA')
AndroidSqlPragmaNameImpl(PRAGMA_NAME)
PsiElement(IDENTIFIER)('auto_vacuum')
PsiElement(=)('=')
AndroidSqlPragmaValueImpl(PRAGMA_VALUE)
PsiElement(FULL)('FULL')
"""
.trimIndent(),
toParseTreeText("PRAGMA auto_vacuum=FULL"),
)
assertEquals(
"""
FILE
AndroidSqlPragmaStatementImpl(PRAGMA_STATEMENT)
PsiElement(PRAGMA)('PRAGMA')
AndroidSqlPragmaNameImpl(PRAGMA_NAME)
PsiElement(IDENTIFIER)('foreign_keys')
PsiElement(=)('=')
AndroidSqlPragmaValueImpl(PRAGMA_VALUE)
AndroidSqlSignedNumberImpl(SIGNED_NUMBER)
PsiElement(NUMERIC_LITERAL)('1')
"""
.trimIndent(),
toParseTreeText("PRAGMA foreign_keys=1"),
)
assertEquals(
"""
FILE
AndroidSqlPragmaStatementImpl(PRAGMA_STATEMENT)
PsiElement(PRAGMA)('PRAGMA')
AndroidSqlPragmaNameImpl(PRAGMA_NAME)
PsiElement(IDENTIFIER)('foreign_keys')
PsiElement(=)('=')
AndroidSqlPragmaValueImpl(PRAGMA_VALUE)
PsiElement(ON)('ON')
"""
.trimIndent(),
toParseTreeText("PRAGMA foreign_keys=ON"),
)
assertEquals(
"""
FILE
AndroidSqlPragmaStatementImpl(PRAGMA_STATEMENT)
PsiElement(PRAGMA)('PRAGMA')
AndroidSqlPragmaNameImpl(PRAGMA_NAME)
PsiElement(IDENTIFIER)('foreign_keys')
PsiElement(=)('=')
AndroidSqlPragmaValueImpl(PRAGMA_VALUE)
PsiElement(ON)('on')
"""
.trimIndent(),
toParseTreeText("PRAGMA foreign_keys=on"),
)
assertEquals(
"""
FILE
AndroidSqlPragmaStatementImpl(PRAGMA_STATEMENT)
PsiElement(PRAGMA)('PRAGMA')
AndroidSqlPragmaNameImpl(PRAGMA_NAME)
PsiElement(IDENTIFIER)('foreign_keys')
PsiElement(=)('=')
AndroidSqlPragmaValueImpl(PRAGMA_VALUE)
PsiElement(IDENTIFIER)('OFF')
"""
.trimIndent(),
toParseTreeText("PRAGMA foreign_keys=OFF"),
)
assertEquals(
"""
FILE
AndroidSqlPragmaStatementImpl(PRAGMA_STATEMENT)
PsiElement(PRAGMA)('PRAGMA')
AndroidSqlPragmaNameImpl(PRAGMA_NAME)
PsiElement(IDENTIFIER)('foreign_keys')
PsiElement(=)('=')
AndroidSqlPragmaValueImpl(PRAGMA_VALUE)
PsiElement(IDENTIFIER)('off')
"""
.trimIndent(),
toParseTreeText("PRAGMA foreign_keys=off"),
)
assertEquals(
"""
FILE
AndroidSqlPragmaStatementImpl(PRAGMA_STATEMENT)
PsiElement(PRAGMA)('PRAGMA')
AndroidSqlPragmaNameImpl(PRAGMA_NAME)
PsiElement(IDENTIFIER)('foreign_keys')
PsiElement(=)('=')
AndroidSqlPragmaValueImpl(PRAGMA_VALUE)
PsiElement(IDENTIFIER)('yes')
"""
.trimIndent(),
toParseTreeText("PRAGMA foreign_keys=yes"),
)
assertEquals(
"""
FILE
AndroidSqlPragmaStatementImpl(PRAGMA_STATEMENT)
PsiElement(PRAGMA)('PRAGMA')
AndroidSqlPragmaNameImpl(PRAGMA_NAME)
PsiElement(IDENTIFIER)('foreign_keys')
PsiElement(=)('=')
AndroidSqlPragmaValueImpl(PRAGMA_VALUE)
PsiElement(IDENTIFIER)('YES')
"""
.trimIndent(),
toParseTreeText("PRAGMA foreign_keys=YES"),
)
assertEquals(
"""
FILE
AndroidSqlPragmaStatementImpl(PRAGMA_STATEMENT)
PsiElement(PRAGMA)('PRAGMA')
AndroidSqlPragmaNameImpl(PRAGMA_NAME)
PsiElement(IDENTIFIER)('foreign_keys')
PsiElement(=)('=')
AndroidSqlPragmaValueImpl(PRAGMA_VALUE)
PsiElement(NO)('no')
"""
.trimIndent(),
toParseTreeText("PRAGMA foreign_keys=no"),
)
assertEquals(
"""
FILE
AndroidSqlPragmaStatementImpl(PRAGMA_STATEMENT)
PsiElement(PRAGMA)('PRAGMA')
AndroidSqlPragmaNameImpl(PRAGMA_NAME)
PsiElement(IDENTIFIER)('foreign_keys')
PsiElement(=)('=')
AndroidSqlPragmaValueImpl(PRAGMA_VALUE)
PsiElement(NO)('NO')
"""
.trimIndent(),
toParseTreeText("PRAGMA foreign_keys=NO"),
)
assertEquals(
"""
FILE
AndroidSqlPragmaStatementImpl(PRAGMA_STATEMENT)
PsiElement(PRAGMA)('PRAGMA')
AndroidSqlPragmaNameImpl(PRAGMA_NAME)
PsiElement(IDENTIFIER)('foreign_keys')
PsiElement(=)('=')
AndroidSqlPragmaValueImpl(PRAGMA_VALUE)
AndroidSqlBooleanLiteralImpl(BOOLEAN_LITERAL)
PsiElement(TRUE)('true')
"""
.trimIndent(),
toParseTreeText("PRAGMA foreign_keys=true"),
)
assertEquals(
"""
FILE
AndroidSqlPragmaStatementImpl(PRAGMA_STATEMENT)
PsiElement(PRAGMA)('PRAGMA')
AndroidSqlPragmaNameImpl(PRAGMA_NAME)
PsiElement(IDENTIFIER)('foreign_keys')
PsiElement(=)('=')
AndroidSqlPragmaValueImpl(PRAGMA_VALUE)
AndroidSqlBooleanLiteralImpl(BOOLEAN_LITERAL)
PsiElement(TRUE)('TRUE')
"""
.trimIndent(),
toParseTreeText("PRAGMA foreign_keys=TRUE"),
)
assertEquals(
"""
FILE
AndroidSqlPragmaStatementImpl(PRAGMA_STATEMENT)
PsiElement(PRAGMA)('PRAGMA')
AndroidSqlPragmaNameImpl(PRAGMA_NAME)
PsiElement(IDENTIFIER)('foreign_keys')
PsiElement(=)('=')
AndroidSqlPragmaValueImpl(PRAGMA_VALUE)
AndroidSqlBooleanLiteralImpl(BOOLEAN_LITERAL)
PsiElement(FALSE)('false')
"""
.trimIndent(),
toParseTreeText("PRAGMA foreign_keys=false"),
)
assertEquals(
"""
FILE
AndroidSqlPragmaStatementImpl(PRAGMA_STATEMENT)
PsiElement(PRAGMA)('PRAGMA')
AndroidSqlPragmaNameImpl(PRAGMA_NAME)
PsiElement(IDENTIFIER)('foreign_keys')
PsiElement(=)('=')
AndroidSqlPragmaValueImpl(PRAGMA_VALUE)
AndroidSqlBooleanLiteralImpl(BOOLEAN_LITERAL)
PsiElement(FALSE)('FALSE')
"""
.trimIndent(),
toParseTreeText("PRAGMA foreign_keys=FALSE"),
)
assertEquals(
"""
FILE
AndroidSqlPragmaStatementImpl(PRAGMA_STATEMENT)
PsiElement(PRAGMA)('PRAGMA')
AndroidSqlPragmaNameImpl(PRAGMA_NAME)
PsiElement(IDENTIFIER)('data_store_directory')
PsiElement(=)('=')
AndroidSqlPragmaValueImpl(PRAGMA_VALUE)
PsiElement(SINGLE_QUOTE_STRING_LITERAL)(''foo'')
"""
.trimIndent(),
toParseTreeText("PRAGMA data_store_directory='foo'"),
)
assertEquals(
"""
FILE
AndroidSqlPragmaStatementImpl(PRAGMA_STATEMENT)
PsiElement(PRAGMA)('PRAGMA')
AndroidSqlPragmaNameImpl(PRAGMA_NAME)
PsiElement(IDENTIFIER)('encoding')
PsiElement(=)('=')
AndroidSqlPragmaValueImpl(PRAGMA_VALUE)
PsiElement(DOUBLE_QUOTE_STRING_LITERAL)('"UTF-8"')
"""
.trimIndent(),
toParseTreeText("PRAGMA encoding=\"UTF-8\""),
)
assertEquals(
"""
FILE
AndroidSqlPragmaStatementImpl(PRAGMA_STATEMENT)
PsiElement(PRAGMA)('PRAGMA')
AndroidSqlPragmaNameImpl(PRAGMA_NAME)
PsiElement(IDENTIFIER)('foreign_key_check')
PsiElement(()('(')
AndroidSqlPragmaValueImpl(PRAGMA_VALUE)
PsiElement(IDENTIFIER)('my_table')
PsiElement())(')')
"""
.trimIndent(),
toParseTreeText("PRAGMA foreign_key_check(my_table)"),
)
assertEquals(
"""
FILE
AndroidSqlPragmaStatementImpl(PRAGMA_STATEMENT)
PsiElement(PRAGMA)('PRAGMA')
AndroidSqlPragmaNameImpl(PRAGMA_NAME)
PsiElement(IDENTIFIER)('optimize')
PsiElement(=)('=')
AndroidSqlPragmaValueImpl(PRAGMA_VALUE)
AndroidSqlSignedNumberImpl(SIGNED_NUMBER)
PsiElement(NUMERIC_LITERAL)('0xfffe')
"""
.trimIndent(),
toParseTreeText("PRAGMA optimize=0xfffe"),
)
}