ObservableAsyncTest.cs 133 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460
  1. // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
  2. using System;
  3. using System.Linq;
  4. using System.Reactive;
  5. using System.Reactive.Concurrency;
  6. using System.Reactive.Linq;
  7. using System.Threading;
  8. using Microsoft.Reactive.Testing;
  9. using Microsoft.VisualStudio.TestTools.UnitTesting;
  10. #if !NO_TPL
  11. using System.Threading.Tasks;
  12. #endif
  13. namespace ReactiveTests.Tests
  14. {
  15. [TestClass]
  16. public partial class ObservableAsyncTest : ReactiveTest
  17. {
  18. #region FromAsyncPattern
  19. [TestMethod]
  20. public void FromAsyncPattern_ArgumentChecking()
  21. {
  22. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern(null, iar => { }));
  23. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int>(null, iar => 0));
  24. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int>(null, iar => { }));
  25. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int>(null, iar => 0));
  26. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int>(null, iar => { }));
  27. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int>(null, iar => 0));
  28. #if !NO_LARGEARITY
  29. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int>(null, iar => { }));
  30. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int>(null, iar => 0));
  31. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int>(null, iar => { }));
  32. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int>(null, iar => 0));
  33. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int>(null, iar => { }));
  34. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int>(null, iar => 0));
  35. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int>(null, iar => { }));
  36. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int>(null, iar => 0));
  37. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int>(null, iar => { }));
  38. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int>(null, iar => 0));
  39. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int>(null, iar => { }));
  40. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int>(null, iar => 0));
  41. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int>(null, iar => { }));
  42. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int>(null, iar => 0));
  43. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int>(null, iar => { }));
  44. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int, int>(null, iar => 0));
  45. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int, int>(null, iar => { }));
  46. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int, int, int>(null, iar => 0));
  47. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int, int, int>(null, iar => { }));
  48. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int, int, int, int>(null, iar => 0));
  49. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int, int, int, int>(null, iar => { }));
  50. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int, int, int, int, int>(null, iar => 0));
  51. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int, int, int, int, int>(null, iar => { }));
  52. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>(null, iar => 0));
  53. #endif
  54. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern((cb, o) => null, default(Action<IAsyncResult>)));
  55. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int>((cb, o) => null, default(Func<IAsyncResult, int>)));
  56. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int>((a, cb, o) => null, default(Action<IAsyncResult>)));
  57. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int>((a, cb, o) => null, default(Func<IAsyncResult, int>)));
  58. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int>((a, b, cb, o) => null, default(Action<IAsyncResult>)));
  59. #if !NO_LARGEARITY
  60. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int>((a, b, cb, o) => null, default(Func<IAsyncResult, int>)));
  61. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int>((a, b, c, cb, o) => null, default(Action<IAsyncResult>)));
  62. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int>((a, b, c, cb, o) => null, default(Func<IAsyncResult, int>)));
  63. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int>((a, b, c, d, cb, o) => null, default(Action<IAsyncResult>)));
  64. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int>((a, b, c, d, cb, o) => null, default(Func<IAsyncResult, int>)));
  65. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int>((a, b, c, d, e, cb, o) => null, default(Action<IAsyncResult>)));
  66. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int>((a, b, c, d, e, cb, o) => null, default(Func<IAsyncResult, int>)));
  67. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int>((a, b, c, d, e, f, cb, o) => null, default(Action<IAsyncResult>)));
  68. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int>((a, b, c, d, e, f, cb, o) => null, default(Func<IAsyncResult, int>)));
  69. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int>((a, b, c, d, e, f, g, cb, o) => null, default(Action<IAsyncResult>)));
  70. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, cb, o) => null, default(Func<IAsyncResult, int>)));
  71. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, cb, o) => null, default(Action<IAsyncResult>)));
  72. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, cb, o) => null, default(Func<IAsyncResult, int>)));
  73. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, cb, o) => null, default(Action<IAsyncResult>)));
  74. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, cb, o) => null, default(Func<IAsyncResult, int>)));
  75. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, cb, o) => null, default(Action<IAsyncResult>)));
  76. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, cb, o) => null, default(Func<IAsyncResult, int>)));
  77. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, cb, o) => null, default(Action<IAsyncResult>)));
  78. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, cb, o) => null, default(Func<IAsyncResult, int>)));
  79. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, cb, o) => null, default(Action<IAsyncResult>)));
  80. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, cb, o) => null, default(Func<IAsyncResult, int>)));
  81. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, cb, o) => null, default(Action<IAsyncResult>)));
  82. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, cb, o) => null, default(Func<IAsyncResult, int>)));
  83. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n, cb, o) => null, default(Action<IAsyncResult>)));
  84. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsyncPattern<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n, cb, o) => null, default(Func<IAsyncResult, int>)));
  85. #endif
  86. }
  87. [TestMethod]
  88. public void FromAsyncPattern0()
  89. {
  90. var x = new Result();
  91. Func<AsyncCallback, object, IAsyncResult> begin = (cb, _) => { cb(x); return x; };
  92. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 1; };
  93. var res = Observable.FromAsyncPattern(begin, end)().Materialize().ToEnumerable().ToArray();
  94. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnNext<int>(1), Notification.CreateOnCompleted<int>() }));
  95. }
  96. [TestMethod]
  97. public void FromAsyncPatternAction0()
  98. {
  99. var x = new Result();
  100. Func<AsyncCallback, object, IAsyncResult> begin = (cb, _) => { cb(x); return x; };
  101. Action<IAsyncResult> end = iar => { Assert.AreSame(x, iar); };
  102. var res = Observable.FromAsyncPattern(begin, end)().ToEnumerable().ToArray();
  103. Assert.IsTrue(res.SequenceEqual(new[] { new Unit() }));
  104. }
  105. [TestMethod]
  106. public void FromAsyncPattern0_Error()
  107. {
  108. var x = new Result();
  109. var ex = new Exception();
  110. Func<AsyncCallback, object, IAsyncResult> begin = (cb, _) => { cb(x); return x; };
  111. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); throw ex; };
  112. var res = Observable.FromAsyncPattern(begin, end)().Materialize().ToEnumerable().ToArray();
  113. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  114. }
  115. [TestMethod]
  116. public void FromAsyncPattern0_ErrorBegin()
  117. {
  118. var x = new Result();
  119. var ex = new Exception();
  120. Func<AsyncCallback, object, IAsyncResult> begin = (cb, _) => { cb(x); throw ex; };
  121. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 0; };
  122. var res = Observable.FromAsyncPattern(begin, end)().Materialize().ToEnumerable().ToArray();
  123. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  124. }
  125. [TestMethod]
  126. public void FromAsyncPattern1()
  127. {
  128. var x = new Result();
  129. Func<int, AsyncCallback, object, IAsyncResult> begin = (a, cb, _) =>
  130. {
  131. Assert.AreEqual(a, 2);
  132. cb(x);
  133. return x;
  134. };
  135. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 1; };
  136. var res = Observable.FromAsyncPattern(begin, end)(2).Materialize().ToEnumerable().ToArray();
  137. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnNext<int>(1), Notification.CreateOnCompleted<int>() }));
  138. }
  139. [TestMethod]
  140. public void FromAsyncPatternAction1()
  141. {
  142. var x = new Result();
  143. Func<int, AsyncCallback, object, IAsyncResult> begin = (a, cb, _) =>
  144. {
  145. Assert.AreEqual(a, 2);
  146. cb(x);
  147. return x;
  148. };
  149. Action<IAsyncResult> end = iar => { Assert.AreSame(x, iar); };
  150. var res = Observable.FromAsyncPattern(begin, end)(2).ToEnumerable().ToArray();
  151. Assert.IsTrue(res.SequenceEqual(new[] { new Unit() }));
  152. }
  153. [TestMethod]
  154. public void FromAsyncPattern1_Error()
  155. {
  156. var x = new Result();
  157. var ex = new Exception();
  158. Func<int, AsyncCallback, object, IAsyncResult> begin = (a, cb, o) => { cb(x); return x; };
  159. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); throw ex; };
  160. var res = Observable.FromAsyncPattern(begin, end)(2).Materialize().ToEnumerable().ToArray();
  161. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  162. }
  163. [TestMethod]
  164. public void FromAsyncPattern1_ErrorBegin()
  165. {
  166. var x = new Result();
  167. var ex = new Exception();
  168. Func<int, AsyncCallback, object, IAsyncResult> begin = (a, cb, o) => { cb(x); throw ex; };
  169. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 0; };
  170. var res = Observable.FromAsyncPattern(begin, end)(2).Materialize().ToEnumerable().ToArray();
  171. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  172. }
  173. [TestMethod]
  174. public void FromAsyncPattern2()
  175. {
  176. var x = new Result();
  177. Func<int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, cb, _) =>
  178. {
  179. Assert.AreEqual(a, 2);
  180. Assert.AreEqual(b, 3);
  181. cb(x);
  182. return x;
  183. };
  184. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 1; };
  185. var res = Observable.FromAsyncPattern(begin, end)(2, 3).Materialize().ToEnumerable().ToArray();
  186. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnNext<int>(1), Notification.CreateOnCompleted<int>() }));
  187. }
  188. [TestMethod]
  189. public void FromAsyncPatternAction2()
  190. {
  191. var x = new Result();
  192. Func<int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, cb, _) =>
  193. {
  194. Assert.AreEqual(a, 2);
  195. Assert.AreEqual(b, 3);
  196. cb(x);
  197. return x;
  198. };
  199. Action<IAsyncResult> end = iar => { Assert.AreSame(x, iar); };
  200. var res = Observable.FromAsyncPattern(begin, end)(2, 3).ToEnumerable().ToArray();
  201. Assert.IsTrue(res.SequenceEqual(new[] { new Unit() }));
  202. }
  203. [TestMethod]
  204. public void FromAsyncPattern2_Error()
  205. {
  206. var x = new Result();
  207. var ex = new Exception();
  208. Func<int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, cb, o) => { cb(x); return x; };
  209. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); throw ex; };
  210. var res = Observable.FromAsyncPattern(begin, end)(2, 3).Materialize().ToEnumerable().ToArray();
  211. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  212. }
  213. [TestMethod]
  214. public void FromAsyncPattern2_ErrorBegin()
  215. {
  216. var x = new Result();
  217. var ex = new Exception();
  218. Func<int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, cb, o) => { cb(x); throw ex; };
  219. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 0; };
  220. var res = Observable.FromAsyncPattern(begin, end)(2, 3).Materialize().ToEnumerable().ToArray();
  221. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  222. }
  223. #if !NO_LARGEARITY
  224. [TestMethod]
  225. public void FromAsyncPattern3()
  226. {
  227. var x = new Result();
  228. Func<int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, cb, _) =>
  229. {
  230. Assert.AreEqual(a, 2);
  231. Assert.AreEqual(b, 3);
  232. Assert.AreEqual(c, 4);
  233. cb(x);
  234. return x;
  235. };
  236. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 1; };
  237. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4).Materialize().ToEnumerable().ToArray();
  238. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnNext<int>(1), Notification.CreateOnCompleted<int>() }));
  239. }
  240. [TestMethod]
  241. public void FromAsyncPatternAction3()
  242. {
  243. var x = new Result();
  244. Func<int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, cb, _) =>
  245. {
  246. Assert.AreEqual(a, 2);
  247. Assert.AreEqual(b, 3);
  248. Assert.AreEqual(c, 4);
  249. cb(x);
  250. return x;
  251. };
  252. Action<IAsyncResult> end = iar => { Assert.AreSame(x, iar); };
  253. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4).ToEnumerable().ToArray();
  254. Assert.IsTrue(res.SequenceEqual(new[] { new Unit() }));
  255. }
  256. [TestMethod]
  257. public void FromAsyncPattern3_Error()
  258. {
  259. var x = new Result();
  260. var ex = new Exception();
  261. Func<int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, cb, o) => { cb(x); return x; };
  262. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); throw ex; };
  263. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4).Materialize().ToEnumerable().ToArray();
  264. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  265. }
  266. [TestMethod]
  267. public void FromAsyncPattern3_ErrorBegin()
  268. {
  269. var x = new Result();
  270. var ex = new Exception();
  271. Func<int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, cb, o) => { cb(x); throw ex; };
  272. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 0; };
  273. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4).Materialize().ToEnumerable().ToArray();
  274. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  275. }
  276. [TestMethod]
  277. public void FromAsyncPattern4()
  278. {
  279. var x = new Result();
  280. Func<int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, cb, _) =>
  281. {
  282. Assert.AreEqual(a, 2);
  283. Assert.AreEqual(b, 3);
  284. Assert.AreEqual(c, 4);
  285. Assert.AreEqual(d, 5);
  286. cb(x);
  287. return x;
  288. };
  289. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 1; };
  290. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5).Materialize().ToEnumerable().ToArray();
  291. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnNext<int>(1), Notification.CreateOnCompleted<int>() }));
  292. }
  293. [TestMethod]
  294. public void FromAsyncPatternAction4()
  295. {
  296. var x = new Result();
  297. Func<int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, cb, _) =>
  298. {
  299. Assert.AreEqual(a, 2);
  300. Assert.AreEqual(b, 3);
  301. Assert.AreEqual(c, 4);
  302. Assert.AreEqual(d, 5);
  303. cb(x);
  304. return x;
  305. };
  306. Action<IAsyncResult> end = iar => { Assert.AreSame(x, iar); };
  307. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5).ToEnumerable().ToArray();
  308. Assert.IsTrue(res.SequenceEqual(new[] { new Unit() }));
  309. }
  310. [TestMethod]
  311. public void FromAsyncPattern4_Error()
  312. {
  313. var x = new Result();
  314. var ex = new Exception();
  315. Func<int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, cb, o) => { cb(x); return x; };
  316. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); throw ex; };
  317. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5).Materialize().ToEnumerable().ToArray();
  318. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  319. }
  320. [TestMethod]
  321. public void FromAsyncPattern4_ErrorBegin()
  322. {
  323. var x = new Result();
  324. var ex = new Exception();
  325. Func<int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, cb, o) => { cb(x); throw ex; };
  326. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 0; };
  327. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5).Materialize().ToEnumerable().ToArray();
  328. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  329. }
  330. [TestMethod]
  331. public void FromAsyncPattern5()
  332. {
  333. var x = new Result();
  334. Func<int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, cb, _) =>
  335. {
  336. Assert.AreEqual(a, 2);
  337. Assert.AreEqual(b, 3);
  338. Assert.AreEqual(c, 4);
  339. Assert.AreEqual(d, 5);
  340. Assert.AreEqual(e, 6);
  341. cb(x);
  342. return x;
  343. };
  344. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 1; };
  345. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6).Materialize().ToEnumerable().ToArray();
  346. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnNext<int>(1), Notification.CreateOnCompleted<int>() }));
  347. }
  348. [TestMethod]
  349. public void FromAsyncPatternAction5()
  350. {
  351. var x = new Result();
  352. Func<int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, cb, _) =>
  353. {
  354. Assert.AreEqual(a, 2);
  355. Assert.AreEqual(b, 3);
  356. Assert.AreEqual(c, 4);
  357. Assert.AreEqual(d, 5);
  358. Assert.AreEqual(e, 6);
  359. cb(x);
  360. return x;
  361. };
  362. Action<IAsyncResult> end = iar => { Assert.AreSame(x, iar); };
  363. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6).ToEnumerable().ToArray();
  364. Assert.IsTrue(res.SequenceEqual(new[] { new Unit() }));
  365. }
  366. [TestMethod]
  367. public void FromAsyncPattern5_Error()
  368. {
  369. var x = new Result();
  370. var ex = new Exception();
  371. Func<int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, cb, o) => { cb(x); return x; };
  372. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); throw ex; };
  373. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6).Materialize().ToEnumerable().ToArray();
  374. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  375. }
  376. [TestMethod]
  377. public void FromAsyncPattern5_ErrorBegin()
  378. {
  379. var x = new Result();
  380. var ex = new Exception();
  381. Func<int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, cb, o) => { cb(x); throw ex; };
  382. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 0; };
  383. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6).Materialize().ToEnumerable().ToArray();
  384. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  385. }
  386. [TestMethod]
  387. public void FromAsyncPattern6()
  388. {
  389. var x = new Result();
  390. Func<int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, cb, _) =>
  391. {
  392. Assert.AreEqual(a, 2);
  393. Assert.AreEqual(b, 3);
  394. Assert.AreEqual(c, 4);
  395. Assert.AreEqual(d, 5);
  396. Assert.AreEqual(e, 6);
  397. Assert.AreEqual(f, 7);
  398. cb(x);
  399. return x;
  400. };
  401. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 1; };
  402. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7).Materialize().ToEnumerable().ToArray();
  403. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnNext<int>(1), Notification.CreateOnCompleted<int>() }));
  404. }
  405. [TestMethod]
  406. public void FromAsyncPatternAction6()
  407. {
  408. var x = new Result();
  409. Func<int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, cb, _) =>
  410. {
  411. Assert.AreEqual(a, 2);
  412. Assert.AreEqual(b, 3);
  413. Assert.AreEqual(c, 4);
  414. Assert.AreEqual(d, 5);
  415. Assert.AreEqual(e, 6);
  416. Assert.AreEqual(f, 7);
  417. cb(x);
  418. return x;
  419. };
  420. Action<IAsyncResult> end = iar => { Assert.AreSame(x, iar); };
  421. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7).ToEnumerable().ToArray();
  422. Assert.IsTrue(res.SequenceEqual(new[] { new Unit() }));
  423. }
  424. [TestMethod]
  425. public void FromAsyncPattern6_Error()
  426. {
  427. var x = new Result();
  428. var ex = new Exception();
  429. Func<int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, cb, o) => { cb(x); return x; };
  430. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); throw ex; };
  431. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7).Materialize().ToEnumerable().ToArray();
  432. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  433. }
  434. [TestMethod]
  435. public void FromAsyncPattern6_ErrorBegin()
  436. {
  437. var x = new Result();
  438. var ex = new Exception();
  439. Func<int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, cb, o) => { cb(x); throw ex; };
  440. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 0; };
  441. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7).Materialize().ToEnumerable().ToArray();
  442. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  443. }
  444. [TestMethod]
  445. public void FromAsyncPattern7()
  446. {
  447. var x = new Result();
  448. Func<int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, cb, _) =>
  449. {
  450. Assert.AreEqual(a, 2);
  451. Assert.AreEqual(b, 3);
  452. Assert.AreEqual(c, 4);
  453. Assert.AreEqual(d, 5);
  454. Assert.AreEqual(e, 6);
  455. Assert.AreEqual(f, 7);
  456. Assert.AreEqual(g, 8);
  457. cb(x);
  458. return x;
  459. };
  460. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 1; };
  461. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8).Materialize().ToEnumerable().ToArray();
  462. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnNext<int>(1), Notification.CreateOnCompleted<int>() }));
  463. }
  464. [TestMethod]
  465. public void FromAsyncPatternAction7()
  466. {
  467. var x = new Result();
  468. Func<int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, cb, _) =>
  469. {
  470. Assert.AreEqual(a, 2);
  471. Assert.AreEqual(b, 3);
  472. Assert.AreEqual(c, 4);
  473. Assert.AreEqual(d, 5);
  474. Assert.AreEqual(e, 6);
  475. Assert.AreEqual(f, 7);
  476. Assert.AreEqual(g, 8);
  477. cb(x);
  478. return x;
  479. };
  480. Action<IAsyncResult> end = iar => { Assert.AreSame(x, iar); };
  481. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8).ToEnumerable().ToArray();
  482. Assert.IsTrue(res.SequenceEqual(new[] { new Unit() }));
  483. }
  484. [TestMethod]
  485. public void FromAsyncPattern7_Error()
  486. {
  487. var x = new Result();
  488. var ex = new Exception();
  489. Func<int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, cb, o) => { cb(x); return x; };
  490. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); throw ex; };
  491. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8).Materialize().ToEnumerable().ToArray();
  492. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  493. }
  494. [TestMethod]
  495. public void FromAsyncPattern7_ErrorBegin()
  496. {
  497. var x = new Result();
  498. var ex = new Exception();
  499. Func<int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, cb, o) => { cb(x); throw ex; };
  500. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 0; };
  501. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8).Materialize().ToEnumerable().ToArray();
  502. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  503. }
  504. [TestMethod]
  505. public void FromAsyncPattern8()
  506. {
  507. var x = new Result();
  508. Func<int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, cb, _) =>
  509. {
  510. Assert.AreEqual(a, 2);
  511. Assert.AreEqual(b, 3);
  512. Assert.AreEqual(c, 4);
  513. Assert.AreEqual(d, 5);
  514. Assert.AreEqual(e, 6);
  515. Assert.AreEqual(f, 7);
  516. Assert.AreEqual(g, 8);
  517. Assert.AreEqual(h, 9);
  518. cb(x);
  519. return x;
  520. };
  521. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 1; };
  522. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9).Materialize().ToEnumerable().ToArray();
  523. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnNext<int>(1), Notification.CreateOnCompleted<int>() }));
  524. }
  525. [TestMethod]
  526. public void FromAsyncPatternAction8()
  527. {
  528. var x = new Result();
  529. Func<int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, cb, _) =>
  530. {
  531. Assert.AreEqual(a, 2);
  532. Assert.AreEqual(b, 3);
  533. Assert.AreEqual(c, 4);
  534. Assert.AreEqual(d, 5);
  535. Assert.AreEqual(e, 6);
  536. Assert.AreEqual(f, 7);
  537. Assert.AreEqual(g, 8);
  538. Assert.AreEqual(h, 9);
  539. cb(x);
  540. return x;
  541. };
  542. Action<IAsyncResult> end = iar => { Assert.AreSame(x, iar); };
  543. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9).ToEnumerable().ToArray();
  544. Assert.IsTrue(res.SequenceEqual(new[] { new Unit() }));
  545. }
  546. [TestMethod]
  547. public void FromAsyncPattern8_Error()
  548. {
  549. var x = new Result();
  550. var ex = new Exception();
  551. Func<int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, cb, o) => { cb(x); return x; };
  552. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); throw ex; };
  553. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9).Materialize().ToEnumerable().ToArray();
  554. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  555. }
  556. [TestMethod]
  557. public void FromAsyncPattern8_ErrorBegin()
  558. {
  559. var x = new Result();
  560. var ex = new Exception();
  561. Func<int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, cb, o) => { cb(x); throw ex; };
  562. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 0; };
  563. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9).Materialize().ToEnumerable().ToArray();
  564. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  565. }
  566. [TestMethod]
  567. public void FromAsyncPattern9()
  568. {
  569. var x = new Result();
  570. Func<int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, cb, _) =>
  571. {
  572. Assert.AreEqual(a, 2);
  573. Assert.AreEqual(b, 3);
  574. Assert.AreEqual(c, 4);
  575. Assert.AreEqual(d, 5);
  576. Assert.AreEqual(e, 6);
  577. Assert.AreEqual(f, 7);
  578. Assert.AreEqual(g, 8);
  579. Assert.AreEqual(h, 9);
  580. Assert.AreEqual(i, 10);
  581. cb(x);
  582. return x;
  583. };
  584. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 1; };
  585. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10).Materialize().ToEnumerable().ToArray();
  586. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnNext<int>(1), Notification.CreateOnCompleted<int>() }));
  587. }
  588. [TestMethod]
  589. public void FromAsyncPatternAction9()
  590. {
  591. var x = new Result();
  592. Func<int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, cb, _) =>
  593. {
  594. Assert.AreEqual(a, 2);
  595. Assert.AreEqual(b, 3);
  596. Assert.AreEqual(c, 4);
  597. Assert.AreEqual(d, 5);
  598. Assert.AreEqual(e, 6);
  599. Assert.AreEqual(f, 7);
  600. Assert.AreEqual(g, 8);
  601. Assert.AreEqual(h, 9);
  602. Assert.AreEqual(i, 10);
  603. cb(x);
  604. return x;
  605. };
  606. Action<IAsyncResult> end = iar => { Assert.AreSame(x, iar); };
  607. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10).ToEnumerable().ToArray();
  608. Assert.IsTrue(res.SequenceEqual(new[] { new Unit() }));
  609. }
  610. [TestMethod]
  611. public void FromAsyncPattern9_Error()
  612. {
  613. var x = new Result();
  614. var ex = new Exception();
  615. Func<int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, cb, o) => { cb(x); return x; };
  616. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); throw ex; };
  617. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10).Materialize().ToEnumerable().ToArray();
  618. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  619. }
  620. [TestMethod]
  621. public void FromAsyncPattern9_ErrorBegin()
  622. {
  623. var x = new Result();
  624. var ex = new Exception();
  625. Func<int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, cb, o) => { cb(x); throw ex; };
  626. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 0; };
  627. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10).Materialize().ToEnumerable().ToArray();
  628. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  629. }
  630. [TestMethod]
  631. public void FromAsyncPattern10()
  632. {
  633. var x = new Result();
  634. Func<int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, cb, _) =>
  635. {
  636. Assert.AreEqual(a, 2);
  637. Assert.AreEqual(b, 3);
  638. Assert.AreEqual(c, 4);
  639. Assert.AreEqual(d, 5);
  640. Assert.AreEqual(e, 6);
  641. Assert.AreEqual(f, 7);
  642. Assert.AreEqual(g, 8);
  643. Assert.AreEqual(h, 9);
  644. Assert.AreEqual(i, 10);
  645. Assert.AreEqual(j, 11);
  646. cb(x);
  647. return x;
  648. };
  649. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 1; };
  650. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11).Materialize().ToEnumerable().ToArray();
  651. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnNext<int>(1), Notification.CreateOnCompleted<int>() }));
  652. }
  653. [TestMethod]
  654. public void FromAsyncPatternAction10()
  655. {
  656. var x = new Result();
  657. Func<int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, cb, _) =>
  658. {
  659. Assert.AreEqual(a, 2);
  660. Assert.AreEqual(b, 3);
  661. Assert.AreEqual(c, 4);
  662. Assert.AreEqual(d, 5);
  663. Assert.AreEqual(e, 6);
  664. Assert.AreEqual(f, 7);
  665. Assert.AreEqual(g, 8);
  666. Assert.AreEqual(h, 9);
  667. Assert.AreEqual(i, 10);
  668. Assert.AreEqual(j, 11);
  669. cb(x);
  670. return x;
  671. };
  672. Action<IAsyncResult> end = iar => { Assert.AreSame(x, iar); };
  673. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11).ToEnumerable().ToArray();
  674. Assert.IsTrue(res.SequenceEqual(new[] { new Unit() }));
  675. }
  676. [TestMethod]
  677. public void FromAsyncPattern10_Error()
  678. {
  679. var x = new Result();
  680. var ex = new Exception();
  681. Func<int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, cb, o) => { cb(x); return x; };
  682. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); throw ex; };
  683. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11).Materialize().ToEnumerable().ToArray();
  684. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  685. }
  686. [TestMethod]
  687. public void FromAsyncPattern10_ErrorBegin()
  688. {
  689. var x = new Result();
  690. var ex = new Exception();
  691. Func<int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, cb, o) => { cb(x); throw ex; };
  692. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 0; };
  693. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11).Materialize().ToEnumerable().ToArray();
  694. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  695. }
  696. [TestMethod]
  697. public void FromAsyncPattern11()
  698. {
  699. var x = new Result();
  700. Func<int, int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, k, cb, _) =>
  701. {
  702. Assert.AreEqual(a, 2);
  703. Assert.AreEqual(b, 3);
  704. Assert.AreEqual(c, 4);
  705. Assert.AreEqual(d, 5);
  706. Assert.AreEqual(e, 6);
  707. Assert.AreEqual(f, 7);
  708. Assert.AreEqual(g, 8);
  709. Assert.AreEqual(h, 9);
  710. Assert.AreEqual(i, 10);
  711. Assert.AreEqual(j, 11);
  712. Assert.AreEqual(k, 12);
  713. cb(x);
  714. return x;
  715. };
  716. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 1; };
  717. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12).Materialize().ToEnumerable().ToArray();
  718. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnNext<int>(1), Notification.CreateOnCompleted<int>() }));
  719. }
  720. [TestMethod]
  721. public void FromAsyncPatternAction11()
  722. {
  723. var x = new Result();
  724. Func<int, int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, k, cb, _) =>
  725. {
  726. Assert.AreEqual(a, 2);
  727. Assert.AreEqual(b, 3);
  728. Assert.AreEqual(c, 4);
  729. Assert.AreEqual(d, 5);
  730. Assert.AreEqual(e, 6);
  731. Assert.AreEqual(f, 7);
  732. Assert.AreEqual(g, 8);
  733. Assert.AreEqual(h, 9);
  734. Assert.AreEqual(i, 10);
  735. Assert.AreEqual(j, 11);
  736. Assert.AreEqual(k, 12);
  737. cb(x);
  738. return x;
  739. };
  740. Action<IAsyncResult> end = iar => { Assert.AreSame(x, iar); };
  741. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12).ToEnumerable().ToArray();
  742. Assert.IsTrue(res.SequenceEqual(new[] { new Unit() }));
  743. }
  744. [TestMethod]
  745. public void FromAsyncPattern11_Error()
  746. {
  747. var x = new Result();
  748. var ex = new Exception();
  749. Func<int, int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, k, cb, o) => { cb(x); return x; };
  750. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); throw ex; };
  751. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12).Materialize().ToEnumerable().ToArray();
  752. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  753. }
  754. [TestMethod]
  755. public void FromAsyncPattern11_ErrorBegin()
  756. {
  757. var x = new Result();
  758. var ex = new Exception();
  759. Func<int, int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, k, cb, o) => { cb(x); throw ex; };
  760. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 0; };
  761. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12).Materialize().ToEnumerable().ToArray();
  762. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  763. }
  764. [TestMethod]
  765. public void FromAsyncPattern12()
  766. {
  767. var x = new Result();
  768. Func<int, int, int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, k, l, cb, _) =>
  769. {
  770. Assert.AreEqual(a, 2);
  771. Assert.AreEqual(b, 3);
  772. Assert.AreEqual(c, 4);
  773. Assert.AreEqual(d, 5);
  774. Assert.AreEqual(e, 6);
  775. Assert.AreEqual(f, 7);
  776. Assert.AreEqual(g, 8);
  777. Assert.AreEqual(h, 9);
  778. Assert.AreEqual(i, 10);
  779. Assert.AreEqual(j, 11);
  780. Assert.AreEqual(k, 12);
  781. Assert.AreEqual(l, 13);
  782. cb(x);
  783. return x;
  784. };
  785. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 1; };
  786. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13).Materialize().ToEnumerable().ToArray();
  787. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnNext<int>(1), Notification.CreateOnCompleted<int>() }));
  788. }
  789. [TestMethod]
  790. public void FromAsyncPatternAction12()
  791. {
  792. var x = new Result();
  793. Func<int, int, int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, k, l, cb, _) =>
  794. {
  795. Assert.AreEqual(a, 2);
  796. Assert.AreEqual(b, 3);
  797. Assert.AreEqual(c, 4);
  798. Assert.AreEqual(d, 5);
  799. Assert.AreEqual(e, 6);
  800. Assert.AreEqual(f, 7);
  801. Assert.AreEqual(g, 8);
  802. Assert.AreEqual(h, 9);
  803. Assert.AreEqual(i, 10);
  804. Assert.AreEqual(j, 11);
  805. Assert.AreEqual(k, 12);
  806. Assert.AreEqual(l, 13);
  807. cb(x);
  808. return x;
  809. };
  810. Action<IAsyncResult> end = iar => { Assert.AreSame(x, iar); };
  811. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13).ToEnumerable().ToArray();
  812. Assert.IsTrue(res.SequenceEqual(new[] { new Unit() }));
  813. }
  814. [TestMethod]
  815. public void FromAsyncPattern12_Error()
  816. {
  817. var x = new Result();
  818. var ex = new Exception();
  819. Func<int, int, int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, k, l, cb, o) => { cb(x); return x; };
  820. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); throw ex; };
  821. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13).Materialize().ToEnumerable().ToArray();
  822. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  823. }
  824. [TestMethod]
  825. public void FromAsyncPattern12_ErrorBegin()
  826. {
  827. var x = new Result();
  828. var ex = new Exception();
  829. Func<int, int, int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, k, l, cb, o) => { cb(x); throw ex; };
  830. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 0; };
  831. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13).Materialize().ToEnumerable().ToArray();
  832. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  833. }
  834. [TestMethod]
  835. public void FromAsyncPattern13()
  836. {
  837. var x = new Result();
  838. Func<int, int, int, int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, k, l, m, cb, _) =>
  839. {
  840. Assert.AreEqual(a, 2);
  841. Assert.AreEqual(b, 3);
  842. Assert.AreEqual(c, 4);
  843. Assert.AreEqual(d, 5);
  844. Assert.AreEqual(e, 6);
  845. Assert.AreEqual(f, 7);
  846. Assert.AreEqual(g, 8);
  847. Assert.AreEqual(h, 9);
  848. Assert.AreEqual(i, 10);
  849. Assert.AreEqual(j, 11);
  850. Assert.AreEqual(k, 12);
  851. Assert.AreEqual(l, 13);
  852. Assert.AreEqual(m, 14);
  853. cb(x);
  854. return x;
  855. };
  856. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 1; };
  857. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14).Materialize().ToEnumerable().ToArray();
  858. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnNext<int>(1), Notification.CreateOnCompleted<int>() }));
  859. }
  860. [TestMethod]
  861. public void FromAsyncPatternAction13()
  862. {
  863. var x = new Result();
  864. Func<int, int, int, int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, k, l, m, cb, _) =>
  865. {
  866. Assert.AreEqual(a, 2);
  867. Assert.AreEqual(b, 3);
  868. Assert.AreEqual(c, 4);
  869. Assert.AreEqual(d, 5);
  870. Assert.AreEqual(e, 6);
  871. Assert.AreEqual(f, 7);
  872. Assert.AreEqual(g, 8);
  873. Assert.AreEqual(h, 9);
  874. Assert.AreEqual(i, 10);
  875. Assert.AreEqual(j, 11);
  876. Assert.AreEqual(k, 12);
  877. Assert.AreEqual(l, 13);
  878. Assert.AreEqual(m, 14);
  879. cb(x);
  880. return x;
  881. };
  882. Action<IAsyncResult> end = iar => { Assert.AreSame(x, iar); };
  883. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14).ToEnumerable().ToArray();
  884. Assert.IsTrue(res.SequenceEqual(new[] { new Unit() }));
  885. }
  886. [TestMethod]
  887. public void FromAsyncPattern13_Error()
  888. {
  889. var x = new Result();
  890. var ex = new Exception();
  891. Func<int, int, int, int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, k, l, m, cb, o) => { cb(x); return x; };
  892. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); throw ex; };
  893. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14).Materialize().ToEnumerable().ToArray();
  894. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  895. }
  896. [TestMethod]
  897. public void FromAsyncPattern13_ErrorBegin()
  898. {
  899. var x = new Result();
  900. var ex = new Exception();
  901. Func<int, int, int, int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, k, l, m, cb, o) => { cb(x); throw ex; };
  902. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 0; };
  903. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14).Materialize().ToEnumerable().ToArray();
  904. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  905. }
  906. [TestMethod]
  907. public void FromAsyncPattern14()
  908. {
  909. var x = new Result();
  910. Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, k, l, m, n, cb, _) =>
  911. {
  912. Assert.AreEqual(a, 2);
  913. Assert.AreEqual(b, 3);
  914. Assert.AreEqual(c, 4);
  915. Assert.AreEqual(d, 5);
  916. Assert.AreEqual(e, 6);
  917. Assert.AreEqual(f, 7);
  918. Assert.AreEqual(g, 8);
  919. Assert.AreEqual(h, 9);
  920. Assert.AreEqual(i, 10);
  921. Assert.AreEqual(j, 11);
  922. Assert.AreEqual(k, 12);
  923. Assert.AreEqual(l, 13);
  924. Assert.AreEqual(m, 14);
  925. Assert.AreEqual(n, 15);
  926. cb(x);
  927. return x;
  928. };
  929. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 1; };
  930. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15).Materialize().ToEnumerable().ToArray();
  931. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnNext<int>(1), Notification.CreateOnCompleted<int>() }));
  932. }
  933. [TestMethod]
  934. public void FromAsyncPatternAction14()
  935. {
  936. var x = new Result();
  937. Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, k, l, m, n, cb, _) =>
  938. {
  939. Assert.AreEqual(a, 2);
  940. Assert.AreEqual(b, 3);
  941. Assert.AreEqual(c, 4);
  942. Assert.AreEqual(d, 5);
  943. Assert.AreEqual(e, 6);
  944. Assert.AreEqual(f, 7);
  945. Assert.AreEqual(g, 8);
  946. Assert.AreEqual(h, 9);
  947. Assert.AreEqual(i, 10);
  948. Assert.AreEqual(j, 11);
  949. Assert.AreEqual(k, 12);
  950. Assert.AreEqual(l, 13);
  951. Assert.AreEqual(m, 14);
  952. Assert.AreEqual(n, 15);
  953. cb(x);
  954. return x;
  955. };
  956. Action<IAsyncResult> end = iar => { Assert.AreSame(x, iar); };
  957. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15).ToEnumerable().ToArray();
  958. Assert.IsTrue(res.SequenceEqual(new[] { new Unit() }));
  959. }
  960. [TestMethod]
  961. public void FromAsyncPattern14_Error()
  962. {
  963. var x = new Result();
  964. var ex = new Exception();
  965. Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, k, l, m, n, cb, o) => { cb(x); return x; };
  966. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); throw ex; };
  967. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15).Materialize().ToEnumerable().ToArray();
  968. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  969. }
  970. [TestMethod]
  971. public void FromAsyncPattern14_ErrorBegin()
  972. {
  973. var x = new Result();
  974. var ex = new Exception();
  975. Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, AsyncCallback, object, IAsyncResult> begin = (a, b, c, d, e, f, g, h, i, j, k, l, m, n, cb, o) => { cb(x); throw ex; };
  976. Func<IAsyncResult, int> end = iar => { Assert.AreSame(x, iar); return 0; };
  977. var res = Observable.FromAsyncPattern(begin, end)(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15).Materialize().ToEnumerable().ToArray();
  978. Assert.IsTrue(res.SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  979. }
  980. #endif
  981. class Result : IAsyncResult
  982. {
  983. public object AsyncState
  984. {
  985. get { throw new NotImplementedException(); }
  986. }
  987. public System.Threading.WaitHandle AsyncWaitHandle
  988. {
  989. get { throw new NotImplementedException(); }
  990. }
  991. public bool CompletedSynchronously
  992. {
  993. get { throw new NotImplementedException(); }
  994. }
  995. public bool IsCompleted
  996. {
  997. get { throw new NotImplementedException(); }
  998. }
  999. }
  1000. #endregion
  1001. #region Start
  1002. [TestMethod]
  1003. public void Start_ArgumentChecking()
  1004. {
  1005. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.Start(null));
  1006. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.Start<int>((Func<int>)null));
  1007. var someScheduler = new TestScheduler();
  1008. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.Start(null, someScheduler));
  1009. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.Start<int>(null, someScheduler));
  1010. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.Start(() => { }, null));
  1011. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.Start<int>(() => 1, null));
  1012. }
  1013. [TestMethod]
  1014. public void Start_Action()
  1015. {
  1016. bool done = false;
  1017. Assert.IsTrue(Observable.Start(() => { done = true; }).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1018. Assert.IsTrue(done, "done");
  1019. }
  1020. [TestMethod]
  1021. public void Start_Action2()
  1022. {
  1023. var scheduler = new TestScheduler();
  1024. bool done = false;
  1025. var res = scheduler.Start(() =>
  1026. Observable.Start(() => { done = true; }, scheduler)
  1027. );
  1028. res.Messages.AssertEqual(
  1029. OnNext(200, new Unit()),
  1030. OnCompleted<Unit>(200)
  1031. );
  1032. Assert.IsTrue(done, "done");
  1033. }
  1034. [TestMethod]
  1035. public void Start_ActionError()
  1036. {
  1037. var ex = new Exception();
  1038. var res = Observable.Start(() => { throw ex; }).Materialize().ToEnumerable();
  1039. Assert.IsTrue(res.SequenceEqual(new[] {
  1040. Notification.CreateOnError<Unit>(ex)
  1041. }));
  1042. }
  1043. [TestMethod]
  1044. public void Start_Func()
  1045. {
  1046. var res = Observable.Start(() => 1).ToEnumerable();
  1047. Assert.IsTrue(res.SequenceEqual(new[] {
  1048. 1
  1049. }));
  1050. }
  1051. [TestMethod]
  1052. public void Start_Func2()
  1053. {
  1054. var scheduler = new TestScheduler();
  1055. var res = scheduler.Start(() =>
  1056. Observable.Start(() => 1, scheduler)
  1057. );
  1058. res.Messages.AssertEqual(
  1059. OnNext(200, 1),
  1060. OnCompleted<int>(200)
  1061. );
  1062. }
  1063. [TestMethod]
  1064. public void Start_FuncError()
  1065. {
  1066. var ex = new Exception();
  1067. var res = Observable.Start<int>(() => { throw ex; }).Materialize().ToEnumerable();
  1068. Assert.IsTrue(res.SequenceEqual(new[] {
  1069. Notification.CreateOnError<int>(ex)
  1070. }));
  1071. }
  1072. #endregion
  1073. #region StartAsync
  1074. #if !NO_TPL
  1075. #region Func
  1076. [TestMethod]
  1077. public void StartAsync_Func_ArgumentChecking()
  1078. {
  1079. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.StartAsync<int>(default(Func<Task<int>>)));
  1080. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.StartAsync<int>(default(Func<CancellationToken, Task<int>>)));
  1081. }
  1082. [TestMethod]
  1083. public void StartAsync_Func_Success()
  1084. {
  1085. var n = 42;
  1086. var i = 0;
  1087. var xs = Observable.StartAsync(() =>
  1088. {
  1089. i++;
  1090. return Task.Factory.StartNew(() => n);
  1091. });
  1092. Assert.AreEqual(n, xs.Single());
  1093. Assert.AreEqual(1, i);
  1094. Assert.AreEqual(n, xs.Single());
  1095. Assert.AreEqual(1, i);
  1096. }
  1097. [TestMethod]
  1098. public void StartAsync_Func_Throw_Synchronous()
  1099. {
  1100. var ex = new Exception();
  1101. var xs = Observable.StartAsync<int>(() =>
  1102. {
  1103. throw ex;
  1104. });
  1105. ReactiveAssert.Throws(ex, () => xs.Single());
  1106. }
  1107. [TestMethod]
  1108. public void StartAsync_Func_Throw_Asynchronous()
  1109. {
  1110. var ex = new Exception();
  1111. var xs = Observable.StartAsync<int>(() =>
  1112. Task.Factory.StartNew<int>(() =>
  1113. {
  1114. throw ex;
  1115. })
  1116. );
  1117. ReactiveAssert.Throws(ex, () => xs.Single());
  1118. }
  1119. [TestMethod]
  1120. public void StartAsync_FuncWithCancel_Success()
  1121. {
  1122. var n = 42;
  1123. var i = 0;
  1124. var xs = Observable.StartAsync(ct =>
  1125. {
  1126. i++;
  1127. return Task.Factory.StartNew(() => n);
  1128. });
  1129. Assert.AreEqual(n, xs.Single());
  1130. Assert.AreEqual(1, i);
  1131. Assert.AreEqual(n, xs.Single());
  1132. Assert.AreEqual(1, i);
  1133. }
  1134. [TestMethod]
  1135. public void StartAsync_FuncWithCancel_Throw_Synchronous()
  1136. {
  1137. var ex = new Exception();
  1138. var xs = Observable.StartAsync<int>(ct =>
  1139. {
  1140. throw ex;
  1141. });
  1142. ReactiveAssert.Throws(ex, () => xs.Single());
  1143. }
  1144. [TestMethod]
  1145. public void StartAsync_FuncWithCancel_Throw_Asynchronous()
  1146. {
  1147. var ex = new Exception();
  1148. var xs = Observable.StartAsync<int>(ct =>
  1149. Task.Factory.StartNew<int>(() => { throw ex; })
  1150. );
  1151. ReactiveAssert.Throws(ex, () => xs.Single());
  1152. }
  1153. [TestMethod]
  1154. public void StartAsync_FuncWithCancel_Cancel()
  1155. {
  1156. var N = 10;
  1157. for (int n = 0; n < N; n++)
  1158. {
  1159. var e = new ManualResetEvent(false);
  1160. var f = new ManualResetEvent(false);
  1161. var t = default(Task<int>);
  1162. var xs = Observable.StartAsync(ct =>
  1163. t = Task.Factory.StartNew<int>(() =>
  1164. {
  1165. try
  1166. {
  1167. e.Set();
  1168. while (true)
  1169. ct.ThrowIfCancellationRequested();
  1170. }
  1171. finally
  1172. {
  1173. f.Set();
  1174. }
  1175. })
  1176. );
  1177. e.WaitOne();
  1178. var d = xs.Subscribe(_ => { });
  1179. d.Dispose();
  1180. f.WaitOne();
  1181. while (!t.IsCompleted)
  1182. ;
  1183. ReactiveAssert.Throws<OperationCanceledException>(() => xs.Single());
  1184. }
  1185. }
  1186. #endregion
  1187. #region Action
  1188. [TestMethod]
  1189. public void StartAsync_Action_ArgumentChecking()
  1190. {
  1191. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.StartAsync(default(Func<Task>)));
  1192. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.StartAsync(default(Func<CancellationToken, Task>)));
  1193. }
  1194. [TestMethod]
  1195. public void StartAsync_Action_Success()
  1196. {
  1197. var i = 0;
  1198. var xs = Observable.StartAsync(() =>
  1199. {
  1200. i++;
  1201. return Task.Factory.StartNew(() => { });
  1202. });
  1203. Assert.AreEqual(Unit.Default, xs.Single());
  1204. Assert.AreEqual(1, i);
  1205. Assert.AreEqual(Unit.Default, xs.Single());
  1206. Assert.AreEqual(1, i);
  1207. }
  1208. [TestMethod]
  1209. public void StartAsync_Action_Throw_Synchronous()
  1210. {
  1211. var ex = new Exception();
  1212. var xs = Observable.StartAsync(() =>
  1213. {
  1214. throw ex;
  1215. });
  1216. ReactiveAssert.Throws(ex, () => xs.Single());
  1217. }
  1218. [TestMethod]
  1219. public void StartAsync_Action_Throw_Asynchronous()
  1220. {
  1221. var ex = new Exception();
  1222. var xs = Observable.StartAsync(() =>
  1223. Task.Factory.StartNew(() => { throw ex; })
  1224. );
  1225. ReactiveAssert.Throws(ex, () => xs.Single());
  1226. }
  1227. [TestMethod]
  1228. public void StartAsync_ActionWithCancel_Success()
  1229. {
  1230. var i = 0;
  1231. var xs = Observable.StartAsync(ct =>
  1232. {
  1233. i++;
  1234. return Task.Factory.StartNew(() => { });
  1235. });
  1236. Assert.AreEqual(Unit.Default, xs.Single());
  1237. Assert.AreEqual(1, i);
  1238. Assert.AreEqual(Unit.Default, xs.Single());
  1239. Assert.AreEqual(1, i);
  1240. }
  1241. [TestMethod]
  1242. public void StartAsync_ActionWithCancel_Throw_Synchronous()
  1243. {
  1244. var ex = new Exception();
  1245. var xs = Observable.StartAsync(ct =>
  1246. {
  1247. throw ex;
  1248. });
  1249. ReactiveAssert.Throws(ex, () => xs.Single());
  1250. }
  1251. [TestMethod]
  1252. public void StartAsync_ActionWithCancel_Throw_Asynchronous()
  1253. {
  1254. var ex = new Exception();
  1255. var xs = Observable.StartAsync(ct =>
  1256. Task.Factory.StartNew(() => { throw ex; })
  1257. );
  1258. ReactiveAssert.Throws(ex, () => xs.Single());
  1259. }
  1260. [TestMethod]
  1261. public void StartAsync_ActionWithCancel_Cancel()
  1262. {
  1263. var N = 10;
  1264. for (int n = 0; n < N; n++)
  1265. {
  1266. var e = new ManualResetEvent(false);
  1267. var f = new ManualResetEvent(false);
  1268. var t = default(Task);
  1269. var xs = Observable.StartAsync(ct =>
  1270. t = Task.Factory.StartNew(() =>
  1271. {
  1272. try
  1273. {
  1274. e.Set();
  1275. while (true)
  1276. ct.ThrowIfCancellationRequested();
  1277. }
  1278. finally
  1279. {
  1280. f.Set();
  1281. }
  1282. })
  1283. );
  1284. e.WaitOne();
  1285. var d = xs.Subscribe(_ => { });
  1286. d.Dispose();
  1287. f.WaitOne();
  1288. while (!t.IsCompleted)
  1289. ;
  1290. ReactiveAssert.Throws<OperationCanceledException>(() => xs.Single());
  1291. }
  1292. }
  1293. #endregion
  1294. #endif
  1295. #endregion
  1296. #region FromAsync
  1297. #if !NO_TPL
  1298. #region Func
  1299. [TestMethod]
  1300. public void FromAsync_Func_Success()
  1301. {
  1302. var n = 42;
  1303. var i = 0;
  1304. var xs = Observable.FromAsync(() =>
  1305. {
  1306. i++;
  1307. return Task.Factory.StartNew(() => n);
  1308. });
  1309. Assert.AreEqual(n, xs.Single());
  1310. Assert.AreEqual(1, i);
  1311. Assert.AreEqual(n, xs.Single());
  1312. Assert.AreEqual(2, i);
  1313. }
  1314. [TestMethod]
  1315. public void FromAsync_Func_Throw_Synchronous()
  1316. {
  1317. var ex = new Exception();
  1318. var xs = Observable.FromAsync<int>(() =>
  1319. {
  1320. throw ex;
  1321. });
  1322. ReactiveAssert.Throws(ex, () => xs.Single());
  1323. }
  1324. [TestMethod]
  1325. public void FromAsync_Func_Throw_Asynchronous()
  1326. {
  1327. var ex = new Exception();
  1328. var xs = Observable.FromAsync<int>(() =>
  1329. Task.Factory.StartNew<int>(() => { throw ex; })
  1330. );
  1331. ReactiveAssert.Throws(ex, () => xs.Single());
  1332. }
  1333. [TestMethod]
  1334. public void FromAsync_FuncWithCancel_Success()
  1335. {
  1336. var n = 42;
  1337. var i = 0;
  1338. var xs = Observable.FromAsync(ct =>
  1339. {
  1340. i++;
  1341. return Task.Factory.StartNew(() => n);
  1342. });
  1343. Assert.AreEqual(n, xs.Single());
  1344. Assert.AreEqual(1, i);
  1345. Assert.AreEqual(n, xs.Single());
  1346. Assert.AreEqual(2, i);
  1347. }
  1348. [TestMethod]
  1349. public void FromAsync_FuncWithCancel_Throw_Synchronous()
  1350. {
  1351. var ex = new Exception();
  1352. var xs = Observable.FromAsync<int>(ct =>
  1353. {
  1354. throw ex;
  1355. });
  1356. ReactiveAssert.Throws(ex, () => xs.Single());
  1357. }
  1358. [TestMethod]
  1359. public void FromAsync_FuncWithCancel_Throw_Asynchronous()
  1360. {
  1361. var ex = new Exception();
  1362. var xs = Observable.FromAsync<int>(ct =>
  1363. Task.Factory.StartNew<int>(() => { throw ex; })
  1364. );
  1365. ReactiveAssert.Throws(ex, () => xs.Single());
  1366. }
  1367. [TestMethod]
  1368. public void FromAsync_FuncWithCancel_Cancel()
  1369. {
  1370. var e = new ManualResetEvent(false);
  1371. var f = new ManualResetEvent(false);
  1372. var t = default(Task<int>);
  1373. var xs = Observable.FromAsync(ct =>
  1374. t = Task.Factory.StartNew<int>(() =>
  1375. {
  1376. try
  1377. {
  1378. e.Set();
  1379. while (true)
  1380. ct.ThrowIfCancellationRequested();
  1381. }
  1382. finally
  1383. {
  1384. f.Set();
  1385. }
  1386. })
  1387. );
  1388. var d = xs.Subscribe(_ => { });
  1389. e.WaitOne();
  1390. d.Dispose();
  1391. f.WaitOne();
  1392. while (!t.IsCompleted)
  1393. ;
  1394. }
  1395. #endregion
  1396. #region Action
  1397. [TestMethod]
  1398. public void FromAsync_Action_Success()
  1399. {
  1400. var i = 0;
  1401. var xs = Observable.FromAsync(() =>
  1402. {
  1403. i++;
  1404. return Task.Factory.StartNew(() => { });
  1405. });
  1406. Assert.AreEqual(Unit.Default, xs.Single());
  1407. Assert.AreEqual(1, i);
  1408. Assert.AreEqual(Unit.Default, xs.Single());
  1409. Assert.AreEqual(2, i);
  1410. }
  1411. [TestMethod]
  1412. public void FromAsync_Action_Throw_Synchronous()
  1413. {
  1414. var ex = new Exception();
  1415. var xs = Observable.FromAsync(() =>
  1416. {
  1417. throw ex;
  1418. });
  1419. ReactiveAssert.Throws(ex, () => xs.Single());
  1420. }
  1421. [TestMethod]
  1422. public void FromAsync_Action_Throw_Asynchronous()
  1423. {
  1424. var ex = new Exception();
  1425. var xs = Observable.FromAsync(() =>
  1426. Task.Factory.StartNew(() => { throw ex; })
  1427. );
  1428. ReactiveAssert.Throws(ex, () => xs.Single());
  1429. }
  1430. [TestMethod]
  1431. public void FromAsync_ActionWithCancel_Success()
  1432. {
  1433. var i = 0;
  1434. var xs = Observable.FromAsync(ct =>
  1435. {
  1436. i++;
  1437. return Task.Factory.StartNew(() => { });
  1438. });
  1439. Assert.AreEqual(Unit.Default, xs.Single());
  1440. Assert.AreEqual(1, i);
  1441. Assert.AreEqual(Unit.Default, xs.Single());
  1442. Assert.AreEqual(2, i);
  1443. }
  1444. [TestMethod]
  1445. public void FromAsync_ActionWithCancel_Throw_Synchronous()
  1446. {
  1447. var ex = new Exception();
  1448. var xs = Observable.FromAsync(ct =>
  1449. {
  1450. throw ex;
  1451. });
  1452. ReactiveAssert.Throws(ex, () => xs.Single());
  1453. }
  1454. [TestMethod]
  1455. public void FromAsync_ActionWithCancel_Throw_Asynchronous()
  1456. {
  1457. var ex = new Exception();
  1458. var xs = Observable.FromAsync(ct =>
  1459. Task.Factory.StartNew(() => { throw ex; })
  1460. );
  1461. ReactiveAssert.Throws(ex, () => xs.Single());
  1462. }
  1463. [TestMethod]
  1464. public void FromAsync_ActionWithCancel_Cancel()
  1465. {
  1466. var e = new ManualResetEvent(false);
  1467. var f = new ManualResetEvent(false);
  1468. var t = default(Task);
  1469. var xs = Observable.FromAsync(ct =>
  1470. t = Task.Factory.StartNew(() =>
  1471. {
  1472. try
  1473. {
  1474. e.Set();
  1475. while (true)
  1476. ct.ThrowIfCancellationRequested();
  1477. }
  1478. finally
  1479. {
  1480. f.Set();
  1481. }
  1482. })
  1483. );
  1484. var d = xs.Subscribe(_ => { });
  1485. e.WaitOne();
  1486. d.Dispose();
  1487. f.WaitOne();
  1488. while (!t.IsCompleted)
  1489. ;
  1490. }
  1491. #endregion
  1492. #endif
  1493. #endregion
  1494. #region ToAsync
  1495. [TestMethod]
  1496. public void ToAsync_ArgumentChecking()
  1497. {
  1498. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync(default(Action)));
  1499. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int>(default(Action<int>)));
  1500. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int>(default(Func<int>)));
  1501. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int>(default(Action<int, int>)));
  1502. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int>(default(Func<int, int>)));
  1503. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int>(default(Action<int, int, int>)));
  1504. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int>(default(Func<int, int, int>)));
  1505. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int>(default(Action<int, int, int, int>)));
  1506. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int>(default(Func<int, int, int, int>)));
  1507. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int>(default(Func<int, int, int, int, int>)));
  1508. #if !NO_LARGEARITY
  1509. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int>(default(Action<int, int, int, int, int>)));
  1510. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int>(default(Action<int, int, int, int, int, int>)));
  1511. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int>(default(Func<int, int, int, int, int, int>)));
  1512. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int>)));
  1513. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int>)));
  1514. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int, int>)));
  1515. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int>)));
  1516. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int, int, int>)));
  1517. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int, int>)));
  1518. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int, int, int, int>)));
  1519. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int, int, int>)));
  1520. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int, int, int, int, int>)));
  1521. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int, int, int, int>)));
  1522. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int, int, int, int, int, int>)));
  1523. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int, int, int, int, int>)));
  1524. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int, int, int, int, int, int, int>)));
  1525. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int, int, int, int, int, int>)));
  1526. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int, int, int, int, int, int, int, int>)));
  1527. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int>)));
  1528. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>)));
  1529. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>)));
  1530. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>)));
  1531. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>)));
  1532. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>)));
  1533. #endif
  1534. var someScheduler = new TestScheduler();
  1535. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync(default(Action), someScheduler));
  1536. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int>(default(Action<int>), someScheduler));
  1537. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int>(default(Func<int>), someScheduler));
  1538. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int>(default(Action<int, int>), someScheduler));
  1539. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int>(default(Func<int, int>), someScheduler));
  1540. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int>(default(Action<int, int, int>), someScheduler));
  1541. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int>(default(Func<int, int, int>), someScheduler));
  1542. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int>(default(Action<int, int, int, int>), someScheduler));
  1543. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int>(default(Func<int, int, int, int>), someScheduler));
  1544. #if !NO_LARGEARITY
  1545. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int>(default(Func<int, int, int, int, int>), someScheduler));
  1546. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int>(default(Action<int, int, int, int, int>), someScheduler));
  1547. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int>(default(Action<int, int, int, int, int, int>), someScheduler));
  1548. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int>(default(Func<int, int, int, int, int, int>), someScheduler));
  1549. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int>), someScheduler));
  1550. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int>), someScheduler));
  1551. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int, int>), someScheduler));
  1552. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int>), someScheduler));
  1553. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int, int, int>), someScheduler));
  1554. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int, int>), someScheduler));
  1555. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int, int, int, int>), someScheduler));
  1556. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int, int, int>), someScheduler));
  1557. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int, int, int, int, int>), someScheduler));
  1558. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int, int, int, int>), someScheduler));
  1559. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int, int, int, int, int, int>), someScheduler));
  1560. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int, int, int, int, int>), someScheduler));
  1561. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int, int, int, int, int, int, int>), someScheduler));
  1562. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int, int, int, int, int, int>), someScheduler));
  1563. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int, int, int, int, int, int, int, int>), someScheduler));
  1564. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int>), someScheduler));
  1565. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>), someScheduler));
  1566. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>), someScheduler));
  1567. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>(default(Action<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>), someScheduler));
  1568. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>), someScheduler));
  1569. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>(default(Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>), someScheduler));
  1570. #endif
  1571. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync(() => { }, null));
  1572. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int>(a => { }, null));
  1573. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int>(() => 1, null));
  1574. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int>((a, b) => { }, null));
  1575. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int>(a => 1, null));
  1576. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int>((a, b, c) => { }, null));
  1577. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int>((a, b) => 1, null));
  1578. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int>((a, b, c, d) => { }, null));
  1579. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int>((a, b, c) => 1, null));
  1580. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int>((a, b, c, d) => 1, null));
  1581. #if !NO_LARGEARITY
  1582. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int>((a, b, c, d, e) => { }, null));
  1583. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int>((a, b, c, d, e, f) => { }, null));
  1584. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int>((a, b, c, d, e) => 1, null));
  1585. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int>((a, b, c, d, e, f, g) => { }, null));
  1586. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int>((a, b, c, d, e, f) => 1, null));
  1587. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h) => { }, null));
  1588. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g) => 1, null));
  1589. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i) => { }, null));
  1590. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h) => 1, null));
  1591. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j) => { }, null));
  1592. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i) => 1, null));
  1593. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k) => { }, null));
  1594. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j) => 1, null));
  1595. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l) => { }, null));
  1596. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k) => 1, null));
  1597. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m) => { }, null));
  1598. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l) => 1, null));
  1599. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n) => { }, null));
  1600. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m) => 1, null));
  1601. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) => { }, null));
  1602. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n) => 1, null));
  1603. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) => { }, null));
  1604. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) => 1, null));
  1605. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) => 1, null));
  1606. #endif
  1607. }
  1608. [TestMethod]
  1609. public void ToAsync0()
  1610. {
  1611. Assert.IsTrue(Observable.ToAsync<int>(() => 0)().ToEnumerable().SequenceEqual(new[] { 0 }));
  1612. Assert.IsTrue(Observable.ToAsync<int>(() => 0, Scheduler.Default)().ToEnumerable().SequenceEqual(new[] { 0 }));
  1613. }
  1614. [TestMethod]
  1615. public void ToAsync1()
  1616. {
  1617. Assert.IsTrue(Observable.ToAsync<int, int>(a => a)(1).ToEnumerable().SequenceEqual(new[] { 1 }));
  1618. Assert.IsTrue(Observable.ToAsync<int, int>(a => a, Scheduler.Default)(1).ToEnumerable().SequenceEqual(new[] { 1 }));
  1619. }
  1620. [TestMethod]
  1621. public void ToAsync2()
  1622. {
  1623. Assert.IsTrue(Observable.ToAsync<int, int, int>((a, b) => a + b)(1, 2).ToEnumerable().SequenceEqual(new[] { 1 + 2 }));
  1624. Assert.IsTrue(Observable.ToAsync<int, int, int>((a, b) => a + b, Scheduler.Default)(1, 2).ToEnumerable().SequenceEqual(new[] { 1 + 2 }));
  1625. }
  1626. [TestMethod]
  1627. public void ToAsync3()
  1628. {
  1629. Assert.IsTrue(Observable.ToAsync<int, int, int, int>((a, b, c) => a + b + c)(1, 2, 3).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 }));
  1630. Assert.IsTrue(Observable.ToAsync<int, int, int, int>((a, b, c) => a + b + c, Scheduler.Default)(1, 2, 3).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 }));
  1631. }
  1632. [TestMethod]
  1633. public void ToAsync4()
  1634. {
  1635. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int>((a, b, c, d) => a + b + c + d)(1, 2, 3, 4).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 }));
  1636. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int>((a, b, c, d) => a + b + c + d, Scheduler.Default)(1, 2, 3, 4).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 }));
  1637. }
  1638. #if !NO_LARGEARITY
  1639. [TestMethod]
  1640. public void ToAsync5()
  1641. {
  1642. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int>((a, b, c, d, e) => a + b + c + d + e)(1, 2, 3, 4, 5).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 }));
  1643. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int>((a, b, c, d, e) => a + b + c + d + e, Scheduler.Default)(1, 2, 3, 4, 5).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 }));
  1644. }
  1645. [TestMethod]
  1646. public void ToAsync6()
  1647. {
  1648. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int>((a, b, c, d, e, f) => a + b + c + d + e + f)(1, 2, 3, 4, 5, 6).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 }));
  1649. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int>((a, b, c, d, e, f) => a + b + c + d + e + f, Scheduler.Default)(1, 2, 3, 4, 5, 6).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 }));
  1650. }
  1651. [TestMethod]
  1652. public void ToAsync7()
  1653. {
  1654. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g) => a + b + c + d + e + f + g)(1, 2, 3, 4, 5, 6, 7).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 }));
  1655. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g) => a + b + c + d + e + f + g, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 }));
  1656. }
  1657. [TestMethod]
  1658. public void ToAsync8()
  1659. {
  1660. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h) => a + b + c + d + e + f + g + h)(1, 2, 3, 4, 5, 6, 7, 8).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 }));
  1661. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h) => a + b + c + d + e + f + g + h, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 }));
  1662. }
  1663. [TestMethod]
  1664. public void ToAsync9()
  1665. {
  1666. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i) => a + b + c + d + e + f + g + h + i)(1, 2, 3, 4, 5, 6, 7, 8, 9).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 }));
  1667. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i) => a + b + c + d + e + f + g + h + i, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 }));
  1668. }
  1669. [TestMethod]
  1670. public void ToAsync10()
  1671. {
  1672. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j) => a + b + c + d + e + f + g + h + i + j)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 }));
  1673. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j) => a + b + c + d + e + f + g + h + i + j, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 }));
  1674. }
  1675. [TestMethod]
  1676. public void ToAsync11()
  1677. {
  1678. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k) => a + b + c + d + e + f + g + h + i + j + k)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 }));
  1679. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k) => a + b + c + d + e + f + g + h + i + j + k, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 }));
  1680. }
  1681. [TestMethod]
  1682. public void ToAsync12()
  1683. {
  1684. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l) => a + b + c + d + e + f + g + h + i + j + k + l)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 }));
  1685. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l) => a + b + c + d + e + f + g + h + i + j + k + l, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 }));
  1686. }
  1687. [TestMethod]
  1688. public void ToAsync13()
  1689. {
  1690. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m) => a + b + c + d + e + f + g + h + i + j + k + l + m)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 }));
  1691. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m) => a + b + c + d + e + f + g + h + i + j + k + l + m, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 }));
  1692. }
  1693. [TestMethod]
  1694. public void ToAsync14()
  1695. {
  1696. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n) => a + b + c + d + e + f + g + h + i + j + k + l + m + n)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 }));
  1697. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n) => a + b + c + d + e + f + g + h + i + j + k + l + m + n, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 }));
  1698. }
  1699. [TestMethod]
  1700. public void ToAsync15()
  1701. {
  1702. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) => a + b + c + d + e + f + g + h + i + j + k + l + m + n + o)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 }));
  1703. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) => a + b + c + d + e + f + g + h + i + j + k + l + m + n + o, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 }));
  1704. }
  1705. [TestMethod]
  1706. public void ToAsync16()
  1707. {
  1708. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) => a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 }));
  1709. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) => a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16).ToEnumerable().SequenceEqual(new[] { 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 }));
  1710. }
  1711. #endif
  1712. [TestMethod]
  1713. public void ToAsync_Error0()
  1714. {
  1715. var ex = new Exception();
  1716. Assert.IsTrue(Observable.ToAsync<int>(() => { throw ex; })().Materialize().ToEnumerable().SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  1717. }
  1718. [TestMethod]
  1719. public void ToAsync_Error1()
  1720. {
  1721. var ex = new Exception();
  1722. Assert.IsTrue(Observable.ToAsync<int, int>(a => { throw ex; })(1).Materialize().ToEnumerable().SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  1723. }
  1724. [TestMethod]
  1725. public void ToAsync_Error2()
  1726. {
  1727. var ex = new Exception();
  1728. Assert.IsTrue(Observable.ToAsync<int, int, int>((a, b) => { throw ex; })(1, 2).Materialize().ToEnumerable().SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  1729. }
  1730. [TestMethod]
  1731. public void ToAsync_Error3()
  1732. {
  1733. var ex = new Exception();
  1734. Assert.IsTrue(Observable.ToAsync<int, int, int, int>((a, b, c) => { throw ex; })(1, 2, 3).Materialize().ToEnumerable().SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  1735. }
  1736. [TestMethod]
  1737. public void ToAsync_Error4()
  1738. {
  1739. var ex = new Exception();
  1740. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int>((a, b, c, d) => { throw ex; })(1, 2, 3, 4).Materialize().ToEnumerable().SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  1741. }
  1742. #if !NO_LARGEARITY
  1743. [TestMethod]
  1744. public void ToAsync_Error5()
  1745. {
  1746. var ex = new Exception();
  1747. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int>((a, b, c, d, e) => { throw ex; })(1, 2, 3, 4, 5).Materialize().ToEnumerable().SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  1748. }
  1749. [TestMethod]
  1750. public void ToAsync_Error6()
  1751. {
  1752. var ex = new Exception();
  1753. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int>((a, b, c, d, e, f) => { throw ex; })(1, 2, 3, 4, 5, 6).Materialize().ToEnumerable().SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  1754. }
  1755. [TestMethod]
  1756. public void ToAsync_Error7()
  1757. {
  1758. var ex = new Exception();
  1759. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g) => { throw ex; })(1, 2, 3, 4, 5, 6, 7).Materialize().ToEnumerable().SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  1760. }
  1761. [TestMethod]
  1762. public void ToAsync_Error8()
  1763. {
  1764. var ex = new Exception();
  1765. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h) => { throw ex; })(1, 2, 3, 4, 5, 6, 7, 8).Materialize().ToEnumerable().SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  1766. }
  1767. [TestMethod]
  1768. public void ToAsync_Error9()
  1769. {
  1770. var ex = new Exception();
  1771. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i) => { throw ex; })(1, 2, 3, 4, 5, 6, 7, 8, 9).Materialize().ToEnumerable().SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  1772. }
  1773. [TestMethod]
  1774. public void ToAsync_Error10()
  1775. {
  1776. var ex = new Exception();
  1777. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j) => { throw ex; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).Materialize().ToEnumerable().SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  1778. }
  1779. [TestMethod]
  1780. public void ToAsync_Error11()
  1781. {
  1782. var ex = new Exception();
  1783. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k) => { throw ex; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11).Materialize().ToEnumerable().SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  1784. }
  1785. [TestMethod]
  1786. public void ToAsync_Error12()
  1787. {
  1788. var ex = new Exception();
  1789. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l) => { throw ex; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12).Materialize().ToEnumerable().SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  1790. }
  1791. [TestMethod]
  1792. public void ToAsync_Error13()
  1793. {
  1794. var ex = new Exception();
  1795. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m) => { throw ex; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13).Materialize().ToEnumerable().SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  1796. }
  1797. [TestMethod]
  1798. public void ToAsync_Error14()
  1799. {
  1800. var ex = new Exception();
  1801. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n) => { throw ex; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14).Materialize().ToEnumerable().SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  1802. }
  1803. [TestMethod]
  1804. public void ToAsync_Error15()
  1805. {
  1806. var ex = new Exception();
  1807. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) => { throw ex; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15).Materialize().ToEnumerable().SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  1808. }
  1809. [TestMethod]
  1810. public void ToAsync_Error16()
  1811. {
  1812. var ex = new Exception();
  1813. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) => { throw ex; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16).Materialize().ToEnumerable().SequenceEqual(new Notification<int>[] { Notification.CreateOnError<int>(ex) }));
  1814. }
  1815. #endif
  1816. [TestMethod]
  1817. public void ToAsyncAction0()
  1818. {
  1819. bool hasRun = false;
  1820. Assert.IsTrue(Observable.ToAsync(() => { hasRun = true; })().ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1821. Assert.IsTrue(Observable.ToAsync(() => { hasRun = true; }, Scheduler.Default)().ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1822. Assert.IsTrue(hasRun, "has run");
  1823. }
  1824. [TestMethod]
  1825. public void ToAsyncActionError0()
  1826. {
  1827. var ex = new Exception();
  1828. Assert.IsTrue(Observable.ToAsync(() => { throw ex; })().Materialize().ToEnumerable().SequenceEqual(new[] { Notification.CreateOnError<Unit>(ex) }));
  1829. }
  1830. [TestMethod]
  1831. public void ToAsyncAction1()
  1832. {
  1833. bool hasRun = false;
  1834. Assert.IsTrue(Observable.ToAsync<int>(a => { Assert.AreEqual(1, a); hasRun = true; })(1).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1835. Assert.IsTrue(Observable.ToAsync<int>(a => { Assert.AreEqual(1, a); hasRun = true; }, Scheduler.Default)(1).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1836. Assert.IsTrue(hasRun, "has run");
  1837. }
  1838. [TestMethod]
  1839. public void ToAsyncActionError1()
  1840. {
  1841. var ex = new Exception();
  1842. Assert.IsTrue(Observable.ToAsync<int>(a => { Assert.AreEqual(1, a); throw ex; })(1).Materialize().ToEnumerable().SequenceEqual(new[] { Notification.CreateOnError<Unit>(ex) }));
  1843. }
  1844. [TestMethod]
  1845. public void ToAsyncAction2()
  1846. {
  1847. bool hasRun = false;
  1848. Assert.IsTrue(Observable.ToAsync<int, int>((a, b) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); hasRun = true; })(1, 2).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1849. Assert.IsTrue(Observable.ToAsync<int, int>((a, b) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); hasRun = true; }, Scheduler.Default)(1, 2).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1850. Assert.IsTrue(hasRun, "has run");
  1851. }
  1852. [TestMethod]
  1853. public void ToAsyncActionError2()
  1854. {
  1855. var ex = new Exception();
  1856. Assert.IsTrue(Observable.ToAsync<int, int>((a, b) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); throw ex; })(1, 2).Materialize().ToEnumerable().SequenceEqual(new[] { Notification.CreateOnError<Unit>(ex) }));
  1857. }
  1858. [TestMethod]
  1859. public void ToAsyncAction3()
  1860. {
  1861. bool hasRun = false;
  1862. Assert.IsTrue(Observable.ToAsync<int, int, int>((a, b, c) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); hasRun = true; })(1, 2, 3).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1863. Assert.IsTrue(Observable.ToAsync<int, int, int>((a, b, c) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); hasRun = true; }, Scheduler.Default)(1, 2, 3).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1864. Assert.IsTrue(hasRun, "has run");
  1865. }
  1866. [TestMethod]
  1867. public void ToAsyncActionError3()
  1868. {
  1869. var ex = new Exception();
  1870. Assert.IsTrue(Observable.ToAsync<int, int, int>((a, b, c) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); throw ex; })(1, 2, 3).Materialize().ToEnumerable().SequenceEqual(new[] { Notification.CreateOnError<Unit>(ex) }));
  1871. }
  1872. [TestMethod]
  1873. public void ToAsyncAction4()
  1874. {
  1875. bool hasRun = false;
  1876. Assert.IsTrue(Observable.ToAsync<int, int, int, int>((a, b, c, d) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); hasRun = true; })(1, 2, 3, 4).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1877. Assert.IsTrue(Observable.ToAsync<int, int, int, int>((a, b, c, d) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1878. Assert.IsTrue(hasRun, "has run");
  1879. }
  1880. [TestMethod]
  1881. public void ToAsyncActionError4()
  1882. {
  1883. var ex = new Exception();
  1884. Assert.IsTrue(Observable.ToAsync<int, int, int, int>((a, b, c, d) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); throw ex; })(1, 2, 3, 4).Materialize().ToEnumerable().SequenceEqual(new[] { Notification.CreateOnError<Unit>(ex) }));
  1885. }
  1886. #if !NO_LARGEARITY
  1887. [TestMethod]
  1888. public void ToAsyncAction5()
  1889. {
  1890. bool hasRun = false;
  1891. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int>((a, b, c, d, e) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); hasRun = true; })(1, 2, 3, 4, 5).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1892. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int>((a, b, c, d, e) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1893. Assert.IsTrue(hasRun, "has run");
  1894. }
  1895. [TestMethod]
  1896. public void ToAsyncActionError5()
  1897. {
  1898. var ex = new Exception();
  1899. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int>((a, b, c, d, e) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); throw ex; })(1, 2, 3, 4, 5).Materialize().ToEnumerable().SequenceEqual(new[] { Notification.CreateOnError<Unit>(ex) }));
  1900. }
  1901. [TestMethod]
  1902. public void ToAsyncAction6()
  1903. {
  1904. bool hasRun = false;
  1905. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int>((a, b, c, d, e, f) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); hasRun = true; })(1, 2, 3, 4, 5, 6).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1906. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int>((a, b, c, d, e, f) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1907. Assert.IsTrue(hasRun, "has run");
  1908. }
  1909. [TestMethod]
  1910. public void ToAsyncActionError6()
  1911. {
  1912. var ex = new Exception();
  1913. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int>((a, b, c, d, e, f) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); throw ex; })(1, 2, 3, 4, 5, 6).Materialize().ToEnumerable().SequenceEqual(new[] { Notification.CreateOnError<Unit>(ex) }));
  1914. }
  1915. [TestMethod]
  1916. public void ToAsyncAction7()
  1917. {
  1918. bool hasRun = false;
  1919. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int>((a, b, c, d, e, f, g) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); hasRun = true; })(1, 2, 3, 4, 5, 6, 7).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1920. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int>((a, b, c, d, e, f, g) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1921. Assert.IsTrue(hasRun, "has run");
  1922. }
  1923. [TestMethod]
  1924. public void ToAsyncActionError7()
  1925. {
  1926. var ex = new Exception();
  1927. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int>((a, b, c, d, e, f, g) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); throw ex; })(1, 2, 3, 4, 5, 6, 7).Materialize().ToEnumerable().SequenceEqual(new[] { Notification.CreateOnError<Unit>(ex) }));
  1928. }
  1929. [TestMethod]
  1930. public void ToAsyncAction8()
  1931. {
  1932. bool hasRun = false;
  1933. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); hasRun = true; })(1, 2, 3, 4, 5, 6, 7, 8).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1934. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1935. Assert.IsTrue(hasRun, "has run");
  1936. }
  1937. [TestMethod]
  1938. public void ToAsyncActionError8()
  1939. {
  1940. var ex = new Exception();
  1941. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); throw ex; })(1, 2, 3, 4, 5, 6, 7, 8).Materialize().ToEnumerable().SequenceEqual(new[] { Notification.CreateOnError<Unit>(ex) }));
  1942. }
  1943. [TestMethod]
  1944. public void ToAsyncAction9()
  1945. {
  1946. bool hasRun = false;
  1947. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); hasRun = true; })(1, 2, 3, 4, 5, 6, 7, 8, 9).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1948. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1949. Assert.IsTrue(hasRun, "has run");
  1950. }
  1951. [TestMethod]
  1952. public void ToAsyncActionError9()
  1953. {
  1954. var ex = new Exception();
  1955. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); throw ex; })(1, 2, 3, 4, 5, 6, 7, 8, 9).Materialize().ToEnumerable().SequenceEqual(new[] { Notification.CreateOnError<Unit>(ex) }));
  1956. }
  1957. [TestMethod]
  1958. public void ToAsyncAction10()
  1959. {
  1960. bool hasRun = false;
  1961. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); hasRun = true; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1962. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1963. Assert.IsTrue(hasRun, "has run");
  1964. }
  1965. [TestMethod]
  1966. public void ToAsyncActionError10()
  1967. {
  1968. var ex = new Exception();
  1969. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); throw ex; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).Materialize().ToEnumerable().SequenceEqual(new[] { Notification.CreateOnError<Unit>(ex) }));
  1970. }
  1971. [TestMethod]
  1972. public void ToAsyncAction11()
  1973. {
  1974. bool hasRun = false;
  1975. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); Assert.AreEqual(11, k); hasRun = true; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1976. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); Assert.AreEqual(11, k); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1977. Assert.IsTrue(hasRun, "has run");
  1978. }
  1979. [TestMethod]
  1980. public void ToAsyncActionError11()
  1981. {
  1982. var ex = new Exception();
  1983. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); Assert.AreEqual(11, k); throw ex; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11).Materialize().ToEnumerable().SequenceEqual(new[] { Notification.CreateOnError<Unit>(ex) }));
  1984. }
  1985. [TestMethod]
  1986. public void ToAsyncAction12()
  1987. {
  1988. bool hasRun = false;
  1989. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); Assert.AreEqual(11, k); Assert.AreEqual(12, l); hasRun = true; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1990. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); Assert.AreEqual(11, k); Assert.AreEqual(12, l); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  1991. Assert.IsTrue(hasRun, "has run");
  1992. }
  1993. [TestMethod]
  1994. public void ToAsyncActionError12()
  1995. {
  1996. var ex = new Exception();
  1997. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); Assert.AreEqual(11, k); Assert.AreEqual(12, l); throw ex; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12).Materialize().ToEnumerable().SequenceEqual(new[] { Notification.CreateOnError<Unit>(ex) }));
  1998. }
  1999. [TestMethod]
  2000. public void ToAsyncAction13()
  2001. {
  2002. bool hasRun = false;
  2003. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); Assert.AreEqual(11, k); Assert.AreEqual(12, l); Assert.AreEqual(13, m); hasRun = true; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  2004. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); Assert.AreEqual(11, k); Assert.AreEqual(12, l); Assert.AreEqual(13, m); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  2005. Assert.IsTrue(hasRun, "has run");
  2006. }
  2007. [TestMethod]
  2008. public void ToAsyncActionError13()
  2009. {
  2010. var ex = new Exception();
  2011. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); Assert.AreEqual(11, k); Assert.AreEqual(12, l); Assert.AreEqual(13, m); throw ex; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13).Materialize().ToEnumerable().SequenceEqual(new[] { Notification.CreateOnError<Unit>(ex) }));
  2012. }
  2013. [TestMethod]
  2014. public void ToAsyncAction14()
  2015. {
  2016. bool hasRun = false;
  2017. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); Assert.AreEqual(11, k); Assert.AreEqual(12, l); Assert.AreEqual(13, m); Assert.AreEqual(14, n); hasRun = true; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  2018. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); Assert.AreEqual(11, k); Assert.AreEqual(12, l); Assert.AreEqual(13, m); Assert.AreEqual(14, n); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  2019. Assert.IsTrue(hasRun, "has run");
  2020. }
  2021. [TestMethod]
  2022. public void ToAsyncActionError14()
  2023. {
  2024. var ex = new Exception();
  2025. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); Assert.AreEqual(11, k); Assert.AreEqual(12, l); Assert.AreEqual(13, m); Assert.AreEqual(14, n); throw ex; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14).Materialize().ToEnumerable().SequenceEqual(new[] { Notification.CreateOnError<Unit>(ex) }));
  2026. }
  2027. [TestMethod]
  2028. public void ToAsyncAction15()
  2029. {
  2030. bool hasRun = false;
  2031. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); Assert.AreEqual(11, k); Assert.AreEqual(12, l); Assert.AreEqual(13, m); Assert.AreEqual(14, n); Assert.AreEqual(15, o); hasRun = true; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  2032. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); Assert.AreEqual(11, k); Assert.AreEqual(12, l); Assert.AreEqual(13, m); Assert.AreEqual(14, n); Assert.AreEqual(15, o); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  2033. Assert.IsTrue(hasRun, "has run");
  2034. }
  2035. [TestMethod]
  2036. public void ToAsyncActionError15()
  2037. {
  2038. var ex = new Exception();
  2039. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); Assert.AreEqual(11, k); Assert.AreEqual(12, l); Assert.AreEqual(13, m); Assert.AreEqual(14, n); Assert.AreEqual(15, o); throw ex; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15).Materialize().ToEnumerable().SequenceEqual(new[] { Notification.CreateOnError<Unit>(ex) }));
  2040. }
  2041. [TestMethod]
  2042. public void ToAsyncAction16()
  2043. {
  2044. bool hasRun = false;
  2045. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); Assert.AreEqual(11, k); Assert.AreEqual(12, l); Assert.AreEqual(13, m); Assert.AreEqual(14, n); Assert.AreEqual(15, o); Assert.AreEqual(16, p); hasRun = true; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  2046. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); Assert.AreEqual(11, k); Assert.AreEqual(12, l); Assert.AreEqual(13, m); Assert.AreEqual(14, n); Assert.AreEqual(15, o); Assert.AreEqual(16, p); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16).ToEnumerable().SequenceEqual(new[] { new Unit() }));
  2047. Assert.IsTrue(hasRun, "has run");
  2048. }
  2049. [TestMethod]
  2050. public void ToAsyncActionError16()
  2051. {
  2052. var ex = new Exception();
  2053. Assert.IsTrue(Observable.ToAsync<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) => { Assert.AreEqual(1, a); Assert.AreEqual(2, b); Assert.AreEqual(3, c); Assert.AreEqual(4, d); Assert.AreEqual(5, e); Assert.AreEqual(6, f); Assert.AreEqual(7, g); Assert.AreEqual(8, h); Assert.AreEqual(9, i); Assert.AreEqual(10, j); Assert.AreEqual(11, k); Assert.AreEqual(12, l); Assert.AreEqual(13, m); Assert.AreEqual(14, n); Assert.AreEqual(15, o); Assert.AreEqual(16, p); throw ex; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16).Materialize().ToEnumerable().SequenceEqual(new[] { Notification.CreateOnError<Unit>(ex) }));
  2054. }
  2055. #endif
  2056. #endregion
  2057. }
  2058. }