Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ccgus/fmdb.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/Tests
diff options
context:
space:
mode:
authorAugust Mueller <gus@flyingmeat.com>2014-10-20 01:30:35 +0400
committerAugust Mueller <gus@flyingmeat.com>2014-10-20 01:30:35 +0400
commitaa8fd46a6c0452447b3b1edfb27531029ddba63c (patch)
treeae7005356d0261f3d6d7c6d6239c6622abebe9f1 /Tests
parent7b9b8407153615cdfa4a4d5ced875dd2d294e3dc (diff)
parent25f34a14f4bb70375507c1af97b90f0b362a59cb (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.m91
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