@@ -2,87 +2,95 @@ import Foundation
2
2
import XCTest
3
3
4
4
private struct Message : Hashable {
5
- let text : String
6
- let priority : Int
7
-
8
- var hashValue : Int {
9
- return text. hashValue
10
- }
11
-
12
- static func == ( lhs: Message , rhs: Message ) -> Bool {
13
- return lhs. text == rhs. text
14
- }
15
-
16
- static func < ( m1: Message , m2: Message ) -> Bool {
17
- return m1. priority < m2. priority
18
- }
5
+ let text : String
6
+ let priority : Int
7
+
8
+ var hashValue : Int {
9
+ return text. hashValue
10
+ }
11
+
12
+ static func == ( lhs: Message , rhs: Message ) -> Bool {
13
+ return lhs. text == rhs. text
14
+ }
15
+
16
+ static func < ( m1: Message , m2: Message ) -> Bool {
17
+ return m1. priority < m2. priority
18
+ }
19
19
}
20
20
21
21
class HashedHeapTest : XCTestCase {
22
- func testEmpty( ) {
23
- var queue = HashedHeap < Message > ( sort: < )
24
- XCTAssertTrue ( queue. isEmpty)
25
- XCTAssertEqual ( queue. count, 0 )
26
- XCTAssertNil ( queue. peek ( ) )
27
- XCTAssertNil ( queue. remove ( ) )
28
- }
29
-
30
- func testOneElement( ) {
31
- var queue = HashedHeap < Message > ( sort: < )
32
-
33
- queue. insert ( Message ( text: " hello " , priority: 100 ) )
34
- XCTAssertFalse ( queue. isEmpty)
35
- XCTAssertEqual ( queue. count, 1 )
36
- XCTAssertEqual ( queue. peek ( ) !. priority, 100 )
37
-
38
- let result = queue. remove ( )
39
- XCTAssertEqual ( result!. priority, 100 )
40
- XCTAssertTrue ( queue. isEmpty)
41
- XCTAssertEqual ( queue. count, 0 )
42
- XCTAssertNil ( queue. peek ( ) )
43
- }
44
-
45
- func testTwoElementsInOrder( ) {
46
- var queue = HashedHeap < Message > ( sort: < )
47
-
48
- queue. insert ( Message ( text: " hello " , priority: 100 ) )
49
- queue. insert ( Message ( text: " world " , priority: 200 ) )
50
- XCTAssertFalse ( queue. isEmpty)
51
- XCTAssertEqual ( queue. count, 2 )
52
- XCTAssertEqual ( queue. peek ( ) !. priority, 100 )
53
-
54
- let result1 = queue. remove ( )
55
- XCTAssertEqual ( result1!. priority, 100 )
56
- XCTAssertFalse ( queue. isEmpty)
57
- XCTAssertEqual ( queue. count, 1 )
58
- XCTAssertEqual ( queue. peek ( ) !. priority, 200 )
59
-
60
- let result2 = queue. remove ( )
61
- XCTAssertEqual ( result2!. priority, 200 )
62
- XCTAssertTrue ( queue. isEmpty)
63
- XCTAssertEqual ( queue. count, 0 )
64
- XCTAssertNil ( queue. peek ( ) )
65
- }
66
-
67
- func testTwoElementsOutOfOrder( ) {
68
- var queue = HashedHeap < Message > ( sort: < )
69
-
70
- queue. insert ( Message ( text: " world " , priority: 200 ) )
71
- queue. insert ( Message ( text: " hello " , priority: 100 ) )
72
- XCTAssertFalse ( queue. isEmpty)
73
- XCTAssertEqual ( queue. count, 2 )
74
- XCTAssertEqual ( queue. peek ( ) !. priority, 100 )
75
-
76
- let result1 = queue. remove ( )
77
- XCTAssertEqual ( result1!. priority, 100 )
78
- XCTAssertFalse ( queue. isEmpty)
79
- XCTAssertEqual ( queue. count, 1 )
80
- XCTAssertEqual ( queue. peek ( ) !. priority, 200 )
81
-
82
- let result2 = queue. remove ( )
83
- XCTAssertEqual ( result2!. priority, 200 )
84
- XCTAssertTrue ( queue. isEmpty)
85
- XCTAssertEqual ( queue. count, 0 )
86
- XCTAssertNil ( queue. peek ( ) )
87
- }
22
+ override func setUp( ) {
23
+ super. setUp ( )
24
+ // last checked with Xcode 9.0b4
25
+ #if swift(>=4.0)
26
+ print ( " Hello, Swift 4! " )
27
+ #endif
28
+ }
29
+
30
+ func testEmpty( ) {
31
+ var queue = HashedHeap < Message > ( sort: < )
32
+ XCTAssertTrue ( queue. isEmpty)
33
+ XCTAssertEqual ( queue. count, 0 )
34
+ XCTAssertNil ( queue. peek ( ) )
35
+ XCTAssertNil ( queue. remove ( ) )
36
+ }
37
+
38
+ func testOneElement( ) {
39
+ var queue = HashedHeap < Message > ( sort: < )
40
+
41
+ queue. insert ( Message ( text: " hello " , priority: 100 ) )
42
+ XCTAssertFalse ( queue. isEmpty)
43
+ XCTAssertEqual ( queue. count, 1 )
44
+ XCTAssertEqual ( queue. peek ( ) !. priority, 100 )
45
+
46
+ let result = queue. remove ( )
47
+ XCTAssertEqual ( result!. priority, 100 )
48
+ XCTAssertTrue ( queue. isEmpty)
49
+ XCTAssertEqual ( queue. count, 0 )
50
+ XCTAssertNil ( queue. peek ( ) )
51
+ }
52
+
53
+ func testTwoElementsInOrder( ) {
54
+ var queue = HashedHeap < Message > ( sort: < )
55
+
56
+ queue. insert ( Message ( text: " hello " , priority: 100 ) )
57
+ queue. insert ( Message ( text: " world " , priority: 200 ) )
58
+ XCTAssertFalse ( queue. isEmpty)
59
+ XCTAssertEqual ( queue. count, 2 )
60
+ XCTAssertEqual ( queue. peek ( ) !. priority, 100 )
61
+
62
+ let result1 = queue. remove ( )
63
+ XCTAssertEqual ( result1!. priority, 100 )
64
+ XCTAssertFalse ( queue. isEmpty)
65
+ XCTAssertEqual ( queue. count, 1 )
66
+ XCTAssertEqual ( queue. peek ( ) !. priority, 200 )
67
+
68
+ let result2 = queue. remove ( )
69
+ XCTAssertEqual ( result2!. priority, 200 )
70
+ XCTAssertTrue ( queue. isEmpty)
71
+ XCTAssertEqual ( queue. count, 0 )
72
+ XCTAssertNil ( queue. peek ( ) )
73
+ }
74
+
75
+ func testTwoElementsOutOfOrder( ) {
76
+ var queue = HashedHeap < Message > ( sort: < )
77
+
78
+ queue. insert ( Message ( text: " world " , priority: 200 ) )
79
+ queue. insert ( Message ( text: " hello " , priority: 100 ) )
80
+ XCTAssertFalse ( queue. isEmpty)
81
+ XCTAssertEqual ( queue. count, 2 )
82
+ XCTAssertEqual ( queue. peek ( ) !. priority, 100 )
83
+
84
+ let result1 = queue. remove ( )
85
+ XCTAssertEqual ( result1!. priority, 100 )
86
+ XCTAssertFalse ( queue. isEmpty)
87
+ XCTAssertEqual ( queue. count, 1 )
88
+ XCTAssertEqual ( queue. peek ( ) !. priority, 200 )
89
+
90
+ let result2 = queue. remove ( )
91
+ XCTAssertEqual ( result2!. priority, 200 )
92
+ XCTAssertTrue ( queue. isEmpty)
93
+ XCTAssertEqual ( queue. count, 0 )
94
+ XCTAssertNil ( queue. peek ( ) )
95
+ }
88
96
}
0 commit comments