@@ -9,20 +9,13 @@ import XCTest
99@testable import MySQL
1010import Foundation
1111
12- extension QueryDecimalTypeTests {
13- static var allTests : [ ( String , ( QueryDecimalTypeTests ) -> ( ) throws -> Void ) ] {
14- return [
15- ]
16- }
17- }
18-
1912extension Row {
2013 fileprivate struct DecimalRow : Codable , QueryParameter , Equatable {
21- let valueDouble : Decimal
22- let valueText : Decimal
14+ let valueDoubleColumn : Decimal
15+ let valueTextColumn : Decimal
2316 private enum CodingKeys : String , CodingKey {
24- case valueDouble = " value_double "
25- case valueText = " value_text "
17+ case valueDoubleColumn = " value_double_col "
18+ case valueTextColumn = " value_text_col "
2619 }
2720 }
2821}
@@ -46,8 +39,8 @@ final class QueryDecimalTypeTests: XCTestCase, QueryTestType {
4639 let query = """
4740 CREATE TABLE ` \( constants. tableName) ` (
4841 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
49- `value_double ` DOUBLE NOT NULL DEFAULT 0,
50- `value_text ` MEDIUMTEXT,
42+ `value_double_col ` DOUBLE NOT NULL DEFAULT 0,
43+ `value_text_col ` MEDIUMTEXT,
5144 PRIMARY KEY (`id`)
5245 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
5346 """
@@ -56,10 +49,24 @@ final class QueryDecimalTypeTests: XCTestCase, QueryTestType {
5649 }
5750
5851
52+ func testDecimalType( ) throws {
53+ let value = Decimal ( string: " 1.549 " ) !
54+ let row = Row . DecimalRow ( valueDoubleColumn: value, valueTextColumn: value)
55+
56+ try pool. execute { conn in
57+ _ = try conn. query ( " INSERT INTO ?? SET ? " , [ constants. tableName, row] )
58+ }
59+
60+ let rows : [ Row . DecimalRow ] = try pool. execute {
61+ try $0. query ( " SELECT * FROM ?? ORDER BY id ASC " , [ constants. tableName] )
62+ }
63+
64+ XCTAssertEqual ( rows [ 0 ] , row)
65+ }
5966
60- func disabled_testDecimalType ( ) throws {
61- let value = Decimal ( 1.23e100 )
62- let row = Row . DecimalRow ( valueDouble : value, valueText : value)
67+ func testDecimalType_largerValue ( ) throws {
68+ let value = Decimal ( string : " 1.23e100 " ) !
69+ let row = Row . DecimalRow ( valueDoubleColumn : value, valueTextColumn : value)
6370
6471 try pool. execute { conn in
6572 _ = try conn. query ( " INSERT INTO ?? SET ? " , [ constants. tableName, row] )
0 commit comments