From 1d3d876f222c8583aa31386dc00f55e7cd844668 Mon Sep 17 00:00:00 2001 From: Kare Morstol Date: Wed, 10 Sep 2014 20:08:39 +0200 Subject: [PATCH] Move "streams" function to the module. Returns a writable stream and a readable stream. What you write to the 1st one can be read from the 2nd one. Make sure to call closeStream() on the writable stream before you call read() on the readable one. --- SwiftShell/Stream.swift | 10 ++++++++++ SwiftShellTests/Stream_Tests.swift | 11 +++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/SwiftShell/Stream.swift b/SwiftShell/Stream.swift index 7dcadfa..70090e9 100644 --- a/SwiftShell/Stream.swift +++ b/SwiftShell/Stream.swift @@ -91,6 +91,16 @@ public func stream (sequ } } +/** +Returns a writable stream and a readable stream. What you write to the 1st one can be read from the 2nd one. +Make sure to call closeStream() on the writable stream before you call read() on the readable one. +*/ +public func streams () -> (WriteableStreamType, ReadableStreamType) { + let pipe = NSPipe() + return (pipe.fileHandleForWriting, pipe.fileHandleForReading) +} + + /** Splits a stream into parts separated by "delimiter". */ struct StringStreamGenerator : GeneratorType { private let stream: ReadableStreamType diff --git a/SwiftShellTests/Stream_Tests.swift b/SwiftShellTests/Stream_Tests.swift index ed43a4d..4a98fc8 100644 --- a/SwiftShellTests/Stream_Tests.swift +++ b/SwiftShellTests/Stream_Tests.swift @@ -35,17 +35,12 @@ class Stream_Tests: XCTestCase { XCTAssertEqual( stream(["item 1","item 2"]).read(), "item 1item 2") } - func streams () -> (WriteableStreamType, ReadableStreamType) { - let pipe = NSPipe() - return (pipe.fileHandleForWriting, pipe.fileHandleForReading) - } - func testPrintStreamToStream () { var (writable, readable) = streams() stream("this goes in") |> writable - XCTAssertEqual(readable.readSome()!, "this goes in") + XCTAssertEqual( readable.readSome()!, "this goes in") } func testPrintStringToStream () { @@ -53,7 +48,7 @@ class Stream_Tests: XCTestCase { "this goes in" |> writable - XCTAssertEqual(readable.readSome()!, "this goes in") + XCTAssertEqual( readable.readSome()!, "this goes in") } func testCommandChainToStream () { @@ -61,7 +56,7 @@ class Stream_Tests: XCTestCase { SwiftShell.run("echo this is streamed") |> SwiftShell.run("wc -w") |> writable - XCTAssertEqual(readable.readSome()!.trim(), "3") + XCTAssertEqual( readable.readSome()!.trim(), "3") }