0001    //
0002    //  VirtualTimeConverterType.swift
0003    //  Rx
0004    //
0005    //  Created by Krunoslav Zaher on 12/23/15.
0006    //  Copyright © 2015 Krunoslav Zaher. All rights reserved.
0007    //
0008    
0009    import Foundation
0010    
0011    /**
0012    Parametrization for virtual time used by `VirtualTimeScheduler`s.
0013    */
0014    public protocol VirtualTimeConverterType
HistoricalSchedulerTimeConverter.swift:16
public struct HistoricalSchedulerTimeConverter : VirtualTimeConverterType {
{ 0015 /** 0016 Virtual time unit used that represents ticks of virtual clock. 0017 */ 0018 typealias VirtualTimeUnit
VirtualTimeConverterType.swift:31
    func convertFromVirtualTime(virtualTime: VirtualTimeUnit) -> RxTime
VirtualTimeConverterType.swift:39
    func convertToVirtualTime(time: RxTime) -> VirtualTimeUnit
VirtualTimeConverterType.swift:64
    func offsetVirtualTime(time time: VirtualTimeUnit, offset: VirtualTimeIntervalUnit) -> VirtualTimeUnit
VirtualTimeConverterType.swift:64
    func offsetVirtualTime(time time: VirtualTimeUnit, offset: VirtualTimeIntervalUnit) -> VirtualTimeUnit
VirtualTimeConverterType.swift:70
    func compareVirtualTime(lhs: VirtualTimeUnit, _ rhs: VirtualTimeUnit) -> VirtualTimeComparison
VirtualTimeConverterType.swift:70
    func compareVirtualTime(lhs: VirtualTimeUnit, _ rhs: VirtualTimeUnit) -> VirtualTimeComparison
VirtualTimeScheduler.swift:18
    public typealias VirtualTime = Converter.VirtualTimeUnit
VirtualTimeScheduler.swift:117
    public func scheduleAbsoluteVirtual<StateType>(state: StateType, time: Converter.VirtualTimeUnit, action: StateType -> Disposable) -> Disposable {
VirtualTimeScheduler.swift:139
    public func adjustScheduledTime(time: Converter.VirtualTimeUnit) -> Converter.VirtualTimeUnit {
VirtualTimeScheduler.swift:139
    public func adjustScheduledTime(time: Converter.VirtualTimeUnit) -> Converter.VirtualTimeUnit {
0019 0020 /** 0021 Virtual time unit used to represent differences of virtual times. 0022 */ 0023 typealias VirtualTimeIntervalUnit
VirtualTimeConverterType.swift:47
    func convertFromVirtualTimeInterval(virtualTimeInterval: VirtualTimeIntervalUnit) -> RxTimeInterval
VirtualTimeConverterType.swift:55
    func convertToVirtualTimeInterval(timeInterval: RxTimeInterval) -> VirtualTimeIntervalUnit
VirtualTimeConverterType.swift:64
    func offsetVirtualTime(time time: VirtualTimeUnit, offset: VirtualTimeIntervalUnit) -> VirtualTimeUnit
VirtualTimeScheduler.swift:19
    public typealias VirtualTimeInterval = Converter.VirtualTimeIntervalUnit
0024 0025 /** 0026 Converts virtual time to real time. 0027 0028 - parameter virtualTime: Virtual time to convert to `NSDate`. 0029 - returns: `NSDate` corresponding to virtual time. 0030 */ 0031 func convertFromVirtualTime
VirtualTimeScheduler.swift:34
        return _converter.convertFromVirtualTime(clock)
(virtualTime: VirtualTimeUnit) -> RxTime 0032 0033 /** 0034 Converts real time to virtual time. 0035 0036 - parameter time: `NSDate` to convert to virtual time. 0037 - returns: Virtual time corresponding to `NSDate`. 0038 */ 0039 func convertToVirtualTime
VirtualTimeScheduler.swift:91
        let absoluteTime = _converter.convertToVirtualTime(time)
(time: RxTime) -> VirtualTimeUnit 0040 0041 /** 0042 Converts from virtual time interval to `NSTimeInterval`. 0043 0044 - parameter virtualTimeInterval: Virtual time interval to convert to `NSTimeInterval`. 0045 - returns: `NSTimeInterval` corresponding to virtual time interval. 0046 */ 0047 func convertFromVirtualTimeInterval(virtualTimeInterval: VirtualTimeIntervalUnit) -> RxTimeInterval 0048 0049 /** 0050 Converts from virtual time interval to `NSTimeInterval`. 0051 0052 - parameter timeInterval: `NSTimeInterval` to convert to virtual time interval. 0053 - returns: Virtual time interval corresponding to time interval. 0054 */ 0055 func convertToVirtualTimeInterval(timeInterval: RxTimeInterval) -> VirtualTimeIntervalUnit 0056 0057 /** 0058 Offsets virtual time by virtual time interval. 0059 0060 - parameter time: Virtual time. 0061 - parameter offset: Virtual time interval. 0062 - returns: Time corresponding to time offsetted by virtual time interval. 0063 */ 0064 func offsetVirtualTime
VirtualTimeScheduler.swift:105
        let time = _converter.offsetVirtualTime(time: self.clock, offset: dueTime)
VirtualTimeScheduler.swift:223
        let sleepTo = _converter.offsetVirtualTime(time: clock, offset: virtualInterval)
(time time: VirtualTimeUnit, offset: VirtualTimeIntervalUnit) -> VirtualTimeUnit 0065 0066 /** 0067 This is aditional abstraction because `NSDate` is unfortunately not comparable. 0068 Extending `NSDate` with `Comparable` would be too risky because of possible collisions with other libraries. 0069 */ 0070 func compareVirtualTime
VirtualTimeScheduler.swift:54
            switch converter.compareVirtualTime($0.time, $1.time) {
VirtualTimeScheduler.swift:159
            if _converter.compareVirtualTime(next.time, self.clock).greaterThan  {
VirtualTimeScheduler.swift:201
            if _converter.compareVirtualTime(next.time, virtualTime).greaterThan {
VirtualTimeScheduler.swift:205
            if _converter.compareVirtualTime(next.time, self.clock).greaterThan  {
VirtualTimeScheduler.swift:224
        if _converter.compareVirtualTime(sleepTo, clock).lessThen {
(lhs: VirtualTimeUnit, _ rhs: VirtualTimeUnit) -> VirtualTimeComparison 0071 } 0072 0073 /** 0074 Virtual time comparison result. 0075 0076 This is aditional abstraction because `NSDate` is unfortunately not comparable. 0077 Extending `NSDate` with `Comparable` would be too risky because of possible collisions with other libraries. 0078 */ 0079 public enum VirtualTimeComparison
HistoricalSchedulerTimeConverter.swift:73
    public func compareVirtualTime(lhs: VirtualTimeUnit, _ rhs: VirtualTimeUnit) -> VirtualTimeComparison {
VirtualTimeConverterType.swift:70
    func compareVirtualTime(lhs: VirtualTimeUnit, _ rhs: VirtualTimeUnit) -> VirtualTimeComparison
VirtualTimeConverterType.swift:94
extension VirtualTimeComparison {
{ 0080 /** 0081 lhs < rhs. 0082 */ 0083 case LessThan
HistoricalSchedulerTimeConverter.swift:76
            return .LessThan
VirtualTimeConverterType.swift:99
        if case .LessThan = self {
VirtualTimeScheduler.swift:55
            case .LessThan:
0084 /** 0085 lhs == rhs. 0086 */ 0087 case Equal
HistoricalSchedulerTimeConverter.swift:78
            return .Equal
VirtualTimeConverterType.swift:121
        if case .Equal = self {
VirtualTimeScheduler.swift:57
            case .Equal:
0088 /** 0089 lhs > rhs. 0090 */ 0091 case GreaterThan
HistoricalSchedulerTimeConverter.swift:80
            return .GreaterThan
VirtualTimeConverterType.swift:110
        if case .GreaterThan = self {
VirtualTimeScheduler.swift:59
            case .GreaterThan:
0092 } 0093 0094 extension VirtualTimeComparison { 0095 /** 0096 lhs < rhs. 0097 */ 0098 var lessThen
VirtualTimeScheduler.swift:224
        if _converter.compareVirtualTime(sleepTo, clock).lessThen {
: Bool { 0099 if case .LessThan = self { 0100 return true 0101 } 0102 0103 return false 0104 } 0105 0106 /** 0107 lhs > rhs 0108 */ 0109 var greaterThan
VirtualTimeScheduler.swift:159
            if _converter.compareVirtualTime(next.time, self.clock).greaterThan  {
VirtualTimeScheduler.swift:201
            if _converter.compareVirtualTime(next.time, virtualTime).greaterThan {
VirtualTimeScheduler.swift:205
            if _converter.compareVirtualTime(next.time, self.clock).greaterThan  {
: Bool { 0110 if case .GreaterThan = self { 0111 return true 0112 } 0113 0114 return false 0115 } 0116 0117 /** 0118 lhs == rhs 0119 */ 0120 var equal: Bool { 0121 if case .Equal = self { 0122 return true 0123 } 0124 0125 return false 0126 } 0127 } 0128