// Shirley
// Written in 2015 by Nate Stedman <nate@natestedman.com>
//
// To the extent possible under law, the author(s) have dedicated all copyright and
// related and neighboring rights to this software to the public domain worldwide.
// This software is distributed without any warranty.
//
// You should have received a copy of the CC0 Public Domain Dedication along with
// this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

import ReactiveCocoa
import Shirley

struct SquareSession: SessionType
{
    typealias Request = Int
    typealias Value = Int
    typealias Error = NoError
    
    func producerForRequest(request: Int) -> SignalProducer<Int, NoError>
    {
        return SignalProducer(value: request * request)
    }
}

struct ErrorSession: SessionType
{
    typealias Request = Int
    typealias Value = Int
    typealias Error = TestError
    
    func producerForRequest(request: Int) -> SignalProducer<Int, TestError>
    {
        return SignalProducer(error: TestError(value: request))
    }
}

struct TestError: ErrorType
{
    let value: Int
}

// Shirley
// Written in 2015 by Nate Stedman <nate@natestedman.com>
//
// To the extent possible under law, the author(s) have dedicated all copyright and
// related and neighboring rights to this software to the public domain worldwide.
// This software is distributed without any warranty.
//
// You should have received a copy of the CC0 Public Domain Dedication along with
// this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

import ReactiveCocoa
import Result
import Shirley

struct SquareSession: SessionType
{
    typealias Request = Int
    typealias Value = Int
    typealias Error = NoError
    
    func producerForRequest(request: Int) -> SignalProducer<Int, NoError>
    {
        return SignalProducer(value: request * request)
    }
}

struct ErrorSession: SessionType
{
    typealias Request = Int
    typealias Value = Int
    typealias Error = TestError
    
    func producerForRequest(request: Int) -> SignalProducer<Int, TestError>
    {
        return SignalProducer(error: TestError(value: request))
    }
}

struct TestError: ErrorType
{
    let value: Int
}

Add "import Result" to tests using NoError.
Add "import Result" to tests using NoError.
