amplify-swift/AmplifyPlugins/Core/AWSPluginsCoreTests/Query/QueryPredicateEvaluateTests...

158 lines
5.2 KiB
Swift

//
// Copyright Amazon.com Inc. or its affiliates.
// All Rights Reserved.
//
// SPDX-License-Identifier: Apache-2.0
//
import Foundation
import XCTest
@testable import Amplify
@testable import AmplifyTestCommon
class QueryPredicateEvaluateTests: XCTestCase {
override func setUp() {
ModelRegistry.register(modelType: QPredGen.self)
}
func testMultiGroupAndPlusOr() throws {
let predicate = (QPredGen.keys.myBool.eq(true) && QPredGen.keys.name.eq("NotMatch")
&& QPredGen.keys.myString.eq("NotMatch"))
|| (QPredGen.keys.myInt.gt(1) && QPredGen.keys.myInt.le(10))
|| (QPredGen.keys.myDouble.gt(1) && QPredGen.keys.myDouble.le(10))
var instance = QPredGen(name: "test")
instance.myBool = true
instance.myInt = 2
instance.myDouble = 5
let evaluation = try predicate.evaluate(target: instance.eraseToAnyModel().instance)
XCTAssert(evaluation)
}
func testMultiAndPlusOr() throws {
let predicate = (QPredGen.keys.name.eq("test") && QPredGen.keys.myString.eq("NotMatch"))
|| QPredGen.keys.myInt.eq(2)
var instance = QPredGen(name: "test")
instance.myString = "doe"
instance.myInt = 2
let evaluation = try predicate.evaluate(target: instance.eraseToAnyModel().instance)
XCTAssert(evaluation)
}
func testOrPlusMultiAnd() throws {
let predicate = QPredGen.keys.myInt.eq(2) ||
(QPredGen.keys.myBool.eq(true) && QPredGen.keys.name.eq("NotMatch")
|| QPredGen.keys.myString.eq("NotMatch"))
var instance = QPredGen(name: "test")
instance.myBool = true
instance.myInt = 2
let evaluation = try predicate.evaluate(target: instance.eraseToAnyModel().instance)
XCTAssert(evaluation)
}
func testMultiOrPlusAnd() throws {
let predicate = (QPredGen.keys.myBool.eq(true) || QPredGen.keys.myString.eq("NotMatch"))
&& QPredGen.keys.myInt.eq(3)
var instance = QPredGen(name: "test")
instance.myBool = true
instance.myString = "test"
instance.myInt = 2
let evaluation = try predicate.evaluate(target: instance.eraseToAnyModel().instance)
XCTAssertFalse(evaluation)
}
func testBoolorStringWithAllAnd_false() throws {
let predicate = (QPredGen.keys.myBool.eq(true) && QPredGen.keys.name.eq("test"))
&& QPredGen.keys.myInt.eq(3)
var instance = QPredGen(name: "test")
instance.myBool = true
instance.myInt = 2
let evaluation = try predicate.evaluate(target: instance.eraseToAnyModel().instance)
XCTAssertFalse(evaluation)
}
func testBoolorStringWithAllAnd_true() throws {
let predicate = (QPredGen.keys.myBool.eq(true) && QPredGen.keys.name.eq("test"))
&& QPredGen.keys.myInt.eq(2)
var instance = QPredGen(name: "test")
instance.myBool = true
instance.myInt = 2
let evaluation = try predicate.evaluate(target: instance.eraseToAnyModel().instance)
XCTAssert(evaluation)
}
func testBoolorStringWithAllOr_true() throws {
let predicate = (QPredGen.keys.myBool.eq(false) || QPredGen.keys.myString.eq("NotMatch"))
|| QPredGen.keys.myInt.eq(2)
var instance = QPredGen(name: "test")
instance.myBool = true
instance.myString = "test"
instance.myInt = 2
let evaluation = try predicate.evaluate(target: instance.eraseToAnyModel().instance)
XCTAssert(evaluation)
}
func testBoolorStringWithAllOr_false() throws {
let predicate = (QPredGen.keys.myBool.eq(false) || QPredGen.keys.myString.eq("NotMatch"))
|| QPredGen.keys.myInt.eq(3)
var instance = QPredGen(name: "test")
instance.myBool = true
instance.myString = "test"
instance.myInt = 2
let evaluation = try predicate.evaluate(target: instance.eraseToAnyModel().instance)
XCTAssertFalse(evaluation)
}
func testBetweenIntStart() throws {
let predicate = QPredGen.keys.myInt.between(start: 1, end: 10)
var instance = QPredGen(name: "test")
instance.myInt = 1
let evaluation = try predicate.evaluate(target: instance.eraseToAnyModel().instance)
XCTAssert(evaluation)
}
func testBetweenIntBeyondEnd() throws {
let predicate = QPredGen.keys.myInt.between(start: 1, end: 10)
var instance = QPredGen(name: "test")
instance.myInt = 11
let evaluation = try predicate.evaluate(target: instance.eraseToAnyModel().instance)
XCTAssertFalse(evaluation)
}
func testBetweenIntEnd() throws {
let predicate = QPredGen.keys.myInt.between(start: 1, end: 10)
var instance = QPredGen(name: "test")
instance.myInt = 10
let evaluation = try predicate.evaluate(target: instance.eraseToAnyModel().instance)
XCTAssert(evaluation)
}
func testConstantall() throws {
let predicate = QueryPredicateConstant.all
let instance = QPredGen(name: "test")
let evaluation = try predicate.evaluate(target: instance.eraseToAnyModel().instance)
XCTAssert(evaluation)
}
}