 				print(e.flatMap({ (a:Any?) -> Any? in
 					return a!
 				}))
+                
+                XCTAssertEqual(e[0] as? String, "varchar 20 string 👻")
+                XCTAssertEqual(e[1] as? Int8, 1)
+                XCTAssertEqual(UTF8Encoding.encode(e[2] as! [UInt8]), "text string")
+                XCTAssertEqual(e[3] as? String, "2015-10-21")
+                XCTAssertEqual(e[4] as? Int16, 32767)
+                XCTAssertEqual(e[5] as? Int32, 8388607)
+                XCTAssertEqual(e[6] as? Int32, 2147483647)
+                XCTAssertEqual(e[7] as? Int64, 9223372036854775807)
+                XCTAssertEqual(e[8] as? UInt64, 18446744073709551615 as UInt64)
+                XCTAssertEqual(e[9] as? Float, 1.1)
+                XCTAssertEqual(e[10] as? Double, 1.1)
+                XCTAssertEqual(e[11] as? String, "1.10")
+                XCTAssertEqual(e[12] as? String, "2015-10-21 12:00:00")
+                XCTAssertEqual(e[13] as? String, "2015-10-21 12:00:00")
+                XCTAssertEqual(e[14] as? String, "03:14:07")
+                XCTAssertEqual(e[15] as? String, "2015")
+                XCTAssertEqual(e[16] as? String, "K")
+                XCTAssertEqual(UTF8Encoding.encode(e[17] as! [UInt8]), "BLOB DATA")
+                XCTAssertEqual(UTF8Encoding.encode(e[18] as! [UInt8]), "tiny text string")
+                XCTAssertEqual(UTF8Encoding.encode(e[19] as! [UInt8]), "BLOB DATA")
+                XCTAssertEqual(UTF8Encoding.encode(e[20] as! [UInt8]), "BLOB DATA")
+                XCTAssertEqual(UTF8Encoding.encode(e[21] as! [UInt8]), "medium text string")
+                XCTAssertEqual(UTF8Encoding.encode(e[22] as! [UInt8]), "BLOB DATA")
+                XCTAssertEqual(UTF8Encoding.encode(e[23] as! [UInt8]), "long text string")
+                XCTAssertEqual(e[24] as? String, "1")
+                XCTAssertEqual(e[25] as? String, "2")
+                XCTAssertEqual(e[26] as? Int8, 1)
+                XCTAssertEqual(e[27] as? String, "1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
+                XCTAssertEqual(e[28] as? String, "1")
 			}
 			XCTAssert(ok, stmt1.errorMessage())
 			

//

import XCTest
@testable import MySQL

let HOST = "127.0.0.1"

            XCTAssertEqual(row[5] as? String, "-3.3")
        }
    }

    /*
    try dbManager.query("CREATE TABLE IF NOT EXISTS `all_data_types` (`char` CHAR( 10 ),`varchar` VARCHAR( 20 ),`tinytext` TINYTEXT,`mediumtext` MEDIUMTEXT,`text` TEXT,`longtext` LONGTEXT,"
    + "`tinyint` TINYINT,`utinyint` TINYINT UNSIGNED,`smallint` SMALLINT,`usmallint` SMALLINT UNSIGNED,`mediumint` MEDIUMINT,`umediumint` MEDIUMINT UNSIGNED,"
    + "`int` INT,`uint` INT UNSIGNED,`bigint` BIGINT,`ubigint` BIGINT UNSIGNED,"
    + "`float` FLOAT( 10, 2 ),`double` DOUBLE,`decimal` DECIMAL( 10, 2 ),"
    + "`date` DATE,`datetime` DATETIME,`timestamp` TIMESTAMP,`time` TIME,`year` YEAR,"
    + "`tinyblob` TINYBLOB,`mediumblob` MEDIUMBLOB,`blob` BLOB,`longblob` LONGBLOB,"
    + "`enum` ENUM( '1', '2', '3' ),`set` SET( '1', '2', '3' ),`bool` BOOL,"
    + "`binary` BINARY( 20 ),`varbinary` VARBINARY( 20 ) )")
    
    try dbManager.query("DELETE FROM all_data_types")
    
    try dbManager.query("INSERT INTO all_data_types (`char`,`varchar`,`tinytext`,`mediumtext`,`text`,`longtext`,"
    + "`tinyint`,`utinyint`,`smallint`,`usmallint`,`mediumint`,`umediumint`,"
    + "`int`,`uint`,`bigint`,`ubigint`,"
    + "`float`, `double`, `decimal`,"
    + "`date`, `datetime`, `timestamp`, `time`,`year`,"
    + "`tinyblob`, `mediumblob`, `blob`,`longblob`,"
    + "`enum`,`set`,`bool`,"
    + "`binary`,`varbinary` ) VALUES ("
    + "'a','abc','tiny text','medium text','text','long text',"
    + "-1, 1, -2, 2, -3, 3,"
    + "-4, 4, -5, 5,"
    + "1.1, 2.2, 123,"
    + "'2015-10-21','2015-10-21 11:22:33','2015-10-21 11:22:33','11:22:33','2016',"
    + "'abc','abc','abc','abc',"
    + "'1','2',true,"
    + "'1','2')")
    try dbManager.query("SELECT * FROM all_data_types LIMIT 1")
    let results = try dbManager.storeResults()
    defer { results.close() }
    while let row = results.next() {
    print(row)
    }
    
    try dbManager.query("DELETE FROM all_data_types")
    
    
    let stmt1 = MySQLStmt(dbManager.db)
    defer { stmt1.close() }
    let prepRes = stmt1.prepare("INSERT INTO all_data_types VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)")
    //        print(prepRes)
    stmt1.bindParam("a")
    stmt1.bindParam("abc")
    stmt1.bindParam("tiny text")
    stmt1.bindParam("medium text")
    stmt1.bindParam("text")
    stmt1.bindParam("long text")
    stmt1.bindParam(-1)
    stmt1.bindParam(1)
    stmt1.bindParam(-2)
    stmt1.bindParam(2)
    stmt1.bindParam(-3)
    stmt1.bindParam(3)
    stmt1.bindParam(-4)
    stmt1.bindParam(4)
    stmt1.bindParam(-5)
    stmt1.bindParam(5)
    stmt1.bindParam(1.1)
    stmt1.bindParam(2.2)
    stmt1.bindParam(123)
    stmt1.bindParam("2015-10-21")
    stmt1.bindParam("2015-10-21 11:22:33")
    stmt1.bindParam("2015-10-21 11:22:33")
    stmt1.bindParam("11:22:33")
    stmt1.bindParam("2016")
    
    stmt1.bindParam("tinyblob👻")
    stmt1.bindParam("mediumblob")
    stmt1.bindParam("blob")
    stmt1.bindParam("longblob")
    //        "tinyblob".withCString { stmt1.bindParam($0, length: 8) }
    //        "mediumblob".withCString { stmt1.bindParam($0, length: 10) }
    //        "blob".withCString { stmt1.bindParam($0, length: 4) }
    //        "longblob".withCString { stmt1.bindParam($0, length: 8) }
    stmt1.bindParam("1")
    stmt1.bindParam("2")
    stmt1.bindParam(1)
    stmt1.bindParam("1")
    stmt1.bindParam("2")
    let execRes = stmt1.execute()
    //        print(execRes)
    let stmt2 = MySQLStmt(dbManager.db)
    defer { stmt2.close() }
    //        let prepRes2 = stmt2.prepare("SELECT `text`, 'blob' FROM all_data_types")
    let prepRes2 = stmt2.prepare("SELECT * FROM all_data_types")
    //        print(prepRes2)
    let execRes2 = stmt2.execute()
    let results2 = stmt2.results()
    defer { results2.close() }
    results2.forEachRow { row in
    //            print("text", UTF8Encoding.encode(row[0] as! [UInt8]))
    //            print("blob", row[1] as! String)
    
    print("char", row[0] as! String)
    print("varchar", row[1] as! String)
    print("tinytext", UTF8Encoding.encode(row[2] as! [UInt8]))
    print("mediumtext", UTF8Encoding.encode(row[3] as! [UInt8]))
    print("text", UTF8Encoding.encode(row[4] as! [UInt8]))
    print("longtext", UTF8Encoding.encode(row[5] as! [UInt8]))
    print("tinyint", row[6] as! Int8)
    print("utinyint", row[7] as! UInt8)
    print("smallint", row[8] as! Int16)
    print("usmallint", row[9] as! UInt16)
    print("mediumint", row[10] as! Int32)
    print("umediumint", row[11] as! UInt32)
    print("int", row[12] as! Int32)
    print("uint", row[13] as! UInt32)
    print("bigint", row[14] as! Int64)
    print("ubigint", row[15] as! UInt64)
    print("float", row[16] as! Float)
    print("double", row[17] as! Double)
    print("decimal", row[18] as! String)
    print("date", row[19] as! String)
    print("datetime", row[20] as! String)
    print("timestamp", row[21] as! String)
    print("time", row[22] as! String)
    print("year", row[23] as! String)
    print("tinyblob", UTF8Encoding.encode(row[24] as! [UInt8]))
    print("mediumblob", UTF8Encoding.encode(row[25] as! [UInt8]))
    print("blob", UTF8Encoding.encode(row[26] as! [UInt8]))
    print("longblob", UTF8Encoding.encode(row[27] as! [UInt8]))
    print("enum", row[28] as! String)
    print("set", row[29] as! String)
    print("bool", row[30] as! Int8)
    print("binary", row[31] as! String)
    print("varbinary", row[32] as! String)
    }
*/
}


