Files
UUVPN/iOS-SwiftUI-Code/GRDB.swift-6.29.3/Tests/GRDBTests/ResultCodeTests.swift
T
2025-01-28 12:28:03 +08:00

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()
}
}
}
}
}