Ppeixianzhong054.3
d6312e48创建于 2024年7月16日历史提交
// 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.*

main(): Int64 {
    let mysqlDatasourceTest: MysqlDatasourceTest = MysqlDatasourceTest()

    mysqlDatasourceTest.mysqlDatasourceTest01()
    mysqlDatasourceTest.mysqlDatasourceTest02()
    mysqlDatasourceTest.mysqlDatasourceTest03()

    return 0
}

@Test
public class MysqlDatasourceTest {
    @TestCase
    public func mysqlDatasourceTest01(): 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)>()
        )
        mysqlDatasource.setOption("1111", "222222")
        mysqlDatasource.setOption("333", "4444")
        mysqlDatasource.close()
        @Assert(false, mysqlDatasource.isClosed())
    }

    @TestCase
    public func mysqlDatasourceTest02(): 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)>()
        )

        mysqlDatasource.setOption(MysqlOption.MYSQL_OPT_CONNECT_TIMEOUT, UInt32(100000))
        mysqlDatasource.setOption(MysqlOption.MYSQL_OPT_GET_SERVER_PUBLIC_KEY, true)
        mysqlDatasource.setOption(MysqlOption.MYSQL_OPT_GET_SERVER_PUBLIC_KEY, false)
        mysqlDatasource.setOption(MysqlOption.MYSQL_OPT_MAX_ALLOWED_PACKET, UInt64(100000000000000000))
        mysqlDatasource.setOption(MysqlOption.MYSQL_OPT_CONNECT_ATTR_DELETE, "time")
        mysqlDatasource.close()
        @Assert(false, mysqlDatasource.isClosed())
    }

    @TestCase
    public func mysqlDatasourceTest03(): Unit {
        let mysqlDriver: MysqlDriver = MysqlDriver("mysql")

        // 通过connectionString和选项打开数据源
        let mysqlDatasource: MysqlDatasource = mysqlDriver.open(
            "HOST=127.0.0.1;USER=wwww;PASSWD=1122222;DB=sssssss;PORT=1;UNIX_SOCKET=;CLIENT_FLAG=0",
            Array<(String, String)>()
        )
        try {
            mysqlDatasource.connect()
            @Assert(0, 1)
        } catch (e: SqlException) {
            @Assert(true, e.message.contains("Connect Failed!"))
        }
    }
}