Ppeixianzhongupdate 1.0.0
4b030e58创建于 2025年8月19日历史提交
// EXEC: cjc %import-path %L %l %f
// EXEC: ./main
import mysqlclient_ffi.*
import std.unittest.*
import std.unittest.testmacro.*
import std.database.sql.*
import std.time.*
import std.math.*

main(): Int64 {
    let mysqlInfoApi01Test: MysqlInfoApi01Test = MysqlInfoApi01Test()

    mysqlInfoApi01Test.mysqlInfoApiTest001()
    mysqlInfoApi01Test.mysqlInfoApiTest002()
    mysqlInfoApi01Test.mysqlInfoApiTest003()
    mysqlInfoApi01Test.mysqlInfoApiTest004()

    return 0
}

@Test
public class MysqlInfoApi01Test {
    //@TestCase
    func mysqlInfoApiTest001(): Unit {
        // 初始化数据库驱动
        let mysqlDriver: MysqlDriver = MysqlDriver("mysql")

        // 通过connectionString和选项打开数据源
        let mysqlDatasource: MysqlDatasource = mysqlDriver.open(
            "HOST=127.0.0.1;USER=root;PASSWD=123;DB=mysql;PORT=3306;UNIX_SOCKET=;CLIENT_FLAG=0",
            Array<(String, String)>()
        )

        // 返回一个可用的链接
        let mysqlConnection: MysqlConnection = mysqlDatasource.connect()
        let mysqlInfoApi: MysqlInfoApi = MysqlInfoApi(mysqlConnection)
        let retErrno: UInt32 = mysqlInfoApi.mysqlErrno()
        @Assert(0, retErrno)
        let strError: String = mysqlInfoApi.mysqlError()
        @Assert("", strError)
        let strState: String = mysqlInfoApi.mysqlSqlstate()
        @Assert("00000", strState)
        let retCount: UInt32 = mysqlInfoApi.mysqlWarningCount()
        @Assert(0, retCount)
        let strInfo: String = mysqlInfoApi.mysqlInfo()
        @Assert("", strInfo)
        let retInfo: Int32 = mysqlInfoApi.mysqlDumpDebugInfo()
        @Assert(0, retInfo)

        mysqlConnection.close()
    }

    //@TestCase
    func mysqlInfoApiTest002(): Unit {
        // 初始化数据库驱动
        let mysqlDriver: MysqlDriver = MysqlDriver("mysql")

        // 通过connectionString和选项打开数据源
        let mysqlDatasource: MysqlDatasource = mysqlDriver.open(
            "HOST=127.0.0.1;USER=root;PASSWD=123;DB=mysql;PORT=3306;UNIX_SOCKET=;CLIENT_FLAG=0",
            Array<(String, String)>()
        )

        // 返回一个可用的链接
        let mysqlConnection: MysqlConnection = mysqlDatasource.connect()

        // 删除t_test2名称数据表
        let mysqlStatement: MysqlStatement = mysqlConnection.prepareStatement("drop table if exists t_test_float")

        let mysqlInfoApi: MysqlInfoApi = MysqlInfoApi(mysqlConnection)
        let retErrno: UInt32 = mysqlInfoApi.mysqlErrno()
        @Assert(0, retErrno)
        let strError: String = mysqlInfoApi.mysqlError()
        @Assert("", strError)
        let strState: String = mysqlInfoApi.mysqlSqlstate()
        @Assert("00000", strState)
        let retCount: UInt32 = mysqlInfoApi.mysqlWarningCount()
        @Assert(0, retCount)
        let strInfo: String = mysqlInfoApi.mysqlInfo()
        @Assert("", strInfo)
        let retInfo: Int32 = mysqlInfoApi.mysqlDumpDebugInfo()
        @Assert(0, retInfo)

        mysqlStatement.close()

        mysqlConnection.close()
    }

    //@TestCase
    func mysqlInfoApiTest003(): Unit {
        // 初始化数据库驱动
        let mysqlDriver: MysqlDriver = MysqlDriver("mysql")

        // 通过connectionString和选项打开数据源
        let mysqlDatasource: MysqlDatasource = mysqlDriver.open(
            "HOST=127.0.0.1;USER=root;PASSWD=123;DB=mysql;PORT=3306;UNIX_SOCKET=;CLIENT_FLAG=0",
            Array<(String, String)>()
        )

        // 返回一个可用的链接
        let mysqlConnection: MysqlConnection = mysqlDatasource.connect()
        try {
            let mysqlStatement: MysqlStatement = mysqlConnection.prepareStatement("drop")
            mysqlStatement.close()
        } catch (e: SqlException) {
            (e)
        }
        let mysqlInfoApi: MysqlInfoApi = MysqlInfoApi(mysqlConnection)
        let retErrno: UInt32 = mysqlInfoApi.mysqlErrno()
        @Assert(1064, retErrno)
        let strError: String = mysqlInfoApi.mysqlError()
        @Assert("You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1", strError)
        let strState: String = mysqlInfoApi.mysqlSqlstate()
        @Assert("42000", strState)
        let retCount: UInt32 = mysqlInfoApi.mysqlWarningCount()
        @Assert(0, retCount)
        let strInfo: String = mysqlInfoApi.mysqlInfo()
        @Assert("", strInfo)
        let retInfo: Int32 = mysqlInfoApi.mysqlDumpDebugInfo()
        @Assert(0, retInfo)

        mysqlConnection.close()
    }

    //@TestCase
    func mysqlInfoApiTest004(): Unit {
        // 初始化数据库驱动
        let mysqlDriver: MysqlDriver = MysqlDriver("mysql")

        // 通过connectionString和选项打开数据源
        let mysqlDatasource: MysqlDatasource = mysqlDriver.open(
            "HOST=127.0.0.1;USER=root;PASSWD=123;DB=mysql;PORT=3306;UNIX_SOCKET=;CLIENT_FLAG=0",
            Array<(String, String)>()
        )

        // 返回一个可用的链接
        let mysqlConnection: MysqlConnection = mysqlDatasource.connect()

        // 删除t_test2名称数据表
        var mysqlStatement1: MysqlStatement = mysqlConnection.prepareStatement("drop table if exists t_test_float")
        mysqlStatement1.update([])
        mysqlStatement1.close()

        let mysqlInfoApi: MysqlInfoApi = MysqlInfoApi(mysqlConnection)
        let retErrno: UInt32 = mysqlInfoApi.mysqlErrno()
        @Assert(0, retErrno)
        let strError: String = mysqlInfoApi.mysqlError()
        @Assert("", strError)
        let strState: String = mysqlInfoApi.mysqlSqlstate()
        @Assert("00000", strState)
        let retCount: UInt32 = mysqlInfoApi.mysqlWarningCount()
        @Assert(1, retCount)
        let strInfo: String = mysqlInfoApi.mysqlInfo()
        @Assert("", strInfo)
        let retInfo: Int32 = mysqlInfoApi.mysqlDumpDebugInfo()
        @Assert(0, retInfo)

        // 删除t_test2名称数据表
        var mysqlStatement9: MysqlStatement = mysqlConnection.prepareStatement("drop table if exists t_test_float")
        mysqlStatement9.update([])
        mysqlStatement9.close()

        let retErrno2: UInt32 = mysqlInfoApi.mysqlErrno()
        @Assert(0, retErrno2)
        let strError2: String = mysqlInfoApi.mysqlError()
        @Assert("", strError2)
        let strState2: String = mysqlInfoApi.mysqlSqlstate()
        @Assert("00000", strState2)
        let retCount2: UInt32 = mysqlInfoApi.mysqlWarningCount()
        @Assert(1, retCount2)
        let strInfo2: String = mysqlInfoApi.mysqlInfo()
        @Assert("", strInfo2)
        let retInfo2: Int32 = mysqlInfoApi.mysqlDumpDebugInfo()
        @Assert(0, retInfo2)

        mysqlConnection.close()
    }
}