158 lines
5.2 KiB
Swift
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)
|
|
}
|
|
}
|