Skip to content

Instantly share code, notes, and snippets.

@matiasvillaverde
Created October 25, 2019 10:13
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save matiasvillaverde/5d3b895fcc77bd9d6ef0749b56258427 to your computer and use it in GitHub Desktop.
Save matiasvillaverde/5d3b895fcc77bd9d6ef0749b56258427 to your computer and use it in GitHub Desktop.
import XCTest
final class WeakSetTests: XCTestCase {
var subject: WeakSet<ThemeObserver>!
override func setUp() {
subject = []
}
override func tearDown() {
subject = nil
}
func test_initLiteral_oneObject_subjectHasOneObject() {
let view = MockThemedView()
subject = [view]
XCTAssertEqual(subject.count, 1)
}
func test_initLiteral_oneObject_addSameObjectTwoTimes_subjectHasOneObject() {
let view = MockThemedView()
subject = [view, view]
XCTAssertEqual(subject.count, 1)
}
func test_initLiteral_oneObject_objectIsNil_subjectDoesntHoldObject_objectIsNil() {
var view: MockThemedView? = MockThemedView()
weak var weakView: MockThemedView? = view
subject = [view!]
view = nil
XCTAssertNil(weakView)
}
func test_initLiteral_oneObject_objectIsNil_accessViewFromSet_subjectDoesntHoldObject_obejctIsNil() {
var view: MockThemedView? = MockThemedView()
subject = [view!]
view = nil
XCTAssertNil(subject.allObjects.first)
}
func test_initLiteral_threeHundertFour_objectsAreNil_subjectDoesntHoldObjects_objectsAreNil() {
var mockViews: [MockThemedView]? = threeHundertFourViews()
subject = WeakSet(mockViews!)
mockViews = nil
XCTAssertNil(mockViews)
}
private func threeHundertFourViews() -> [MockThemedView] {
var views = [MockThemedView]()
for _ in 1 ... 304 {
views.append(MockThemedView())
}
return views
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment