FMResultSetTests.m 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. //
  2. // FMResultSetTests.m
  3. // fmdb
  4. //
  5. // Created by Muralidharan,Roshan on 10/6/14.
  6. //
  7. //
  8. #import "FMDBTempDBTests.h"
  9. #import "FMDatabase.h"
  10. #import "FMResultSet.h"
  11. @interface FMResultSetTests : FMDBTempDBTests
  12. @end
  13. @implementation FMResultSetTests
  14. + (void)populateDatabase:(FMDatabase *)db
  15. {
  16. [db executeUpdate:@"create table test (a text, b text, c integer, d double, e double)"];
  17. [db beginTransaction];
  18. int i = 0;
  19. while (i++ < 20) {
  20. [db executeUpdate:@"insert into test (a, b, c, d, e) values (?, ?, ?, ?, ?)" ,
  21. @"hi'",
  22. [NSString stringWithFormat:@"number %d", i],
  23. [NSNumber numberWithInt:i],
  24. [NSDate date],
  25. [NSNumber numberWithFloat:2.2f]];
  26. }
  27. [db commit];
  28. }
  29. - (void)testNextWithError_WithoutError
  30. {
  31. [self.db executeUpdate:@"CREATE TABLE testTable(key INTEGER PRIMARY KEY, value INTEGER)"];
  32. [self.db executeUpdate:@"INSERT INTO testTable (key, value) VALUES (1, 2)"];
  33. [self.db executeUpdate:@"INSERT INTO testTable (key, value) VALUES (2, 4)"];
  34. FMResultSet *resultSet = [self.db executeQuery:@"SELECT * FROM testTable WHERE key=1"];
  35. XCTAssertNotNil(resultSet);
  36. NSError *error;
  37. XCTAssertTrue([resultSet nextWithError:&error]);
  38. XCTAssertNil(error);
  39. XCTAssertFalse([resultSet nextWithError:&error]);
  40. XCTAssertNil(error);
  41. [resultSet close];
  42. }
  43. - (void)testNextWithError_WithBusyError
  44. {
  45. [self.db executeUpdate:@"CREATE TABLE testTable(key INTEGER PRIMARY KEY, value INTEGER)"];
  46. [self.db executeUpdate:@"INSERT INTO testTable (key, value) VALUES (1, 2)"];
  47. [self.db executeUpdate:@"INSERT INTO testTable (key, value) VALUES (2, 4)"];
  48. FMResultSet *resultSet = [self.db executeQuery:@"SELECT * FROM testTable WHERE key=1"];
  49. XCTAssertNotNil(resultSet);
  50. FMDatabase *newDB = [FMDatabase databaseWithPath:self.databasePath];
  51. [newDB open];
  52. [newDB beginTransaction];
  53. NSError *error;
  54. XCTAssertFalse([resultSet nextWithError:&error]);
  55. [newDB commit];
  56. XCTAssertEqual(error.code, SQLITE_BUSY, @"SQLITE_BUSY should be the last error");
  57. [resultSet close];
  58. }
  59. - (void)testNextWithError_WithMisuseError
  60. {
  61. [self.db executeUpdate:@"CREATE TABLE testTable(key INTEGER PRIMARY KEY, value INTEGER)"];
  62. [self.db executeUpdate:@"INSERT INTO testTable (key, value) VALUES (1, 2)"];
  63. [self.db executeUpdate:@"INSERT INTO testTable (key, value) VALUES (2, 4)"];
  64. FMResultSet *resultSet = [self.db executeQuery:@"SELECT * FROM testTable WHERE key=9"];
  65. XCTAssertNotNil(resultSet);
  66. XCTAssertFalse([resultSet next]);
  67. NSError *error;
  68. XCTAssertFalse([resultSet nextWithError:&error]);
  69. XCTAssertEqual(error.code, SQLITE_MISUSE, @"SQLITE_MISUSE should be the last error");
  70. }
  71. @end