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{ 0015 /** 0016 Virtual time unit used that represents ticks of virtual clock. 0017 */ 0018 typealias VirtualTimeUnit
HistoricalSchedulerTimeConverter.swift:16 public struct HistoricalSchedulerTimeConverter : VirtualTimeConverterType {0019 0020 /** 0021 Virtual time unit used to represent differences of virtual times. 0022 */ 0023 typealias VirtualTimeIntervalUnit
VirtualTimeConverterType.swift:31 func convertFromVirtualTime(virtualTime: VirtualTimeUnit) -> RxTimeVirtualTimeConverterType.swift:39 func convertToVirtualTime(time: RxTime) -> VirtualTimeUnitVirtualTimeConverterType.swift:64 func offsetVirtualTime(time time: VirtualTimeUnit, offset: VirtualTimeIntervalUnit) -> VirtualTimeUnitVirtualTimeConverterType.swift:64 func offsetVirtualTime(time time: VirtualTimeUnit, offset: VirtualTimeIntervalUnit) -> VirtualTimeUnitVirtualTimeConverterType.swift:70 func compareVirtualTime(lhs: VirtualTimeUnit, _ rhs: VirtualTimeUnit) -> VirtualTimeComparisonVirtualTimeConverterType.swift:70 func compareVirtualTime(lhs: VirtualTimeUnit, _ rhs: VirtualTimeUnit) -> VirtualTimeComparisonVirtualTimeScheduler.swift:18 public typealias VirtualTime = Converter.VirtualTimeUnitVirtualTimeScheduler.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 {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
VirtualTimeConverterType.swift:47 func convertFromVirtualTimeInterval(virtualTimeInterval: VirtualTimeIntervalUnit) -> RxTimeIntervalVirtualTimeConverterType.swift:55 func convertToVirtualTimeInterval(timeInterval: RxTimeInterval) -> VirtualTimeIntervalUnitVirtualTimeConverterType.swift:64 func offsetVirtualTime(time time: VirtualTimeUnit, offset: VirtualTimeIntervalUnit) -> VirtualTimeUnitVirtualTimeScheduler.swift:19 public typealias VirtualTimeInterval = Converter.VirtualTimeIntervalUnit(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:34 return _converter.convertFromVirtualTime(clock)(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:91 let absoluteTime = _converter.convertToVirtualTime(time)(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:105 let time = _converter.offsetVirtualTime(time: self.clock, offset: dueTime)VirtualTimeScheduler.swift:223 let sleepTo = _converter.offsetVirtualTime(time: clock, offset: virtualInterval)(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
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 {{ 0080 /** 0081 lhs < rhs. 0082 */ 0083 case LessThan
HistoricalSchedulerTimeConverter.swift:73 public func compareVirtualTime(lhs: VirtualTimeUnit, _ rhs: VirtualTimeUnit) -> VirtualTimeComparison {VirtualTimeConverterType.swift:70 func compareVirtualTime(lhs: VirtualTimeUnit, _ rhs: VirtualTimeUnit) -> VirtualTimeComparisonVirtualTimeConverterType.swift:94 extension VirtualTimeComparison {0084 /** 0085 lhs == rhs. 0086 */ 0087 case Equal
HistoricalSchedulerTimeConverter.swift:76 return .LessThanVirtualTimeConverterType.swift:99 if case .LessThan = self {VirtualTimeScheduler.swift:55 case .LessThan:0088 /** 0089 lhs > rhs. 0090 */ 0091 case GreaterThan
HistoricalSchedulerTimeConverter.swift:78 return .EqualVirtualTimeConverterType.swift:121 if case .Equal = self {VirtualTimeScheduler.swift:57 case .Equal:0092 } 0093 0094 extension VirtualTimeComparison { 0095 /** 0096 lhs < rhs. 0097 */ 0098 var lessThen
HistoricalSchedulerTimeConverter.swift:80 return .GreaterThanVirtualTimeConverterType.swift:110 if case .GreaterThan = self {VirtualTimeScheduler.swift:59 case .GreaterThan:: 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:224 if _converter.compareVirtualTime(sleepTo, clock).lessThen {: 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
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 {