-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathKillRingTests.swift
73 lines (64 loc) · 2.43 KB
/
KillRingTests.swift
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
import XCTest
@testable import CodeEditTextView
class KillRingTests: XCTestCase {
func test_killRingYank() {
var ring = KillRing.shared
ring.kill(strings: ["hello"])
for _ in 0..<100 {
XCTAssertEqual(ring.yank(), ["hello"])
}
ring.kill(strings: ["hello", "multiple", "strings"])
// should never change on yank
for _ in 0..<100 {
XCTAssertEqual(ring.yank(), ["hello", "multiple", "strings"])
}
ring = KillRing(2)
ring.kill(strings: ["hello"])
for _ in 0..<100 {
XCTAssertEqual(ring.yank(), ["hello"])
}
ring.kill(strings: ["hello", "multiple", "strings"])
// should never change on yank
for _ in 0..<100 {
XCTAssertEqual(ring.yank(), ["hello", "multiple", "strings"])
}
}
func test_killRingYankAndSelect() {
let ring = KillRing(5)
ring.kill(strings: ["1"])
ring.kill(strings: ["2"])
ring.kill(strings: ["3", "3", "3"])
ring.kill(strings: ["4", "4"])
ring.kill(strings: ["5"])
// should loop
for _ in 0..<5 {
XCTAssertEqual(ring.yankAndSelect(), ["5"])
XCTAssertEqual(ring.yankAndSelect(), ["1"])
XCTAssertEqual(ring.yankAndSelect(), ["2"])
XCTAssertEqual(ring.yankAndSelect(), ["3", "3", "3"])
XCTAssertEqual(ring.yankAndSelect(), ["4", "4"])
}
}
func test_textViewYank() {
let view = TextView(string: "Hello World")
view.selectionManager.setSelectedRange(NSRange(location: 0, length: 1))
view.delete(self)
XCTAssertEqual(view.string, "ello World")
view.yank(self)
XCTAssertEqual(view.string, "Hello World")
view.selectionManager.setSelectedRange(NSRange(location: 0, length: 0))
view.yank(self)
XCTAssertEqual(view.string, "HHello World")
}
func test_textViewYankMultipleCursors() {
let view = TextView(string: "Hello World")
view.selectionManager.setSelectedRanges([NSRange(location: 1, length: 0), NSRange(location: 4, length: 0)])
view.delete(self)
XCTAssertEqual(view.string, "elo World")
view.yank(self)
XCTAssertEqual(view.string, "Hello World")
view.selectionManager.setSelectedRanges([NSRange(location: 0, length: 0)])
view.yank(self)
XCTAssertEqual(view.string, "H\nlHello World")
}
}