Skip to content
This repository has been archived by the owner on Jan 24, 2023. It is now read-only.

Commit

Permalink
Merge pull request #15 from UrbanCompass/just
Browse files Browse the repository at this point in the history
Add Just stuff
  • Loading branch information
wesbillman authored Dec 12, 2016
2 parents 8fdd791 + b701222 commit 828975f
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 3 deletions.
14 changes: 11 additions & 3 deletions Snail.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
/* Begin PBXBuildFile section */
24FABD561DFEF670005CF84E /* Fail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24FABD551DFEF670005CF84E /* Fail.swift */; };
24FABD581DFEF7EC005CF84E /* FailTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24FABD571DFEF7EC005CF84E /* FailTests.swift */; };
CB2936771DFE151B00792E6B /* Just.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB2936761DFE151B00792E6B /* Just.swift */; };
CB2936791DFEF77500792E6B /* JustTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB2936781DFEF77500792E6B /* JustTests.swift */; };
CBE54E4B1DFB36DF0008DD64 /* Snail.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBE54E411DFB36DF0008DD64 /* Snail.framework */; };
CBE54E521DFB36DF0008DD64 /* Snail.h in Headers */ = {isa = PBXBuildFile; fileRef = CBE54E441DFB36DF0008DD64 /* Snail.h */; settings = {ATTRIBUTES = (Public, ); }; };
CBE54E601DFB39510008DD64 /* Event.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBE54E5B1DFB39510008DD64 /* Event.swift */; };
Expand Down Expand Up @@ -38,6 +40,8 @@
/* Begin PBXFileReference section */
24FABD551DFEF670005CF84E /* Fail.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Fail.swift; sourceTree = "<group>"; };
24FABD571DFEF7EC005CF84E /* FailTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FailTests.swift; sourceTree = "<group>"; };
CB2936761DFE151B00792E6B /* Just.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Just.swift; sourceTree = "<group>"; };
CB2936781DFEF77500792E6B /* JustTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JustTests.swift; sourceTree = "<group>"; };
CBE54E411DFB36DF0008DD64 /* Snail.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Snail.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CBE54E441DFB36DF0008DD64 /* Snail.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Snail.h; sourceTree = "<group>"; };
CBE54E451DFB36DF0008DD64 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
Expand Down Expand Up @@ -101,6 +105,7 @@
CBE54E451DFB36DF0008DD64 /* Info.plist */,
CBE54E681DFB65D00008DD64 /* ControlEvent.swift */,
CBE54E5B1DFB39510008DD64 /* Event.swift */,
CB2936761DFE151B00792E6B /* Just.swift */,
CBE54E5D1DFB39510008DD64 /* Observable.swift */,
24FABD551DFEF670005CF84E /* Fail.swift */,
CBE54E5E1DFB39510008DD64 /* ObservableType.swift */,
Expand All @@ -113,12 +118,13 @@
CBE54E4E1DFB36DF0008DD64 /* SnailTests */ = {
isa = PBXGroup;
children = (
CBE54E721DFD9B030008DD64 /* Extensions */,
CBE54E511DFB36DF0008DD64 /* Info.plist */,
CBE54E641DFB395A0008DD64 /* ObservableTests.swift */,
CBE54E661DFB4F3F0008DD64 /* VariableTests.swift */,
CBE54E701DFD9A060008DD64 /* ControlEventTests.swift */,
24FABD571DFEF7EC005CF84E /* FailTests.swift */,
CB2936781DFEF77500792E6B /* JustTests.swift */,
CBE54E641DFB395A0008DD64 /* ObservableTests.swift */,
CBE54E661DFB4F3F0008DD64 /* VariableTests.swift */,
CBE54E721DFD9B030008DD64 /* Extensions */,
);
path = SnailTests;
sourceTree = "<group>";
Expand Down Expand Up @@ -256,6 +262,7 @@
CBE54E621DFB39510008DD64 /* ObservableType.swift in Sources */,
24FABD561DFEF670005CF84E /* Fail.swift in Sources */,
CBE54E611DFB39510008DD64 /* Observable.swift in Sources */,
CB2936771DFE151B00792E6B /* Just.swift in Sources */,
CBE54E601DFB39510008DD64 /* Event.swift in Sources */,
CBE54E631DFB39510008DD64 /* Variable.swift in Sources */,
CBE54E6D1DFB6A910008DD64 /* UIControlExtensions.swift in Sources */,
Expand All @@ -268,6 +275,7 @@
buildActionMask = 2147483647;
files = (
CBE54E711DFD9A060008DD64 /* ControlEventTests.swift in Sources */,
CB2936791DFEF77500792E6B /* JustTests.swift in Sources */,
CBE54E651DFB395A0008DD64 /* ObservableTests.swift in Sources */,
CBE54E761DFD9BDB0008DD64 /* UIButtonExtensionsTests.swift in Sources */,
CBE54E671DFB4F3F0008DD64 /* VariableTests.swift in Sources */,
Expand Down
22 changes: 22 additions & 0 deletions Snail/Just.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// Copyright © 2016 Compass. All rights reserved.

import Foundation

public class Just<T>: Observable<T> {
private let value: T

public init(_ value: T) {
self.value = value
super.init()
}

public override func subscribe(_ handler: @escaping (Event<T>) -> Void) {
handler(.next(value))
handler(.done)
}

public override func subscribe(onNext: ((T) -> Void)? = nil, onError: ((Error) -> Void)? = nil, onDone: (() -> Void)? = nil) {
onNext?(value)
onDone?()
}
}
27 changes: 27 additions & 0 deletions SnailTests/JustTests.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Copyright © 2016 Compass. All rights reserved.

import Foundation
import XCTest
@testable import Snail

class JustTests: XCTestCase {
func testJustOnNext() {
var result: Int?
let subject = Just(1)
subject.subscribe(
onNext: { value in result = value}
)
XCTAssertEqual(1, result)
}

func testJustEvent() {
var result: Int?
let subject = Just(1)
subject.subscribe { event in
if case .next(let value) = event {
result = value
}
}
XCTAssertEqual(1, result)
}
}

0 comments on commit 828975f

Please sign in to comment.