162 lines
5.4 KiB
Swift
162 lines
5.4 KiB
Swift
import XCTest
|
|
import GRDB
|
|
|
|
import XCTest
|
|
|
|
class ResultCodeTests: GRDBTestCase {
|
|
|
|
func testResultCodeEquatable() {
|
|
XCTAssertEqual(ResultCode(rawValue: 19), .SQLITE_CONSTRAINT)
|
|
XCTAssertEqual(ResultCode(rawValue: 787), .SQLITE_CONSTRAINT_FOREIGNKEY)
|
|
XCTAssertNotEqual(ResultCode.SQLITE_CONSTRAINT, .SQLITE_CONSTRAINT_FOREIGNKEY)
|
|
}
|
|
|
|
func testResultCodeMatch() {
|
|
XCTAssertTrue(ResultCode.SQLITE_CONSTRAINT ~= .SQLITE_CONSTRAINT)
|
|
XCTAssertTrue(ResultCode.SQLITE_CONSTRAINT ~= .SQLITE_CONSTRAINT_FOREIGNKEY)
|
|
XCTAssertTrue(ResultCode.SQLITE_CONSTRAINT_FOREIGNKEY ~= .SQLITE_CONSTRAINT_FOREIGNKEY)
|
|
XCTAssertFalse(ResultCode.SQLITE_CONSTRAINT_FOREIGNKEY ~= .SQLITE_CONSTRAINT)
|
|
XCTAssertFalse(ResultCode.SQLITE_TOOBIG ~= .SQLITE_CONSTRAINT)
|
|
}
|
|
|
|
func testResultCodeSwitch() {
|
|
switch ResultCode.SQLITE_CONSTRAINT {
|
|
case ResultCode.SQLITE_CONSTRAINT_FOREIGNKEY: XCTFail()
|
|
case ResultCode.SQLITE_CONSTRAINT: break
|
|
default: XCTFail()
|
|
}
|
|
|
|
switch ResultCode.SQLITE_CONSTRAINT_FOREIGNKEY {
|
|
case ResultCode.SQLITE_CONSTRAINT_FOREIGNKEY: break
|
|
case ResultCode.SQLITE_CONSTRAINT: XCTFail()
|
|
default: XCTFail()
|
|
}
|
|
|
|
switch ResultCode.SQLITE_CONSTRAINT_CHECK {
|
|
case ResultCode.SQLITE_CONSTRAINT_FOREIGNKEY: XCTFail()
|
|
case ResultCode.SQLITE_CONSTRAINT: break
|
|
default: XCTFail()
|
|
}
|
|
|
|
switch ResultCode.SQLITE_TOOBIG {
|
|
case ResultCode.SQLITE_CONSTRAINT_FOREIGNKEY: XCTFail()
|
|
case ResultCode.SQLITE_CONSTRAINT: XCTFail()
|
|
default: break
|
|
}
|
|
}
|
|
|
|
func testCatchResultCode() throws {
|
|
do {
|
|
do {
|
|
throw DatabaseError(resultCode: .SQLITE_ERROR)
|
|
} catch DatabaseError.SQLITE_CONSTRAINT_FOREIGNKEY {
|
|
XCTFail()
|
|
} catch DatabaseError.SQLITE_CONSTRAINT {
|
|
XCTFail()
|
|
} catch DatabaseError.SQLITE_OK {
|
|
XCTFail()
|
|
} catch {
|
|
// Success
|
|
}
|
|
|
|
do {
|
|
throw DatabaseError(resultCode: .SQLITE_CONSTRAINT)
|
|
} catch DatabaseError.SQLITE_CONSTRAINT_FOREIGNKEY {
|
|
XCTFail()
|
|
} catch DatabaseError.SQLITE_CONSTRAINT {
|
|
// Success
|
|
} catch DatabaseError.SQLITE_OK {
|
|
XCTFail()
|
|
} catch {
|
|
XCTFail()
|
|
}
|
|
|
|
do {
|
|
throw DatabaseError(resultCode: .SQLITE_CONSTRAINT_FOREIGNKEY)
|
|
} catch DatabaseError.SQLITE_CONSTRAINT_FOREIGNKEY {
|
|
// Success
|
|
} catch DatabaseError.SQLITE_CONSTRAINT {
|
|
XCTFail()
|
|
} catch DatabaseError.SQLITE_OK {
|
|
XCTFail()
|
|
} catch {
|
|
XCTFail()
|
|
}
|
|
|
|
do {
|
|
throw DatabaseError(resultCode: .SQLITE_CONSTRAINT_CHECK)
|
|
} catch DatabaseError.SQLITE_CONSTRAINT_FOREIGNKEY {
|
|
XCTFail()
|
|
} catch DatabaseError.SQLITE_CONSTRAINT {
|
|
// Success
|
|
} catch DatabaseError.SQLITE_OK {
|
|
XCTFail()
|
|
} catch {
|
|
XCTFail()
|
|
}
|
|
}
|
|
|
|
do {
|
|
do {
|
|
throw DatabaseError(resultCode: .SQLITE_ERROR)
|
|
} catch let error as DatabaseError {
|
|
switch error {
|
|
case DatabaseError.SQLITE_CONSTRAINT_FOREIGNKEY:
|
|
XCTFail()
|
|
case DatabaseError.SQLITE_CONSTRAINT:
|
|
XCTFail()
|
|
case DatabaseError.SQLITE_OK:
|
|
XCTFail()
|
|
default:
|
|
break // Success
|
|
}
|
|
}
|
|
|
|
do {
|
|
throw DatabaseError(resultCode: .SQLITE_CONSTRAINT)
|
|
} catch let error as DatabaseError {
|
|
switch error {
|
|
case DatabaseError.SQLITE_CONSTRAINT_FOREIGNKEY:
|
|
XCTFail()
|
|
case DatabaseError.SQLITE_CONSTRAINT:
|
|
break // Success
|
|
case DatabaseError.SQLITE_OK:
|
|
XCTFail()
|
|
default:
|
|
XCTFail()
|
|
}
|
|
}
|
|
|
|
do {
|
|
throw DatabaseError(resultCode: .SQLITE_CONSTRAINT_FOREIGNKEY)
|
|
} catch let error as DatabaseError {
|
|
switch error {
|
|
case DatabaseError.SQLITE_CONSTRAINT_FOREIGNKEY:
|
|
break // Success
|
|
case DatabaseError.SQLITE_CONSTRAINT:
|
|
XCTFail()
|
|
case DatabaseError.SQLITE_OK:
|
|
XCTFail()
|
|
default:
|
|
XCTFail()
|
|
}
|
|
}
|
|
|
|
do {
|
|
throw DatabaseError(resultCode: .SQLITE_CONSTRAINT_CHECK)
|
|
} catch let error as DatabaseError {
|
|
switch error {
|
|
case DatabaseError.SQLITE_CONSTRAINT_FOREIGNKEY:
|
|
XCTFail()
|
|
case DatabaseError.SQLITE_CONSTRAINT:
|
|
break // Success
|
|
case DatabaseError.SQLITE_OK:
|
|
XCTFail()
|
|
default:
|
|
XCTFail()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|