PageRenderTime 40ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/System.Reactive.Tests/System.Reactive.Linq/ObservableSchedulerArgumentTest.cs

https://github.com/gshackles/mono-reactive
C# | 343 lines | 294 code | 36 blank | 13 comment | 0 complexity | 010952f9e05c273163cb011c71d17f7c MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Reactive;
  6. using System.Reactive.Concurrency;
  7. using System.Reactive.Disposables;
  8. using System.Reactive.Linq;
  9. using System.Threading;
  10. using NUnit.Framework;
  11. namespace System.Reactive.Linq.Tests
  12. {
  13. [TestFixture]
  14. public class ObservableSchedulerArgumentTest
  15. {
  16. [Test]
  17. [ExpectedException (typeof (MyException))]
  18. public void BufferScheduler ()
  19. {
  20. var o = Observable.Range (1, 3).Buffer (TimeSpan.FromMilliseconds (10), new ErrorScheduler ());
  21. foreach (var i in o.ToEnumerable ())
  22. ;
  23. }
  24. [Test]
  25. [ExpectedException (typeof (MyException))]
  26. public void BufferSchedulerEmpty ()
  27. {
  28. var o = Observable.Range (0, 0).Buffer (TimeSpan.FromMilliseconds (10), new ErrorScheduler ());
  29. foreach (var i in o.ToEnumerable ())
  30. ;
  31. }
  32. [Test]
  33. [ExpectedException (typeof (MyException))]
  34. public void DelayScheduler ()
  35. {
  36. var o = Observable.Range (1, 3).Delay (TimeSpan.FromMilliseconds (10), new ErrorScheduler ());
  37. foreach (var i in o.ToEnumerable ())
  38. ;
  39. }
  40. [Test]
  41. [ExpectedException (typeof (MyException))]
  42. public void DelaySchedulerEmpty ()
  43. {
  44. var o = Observable.Empty<int> ().Delay (TimeSpan.FromMilliseconds (10), new ErrorScheduler ());
  45. foreach (var i in o.ToEnumerable ())
  46. ;
  47. }
  48. [Test]
  49. [ExpectedException (typeof (MyException))]
  50. public void EmptyScheduler ()
  51. {
  52. var o = Observable.Empty<int> (new ErrorScheduler ());
  53. foreach (var i in o.ToEnumerable ())
  54. ;
  55. }
  56. [Test]
  57. [ExpectedException (typeof (MyException))]
  58. public void GenerateScheduler ()
  59. {
  60. var o = Observable.Generate<int,int> (0, i => i < 5, i => i + 1, i => i, new ErrorScheduler ());
  61. foreach (var i in o.ToEnumerable ())
  62. ;
  63. }
  64. [Test]
  65. [ExpectedException (typeof (MyException))]
  66. public void GenerateSchedulerEmpty ()
  67. {
  68. var o = Observable.Generate<int,int> (0, i => i < 0, i => i + 1, i => i, new ErrorScheduler ());
  69. foreach (var i in o.ToEnumerable ())
  70. ;
  71. }
  72. [Test]
  73. [ExpectedException (typeof (MyException))]
  74. public void IntervalScheduler ()
  75. {
  76. var o = Observable.Interval (TimeSpan.FromMilliseconds (10), new ErrorScheduler ());
  77. foreach (var i in o.ToEnumerable ())
  78. ;
  79. }
  80. [Test]
  81. [ExpectedException (typeof (MyException))]
  82. public void MergeScheduler ()
  83. {
  84. var o = Observable.Range (0, 3).Merge (Observable.Range (4, 3), new ErrorScheduler ());
  85. foreach (var i in o.ToEnumerable ())
  86. ;
  87. }
  88. [Test]
  89. [ExpectedException (typeof (MyException))]
  90. public void MergeSchedulerEmpty ()
  91. {
  92. var o = Observable.Empty<int> ().Merge (Observable.Empty<int> (), new ErrorScheduler ());
  93. foreach (var i in o.ToEnumerable ())
  94. ;
  95. }
  96. [Test]
  97. [ExpectedException (typeof (MyException))]
  98. public void ObserveOnScheduler ()
  99. {
  100. var o = Observable.Range (0, 3).ObserveOn (new ErrorScheduler ());
  101. foreach (var i in o.ToEnumerable ())
  102. ;
  103. }
  104. [Test]
  105. [ExpectedException (typeof (MyException))]
  106. public void ObserveOnSchedulerEmpty ()
  107. {
  108. // empty, still schedules.
  109. var o = Observable.Empty<int> ().ObserveOn (new ErrorScheduler ());
  110. foreach (var i in o.ToEnumerable ())
  111. ;
  112. }
  113. [Test]
  114. [ExpectedException (typeof (MyException))]
  115. public void RangeScheduler ()
  116. {
  117. var o = Observable.Range (0, 3, new ErrorScheduler ());
  118. foreach (var i in o.ToEnumerable ())
  119. ;
  120. }
  121. [Test]
  122. [ExpectedException (typeof (MyException))]
  123. public void RangeSchedulerEmpty ()
  124. {
  125. var o = Observable.Range (0, 0, new ErrorScheduler ());
  126. foreach (var i in o.ToEnumerable ())
  127. ;
  128. }
  129. [Test]
  130. [ExpectedException (typeof (MyException))]
  131. public void RepeatScheduler ()
  132. {
  133. var o = Observable.Repeat (0, new ErrorScheduler ());
  134. foreach (var i in o.ToEnumerable ())
  135. ;
  136. }
  137. /*
  138. [Test]
  139. [ExpectedException (typeof (MyException))]
  140. public void ReplayScheduler ()
  141. {
  142. var o = Observable.Range (0, 3).Replay (2, new ErrorScheduler ());
  143. foreach (var i in o.ToEnumerable ())
  144. ;
  145. }
  146. */
  147. [Test]
  148. [ExpectedException (typeof (MyException))]
  149. public void ReturnScheduler ()
  150. {
  151. var o = Observable.Return (0, new ErrorScheduler ());
  152. foreach (var i in o.ToEnumerable ())
  153. ;
  154. }
  155. [Test]
  156. [ExpectedException (typeof (MyException))]
  157. public void SampleScheduler ()
  158. {
  159. var o = Observable.Range (0, 3).Sample (TimeSpan.FromMilliseconds (10), new ErrorScheduler ());
  160. foreach (var i in o.ToEnumerable ())
  161. ;
  162. }
  163. [Test]
  164. [ExpectedException (typeof (MyException))]
  165. public void SampleSchedulerEmpty ()
  166. {
  167. var o = Observable.Empty<int> ().Sample (TimeSpan.FromMilliseconds (10), new ErrorScheduler ());
  168. foreach (var i in o.ToEnumerable ())
  169. ;
  170. }
  171. [Test]
  172. [ExpectedException (typeof (MyException))]
  173. public void StartScheduler ()
  174. {
  175. var o = Observable.Start (() => {}, new ErrorScheduler ());
  176. foreach (var i in o.ToEnumerable ())
  177. ;
  178. }
  179. [Test]
  180. [ExpectedException (typeof (MyException))]
  181. public void StartWithScheduler ()
  182. {
  183. var o = Observable.Range (0, 3).StartWith (new ErrorScheduler ());
  184. foreach (var i in o.ToEnumerable ())
  185. ;
  186. }
  187. [Test]
  188. [ExpectedException (typeof (MyException))]
  189. public void SubscribeOnScheduler ()
  190. {
  191. var o = Observable.Range (0, 3).StartWith (new ErrorScheduler ());
  192. foreach (var i in o.ToEnumerable ())
  193. ;
  194. }
  195. [Test]
  196. [ExpectedException (typeof (MyException))]
  197. public void ThrottleScheduler ()
  198. {
  199. var o = Observable.Range (0, 3).Throttle (TimeSpan.FromMilliseconds (10), new ErrorScheduler ());
  200. foreach (var i in o.ToEnumerable ())
  201. ;
  202. }
  203. [Test]
  204. public void ThrottleSchedulerEmpty ()
  205. {
  206. // empty causes no subscription.
  207. var o = Observable.Empty<int> ().Throttle (TimeSpan.FromMilliseconds (10), new ErrorScheduler ());
  208. foreach (var i in o.ToEnumerable ())
  209. ;
  210. }
  211. [Test]
  212. [ExpectedException (typeof (MyException))]
  213. public void ThrowScheduler ()
  214. {
  215. var o = Observable.Throw<int> (new Exception (), new ErrorScheduler ());
  216. foreach (var i in o.ToEnumerable ())
  217. ;
  218. }
  219. [Test] // does not schedule
  220. public void TimeIntervalScheduler ()
  221. {
  222. var o = Observable.Range (0, 3).TimeInterval (new ErrorScheduler ());
  223. foreach (var i in o.ToEnumerable ())
  224. ;
  225. }
  226. [Test]
  227. [ExpectedException (typeof (MyException))]
  228. public void TimeoutScheduler ()
  229. {
  230. var o = Observable.Range (0, 3).Timeout (TimeSpan.FromMilliseconds (10), new ErrorScheduler ());
  231. foreach (var i in o.ToEnumerable ())
  232. ;
  233. }
  234. [Test]
  235. [ExpectedException (typeof (MyException))]
  236. public void TimeoutSchedulerEmpty ()
  237. {
  238. var o = Observable.Range (0, 0).Timeout (TimeSpan.FromMilliseconds (10), new ErrorScheduler ());
  239. foreach (var i in o.ToEnumerable ())
  240. ;
  241. }
  242. [Test]
  243. [ExpectedException (typeof (MyException))]
  244. public void TimeoutSchedulerTimeout ()
  245. {
  246. // timeout with no value, still raises an error.
  247. var o = Observable.Interval (TimeSpan.FromMilliseconds (100)).Take (5).Timeout (TimeSpan.FromMilliseconds (10), new ErrorScheduler ());
  248. foreach (var i in o.ToEnumerable ())
  249. ;
  250. }
  251. [Test]
  252. [ExpectedException (typeof (MyException))]
  253. public void TimerScheduler ()
  254. {
  255. var o = Observable.Timer (DateTimeOffset.Now, new ErrorScheduler ());
  256. foreach (var i in o.ToEnumerable ())
  257. ;
  258. }
  259. [Test] // does not schedule
  260. public void TimestampScheduler ()
  261. {
  262. var o = Observable.Range (1, 3).Timestamp (new ErrorScheduler ()); // This ensures that Timestamp() does *not* use IScheduler to *schedule* tasks.
  263. var a = from t in o.ToEnumerable () select t.Value;
  264. Assert.AreEqual (new int [] {1, 2, 3}, a.ToArray (), "#1");
  265. }
  266. [Test]
  267. [ExpectedException (typeof (MyException))]
  268. public void ToAsyncScheduler ()
  269. {
  270. var o = Observable.ToAsync (() => {}, new ErrorScheduler ());
  271. foreach (var i in o ().ToEnumerable ())
  272. ;
  273. }
  274. [Test]
  275. [ExpectedException (typeof (MyException))]
  276. public void ToObservableScheduler ()
  277. {
  278. var o = Enumerable.Range (0, 3).ToObservable (new ErrorScheduler ());
  279. foreach (var i in o.ToEnumerable ())
  280. ;
  281. }
  282. [Test]
  283. [ExpectedException (typeof (MyException))]
  284. public void ToObservableSchedulerEmpty ()
  285. {
  286. var o = Enumerable.Range (0, 0).ToObservable (new ErrorScheduler ());
  287. foreach (var i in o.ToEnumerable ())
  288. ;
  289. }
  290. [Test]
  291. [ExpectedException (typeof (MyException))]
  292. public void WindowScheduler ()
  293. {
  294. var o = Observable.Range (0, 3).Window (TimeSpan.FromMilliseconds (10), 2, new ErrorScheduler ());
  295. foreach (var i in o.ToEnumerable ())
  296. ;
  297. }
  298. [Test]
  299. [ExpectedException (typeof (MyException))]
  300. public void WindowSchedulerEmpty ()
  301. {
  302. var o = Observable.Range (0, 0).Window (TimeSpan.FromMilliseconds (10), 2, new ErrorScheduler ());
  303. foreach (var i in o.ToEnumerable ())
  304. ;
  305. }
  306. }
  307. }