ObservableAsyncTest.cs 138 KB

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