Skip to content

Commit 3c4c84f

Browse files
authored
Merge pull request #5 from Woollim/master
Add removeAll() method to WeakMapTable
2 parents b127c70 + 98e7f09 commit 3c4c84f

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

Sources/WeakMapTable/WeakMapTable.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,13 @@ final public class WeakMapTable<Key, Value> where Key: AnyObject {
6868
}
6969
}
7070

71+
public func removeAll() {
72+
self.lock.lock()
73+
defer {
74+
self.lock.unlock()
75+
}
76+
self.dictionary.removeAll()
77+
}
7178

7279
// MARK: Getting and Setting Values without Locking
7380

Tests/WeakMapTableTests/WeakMapTableTests.swift

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,23 @@ final class WeakMapTableTests: XCTestCase {
8181
XCTAssertNil(weakKey)
8282
XCTAssertNil(weakValue)
8383
}
84+
85+
func testRemoveAll() {
86+
let map = WeakMapTable<KeyObject, ValueObject>()
87+
let key = KeyObject()
88+
weak var weakValue: ValueObject?
89+
90+
_ = {
91+
let value = ValueObject()
92+
map.setValue(value, forKey: key)
93+
weakValue = value
94+
95+
map.removeAll()
96+
}()
97+
98+
XCTAssertNil(map.value(forKey: key))
99+
XCTAssertNil(weakValue)
100+
}
84101
}
85102

86103
private final class KeyObject {

0 commit comments

Comments
 (0)