-
Notifications
You must be signed in to change notification settings - Fork 87
Expand file tree
/
Copy pathPredicateTests.swift
More file actions
120 lines (94 loc) · 3.61 KB
/
PredicateTests.swift
File metadata and controls
120 lines (94 loc) · 3.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
//
// PredicateTests.swift
// QueryKit
//
// Created by Kyle Fuller on 19/06/2014.
//
//
import XCTest
@testable import QueryKit
class NSPredicateTests: XCTestCase {
var namePredicate = NSPredicate(format: "name == Kyle")
var agePredicate = NSPredicate(format: "age >= 21")
func testAndPredicate() {
let predicate = namePredicate && agePredicate
XCTAssertEqual(predicate, NSPredicate(format: "name == Kyle AND age >= 21"))
}
func testOrPredicate() {
let predicate = namePredicate || agePredicate
XCTAssertEqual(predicate, NSPredicate(format: "name == Kyle OR age >= 21"))
}
func testNotPredicate() {
let predicate = !namePredicate
XCTAssertEqual(predicate, NSPredicate(format: "NOT name == Kyle"))
}
}
class PredicateTests: XCTestCase {
var attribute:Attribute<Int>!
override func setUp() {
super.setUp()
attribute = Attribute("age")
}
// MARK: Operators
func testEqualityOperator() {
let predicate:Predicate<NSManagedObject> = attribute == 10
XCTAssertEqual(predicate.predicate, NSPredicate(format:"age == 10"))
}
func testEqualityOperatorWithNilRHS() {
let attribute = Attribute<String?>("name")
let predicate: Predicate = attribute == nil
XCTAssertEqual(predicate.predicate.description, "name == <null>")
}
func testInequalityOperator() {
let predicate:Predicate<NSManagedObject> = (attribute != 10)
XCTAssertEqual(predicate.predicate, NSPredicate(format:"age != 10"))
}
func testGreaterThanOperator() {
let predicate:Predicate<NSManagedObject> = (attribute > 10)
XCTAssertEqual(predicate.predicate, NSPredicate(format:"age > 10"))
}
func testGreaterOrEqualThanOperator() {
let predicate:Predicate<NSManagedObject> = (attribute >= 10)
XCTAssertEqual(predicate.predicate, NSPredicate(format:"age >= 10"))
}
func testLessThanOperator() {
let predicate:Predicate<NSManagedObject> = (attribute < 10)
XCTAssertEqual(predicate.predicate, NSPredicate(format:"age < 10"))
}
func testLessOrEqualThanOperator() {
let predicate:Predicate<NSManagedObject> = (attribute <= 10)
XCTAssertEqual(predicate.predicate, NSPredicate(format:"age <= 10"))
}
func testLikeOperator() {
let predicate:Predicate<NSManagedObject> = (attribute ~= 10)
XCTAssertEqual(predicate.predicate, NSPredicate(format:"age LIKE 10"))
}
func testInOperator() {
let predicate:Predicate<NSManagedObject> = (attribute << [5, 10])
XCTAssertEqual(predicate.predicate, NSPredicate(format:"age IN %@", [5, 10]))
}
func testBetweenRangeOperator() {
let predicate:Predicate<NSManagedObject> = attribute << (5..<10)
XCTAssertEqual(predicate.predicate, NSPredicate(format:"age BETWEEN %@", [5, 10]))
}
func testNSObjectEqualityOperator() {
let attribute = Attribute<NSString>("name")
let predicate:Predicate<NSManagedObject> = (attribute == "kyle")
XCTAssertEqual(predicate.predicate, NSPredicate(format:"name == 'kyle'"))
}
// MARK:
var namePredicate = Predicate<NSManagedObject>(predicate: NSPredicate(format: "name == Kyle"))
var agePredicate = Predicate<NSManagedObject>(predicate: NSPredicate(format: "age >= 21"))
func testAndPredicate() {
let predicate = namePredicate && agePredicate
XCTAssertEqual(predicate.predicate, NSPredicate(format: "name == Kyle AND age >= 21"))
}
func testOrPredicate() {
let predicate = namePredicate || agePredicate
XCTAssertEqual(predicate.predicate, NSPredicate(format: "name == Kyle OR age >= 21"))
}
func testNotPredicate() {
let predicate = !namePredicate
XCTAssertEqual(predicate.predicate, NSPredicate(format: "NOT name == Kyle"))
}
}