fun testPragmas()

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"),
    )
  }