|
|
@@ -556,70 +556,6 @@ - (void)testColumnNamesContainingPeriods
|
|
|
[rs close];
|
|
|
}
|
|
|
|
|
|
-- (void)testFormatStringParsing
|
|
|
-{
|
|
|
- XCTAssertTrue([self.db executeUpdate:@"create table t5 (a text, b int, c blob, d text, e text)"]);
|
|
|
- [self.db executeUpdateWithFormat:@"insert into t5 values (%s, %d, %@, %c, %lld)", "text", 42, @"BLOB", 'd', 12345678901234ll];
|
|
|
-
|
|
|
- FMResultSet *rs = [self.db executeQueryWithFormat:@"select * from t5 where a = %s and a = %@ and b = %d", "text", @"text", 42];
|
|
|
- XCTAssertNotNil(rs);
|
|
|
-
|
|
|
- XCTAssertTrue([rs next]);
|
|
|
-
|
|
|
- XCTAssertEqualObjects([rs stringForColumn:@"a"], @"text");
|
|
|
- XCTAssertEqual([rs intForColumn:@"b"], 42);
|
|
|
- XCTAssertEqualObjects([rs stringForColumn:@"c"], @"BLOB");
|
|
|
- XCTAssertEqualObjects([rs stringForColumn:@"d"], @"d");
|
|
|
- XCTAssertEqual([rs longLongIntForColumn:@"e"], 12345678901234ll);
|
|
|
-
|
|
|
- [rs close];
|
|
|
-}
|
|
|
-
|
|
|
-- (void)testFormatStringParsingWithSizePrefixes
|
|
|
-{
|
|
|
- XCTAssertTrue([self.db executeUpdate:@"create table t55 (a text, b int, c float)"]);
|
|
|
- short testShort = -4;
|
|
|
- float testFloat = 5.5;
|
|
|
- [self.db executeUpdateWithFormat:@"insert into t55 values (%c, %hi, %g)", 'a', testShort, testFloat];
|
|
|
-
|
|
|
- unsigned short testUShort = 6;
|
|
|
- [self.db executeUpdateWithFormat:@"insert into t55 values (%c, %hu, %g)", 'a', testUShort, testFloat];
|
|
|
-
|
|
|
-
|
|
|
- FMResultSet *rs = [self.db executeQueryWithFormat:@"select * from t55 where a = %s order by 2", "a"];
|
|
|
- XCTAssertNotNil(rs);
|
|
|
-
|
|
|
- XCTAssertTrue([rs next]);
|
|
|
-
|
|
|
- XCTAssertEqualObjects([rs stringForColumn:@"a"], @"a");
|
|
|
- XCTAssertEqual([rs intForColumn:@"b"], -4);
|
|
|
- XCTAssertEqualObjects([rs stringForColumn:@"c"], @"5.5");
|
|
|
-
|
|
|
-
|
|
|
- XCTAssertTrue([rs next]);
|
|
|
-
|
|
|
- XCTAssertEqualObjects([rs stringForColumn:@"a"], @"a");
|
|
|
- XCTAssertEqual([rs intForColumn:@"b"], 6);
|
|
|
- XCTAssertEqualObjects([rs stringForColumn:@"c"], @"5.5");
|
|
|
-
|
|
|
- [rs close];
|
|
|
-}
|
|
|
-
|
|
|
-- (void)testFormatStringParsingWithNilValue
|
|
|
-{
|
|
|
- XCTAssertTrue([self.db executeUpdate:@"create table tatwhat (a text)"]);
|
|
|
-
|
|
|
- BOOL worked = [self.db executeUpdateWithFormat:@"insert into tatwhat values(%@)", nil];
|
|
|
-
|
|
|
- XCTAssertTrue(worked);
|
|
|
-
|
|
|
- FMResultSet *rs = [self.db executeQueryWithFormat:@"select * from tatwhat"];
|
|
|
- XCTAssertNotNil(rs);
|
|
|
- XCTAssertTrue([rs next]);
|
|
|
- XCTAssertTrue([rs columnIndexIsNull:0]);
|
|
|
-
|
|
|
- XCTAssertFalse([rs next]);
|
|
|
-}
|
|
|
|
|
|
- (void)testUpdateWithErrorAndBindings
|
|
|
{
|
|
|
@@ -1123,49 +1059,6 @@ - (void)testBind {
|
|
|
XCTAssertEqualObjects(insertedValue, retrievedValue, @"values don't match");
|
|
|
}
|
|
|
|
|
|
-- (void)testFormatStrings {
|
|
|
- FMDatabase *db = [[FMDatabase alloc] init];
|
|
|
- XCTAssert([db open], @"open failed");
|
|
|
- XCTAssert([db executeUpdate:@"create table foo (id integer primary key autoincrement, a numeric)"], @"create failed");
|
|
|
-
|
|
|
- BOOL success;
|
|
|
-
|
|
|
- char insertedChar = 'A';
|
|
|
- success = [db executeUpdateWithFormat:@"insert into foo (a) values (%c)", insertedChar];
|
|
|
- XCTAssert(success, @"insert failed");
|
|
|
- const char *retrievedChar = [[db stringForQuery:@"select a from foo where id = ?", @([db lastInsertRowId])] UTF8String];
|
|
|
- XCTAssertEqual(insertedChar, retrievedChar[0], @"values don't match");
|
|
|
-
|
|
|
- const char *insertedString = "baz";
|
|
|
- success = [db executeUpdateWithFormat:@"insert into foo (a) values (%s)", insertedString];
|
|
|
- XCTAssert(success, @"insert failed");
|
|
|
- const char *retrievedString = [[db stringForQuery:@"select a from foo where id = ?", @([db lastInsertRowId])] UTF8String];
|
|
|
- XCTAssert(strcmp(insertedString, retrievedString) == 0, @"values don't match");
|
|
|
-
|
|
|
- int insertedInt = 42;
|
|
|
- success = [db executeUpdateWithFormat:@"insert into foo (a) values (%d)", insertedInt];
|
|
|
- XCTAssert(success, @"insert failed");
|
|
|
- int retrievedInt = [db intForQuery:@"select a from foo where id = ?", @([db lastInsertRowId])];
|
|
|
- XCTAssertEqual(insertedInt, retrievedInt, @"values don't match");
|
|
|
-
|
|
|
- char insertedUnsignedInt = 43;
|
|
|
- success = [db executeUpdateWithFormat:@"insert into foo (a) values (%u)", insertedUnsignedInt];
|
|
|
- XCTAssert(success, @"insert failed");
|
|
|
- char retrievedUnsignedInt = [db intForQuery:@"select a from foo where id = ?", @([db lastInsertRowId])];
|
|
|
- XCTAssertEqual(insertedUnsignedInt, retrievedUnsignedInt, @"values don't match");
|
|
|
-
|
|
|
- float insertedFloat = 44;
|
|
|
- success = [db executeUpdateWithFormat:@"insert into foo (a) values (%f)", insertedFloat];
|
|
|
- XCTAssert(success, @"insert failed");
|
|
|
- float retrievedFloat = [db doubleForQuery:@"select a from foo where id = ?", @([db lastInsertRowId])];
|
|
|
- XCTAssertEqual(insertedFloat, retrievedFloat, @"values don't match");
|
|
|
-
|
|
|
- unsigned long long insertedUnsignedLongLong = 45;
|
|
|
- success = [db executeUpdateWithFormat:@"insert into foo (a) values (%llu)", insertedUnsignedLongLong];
|
|
|
- XCTAssert(success, @"insert failed");
|
|
|
- unsigned long long retrievedUnsignedLongLong = [db longForQuery:@"select a from foo where id = ?", @([db lastInsertRowId])];
|
|
|
- XCTAssertEqual(insertedUnsignedLongLong, retrievedUnsignedLongLong, @"values don't match");
|
|
|
-}
|
|
|
|
|
|
- (void)testStepError {
|
|
|
FMDatabase *db = [[FMDatabase alloc] init];
|