diff options
author | August Mueller <gus@flyingmeat.com> | 2014-10-20 01:30:35 +0400 |
---|---|---|
committer | August Mueller <gus@flyingmeat.com> | 2014-10-20 01:30:35 +0400 |
commit | aa8fd46a6c0452447b3b1edfb27531029ddba63c (patch) | |
tree | ae7005356d0261f3d6d7c6d6239c6622abebe9f1 /Tests | |
parent | 7b9b8407153615cdfa4a4d5ced875dd2d294e3dc (diff) | |
parent | 25f34a14f4bb70375507c1af97b90f0b362a59cb (diff) |
Merge branch 'FMResultSet_Next_Error_Handling' of git://github.com/rosh89/fmdb into rosh89-FMResultSet_Next_Error_Handling
Diffstat (limited to 'Tests')
-rw-r--r-- | Tests/FMResultSetTests.m | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/Tests/FMResultSetTests.m b/Tests/FMResultSetTests.m new file mode 100644 index 0000000..b62eea3 --- /dev/null +++ b/Tests/FMResultSetTests.m @@ -0,0 +1,91 @@ +// +// FMResultSetTests.m +// fmdb +// +// Created by Muralidharan,Roshan on 10/6/14. +// +// + +#import "FMDBTempDBTests.h" +#import "FMDatabase.h" +#import "FMResultSet.h" + +@interface FMResultSetTests : FMDBTempDBTests + +@end + +@implementation FMResultSetTests + ++ (void)populateDatabase:(FMDatabase *)db +{ + [db executeUpdate:@"create table test (a text, b text, c integer, d double, e double)"]; + + [db beginTransaction]; + int i = 0; + while (i++ < 20) { + [db executeUpdate:@"insert into test (a, b, c, d, e) values (?, ?, ?, ?, ?)" , + @"hi'", + [NSString stringWithFormat:@"number %d", i], + [NSNumber numberWithInt:i], + [NSDate date], + [NSNumber numberWithFloat:2.2f]]; + } + [db commit]; +} + +- (void)testNextWithError_WithoutError +{ + [self.db executeUpdate:@"CREATE TABLE testTable(key INTEGER PRIMARY KEY, value INTEGER)"]; + [self.db executeUpdate:@"INSERT INTO testTable (key, value) VALUES (1, 2)"]; + [self.db executeUpdate:@"INSERT INTO testTable (key, value) VALUES (2, 4)"]; + + FMResultSet *resultSet = [self.db executeQuery:@"SELECT * FROM testTable WHERE key=1"]; + XCTAssertNotNil(resultSet); + NSError *error; + XCTAssertTrue([resultSet nextWithError:&error]); + XCTAssertNil(error); + + XCTAssertFalse([resultSet nextWithError:&error]); + XCTAssertNil(error); + + [resultSet close]; +} + +- (void)testNextWithError_WithBusyError +{ + [self.db executeUpdate:@"CREATE TABLE testTable(key INTEGER PRIMARY KEY, value INTEGER)"]; + [self.db executeUpdate:@"INSERT INTO testTable (key, value) VALUES (1, 2)"]; + [self.db executeUpdate:@"INSERT INTO testTable (key, value) VALUES (2, 4)"]; + + FMResultSet *resultSet = [self.db executeQuery:@"SELECT * FROM testTable WHERE key=1"]; + XCTAssertNotNil(resultSet); + + FMDatabase *newDB = [FMDatabase databaseWithPath:self.databasePath]; + [newDB open]; + + [newDB beginTransaction]; + NSError *error; + XCTAssertFalse([resultSet nextWithError:&error]); + [newDB commit]; + + + XCTAssertEqual(error.code, SQLITE_BUSY, @"SQLITE_BUSY should be the last error"); + [resultSet close]; +} + +- (void)testNextWithError_WithMisuseError +{ + [self.db executeUpdate:@"CREATE TABLE testTable(key INTEGER PRIMARY KEY, value INTEGER)"]; + [self.db executeUpdate:@"INSERT INTO testTable (key, value) VALUES (1, 2)"]; + [self.db executeUpdate:@"INSERT INTO testTable (key, value) VALUES (2, 4)"]; + + FMResultSet *resultSet = [self.db executeQuery:@"SELECT * FROM testTable WHERE key=9"]; + XCTAssertNotNil(resultSet); + XCTAssertFalse([resultSet next]); + NSError *error; + XCTAssertFalse([resultSet nextWithError:&error]); + + XCTAssertEqual(error.code, SQLITE_MISUSE, @"SQLITE_MISUSE should be the last error"); +} + +@end |