Created
April 10, 2016 08:17
-
-
Save YusukeHosonuma/3c972ae610e75c16af09e41dd26c8ce1 to your computer and use it in GitHub Desktop.
MySubject
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// MySubject.swift | |
// RxSwiftSample | |
// | |
// Created by Yusuke on 4/10/16. | |
// Copyright © 2016 Yusuke. All rights reserved. | |
// | |
import Foundation | |
class MySubject<T> { | |
var value: T { | |
didSet { | |
observers.forEach{ $0(value) } | |
} | |
} | |
private var observers: [T -> ()] = [] | |
init(value: T) { | |
self.value = value | |
} | |
func describe(observer: T -> ()) { | |
observers.append(observer) | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// MySubjectTests.swift | |
// RxSwiftSample | |
// | |
// Created by Yusuke on 4/10/16. | |
// Copyright © 2016 Yusuke. All rights reserved. | |
// | |
import XCTest | |
@testable import RxSwiftSample | |
class MySubjectTests: XCTestCase { | |
override func setUp() { | |
super.setUp() | |
} | |
override func tearDown() { | |
super.tearDown() | |
} | |
func testExample() { | |
let expectation1 = self.expectationWithDescription("callback 1") | |
let expectation2 = self.expectationWithDescription("callback 2") | |
let subject: MySubject<Int> = MySubject(value: 1) | |
// observer 1 | |
subject.describe { | |
XCTAssertEqual($0, 2) | |
expectation1.fulfill() | |
} | |
// observer 2 | |
subject.describe { | |
XCTAssertEqual($0, 2) | |
expectation2.fulfill() | |
} | |
// change observable | |
subject.value = 2 | |
waitForExpectationsWithTimeout(0.3, handler: nil) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment