ObservableAsyncTest.cs 138 KB

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