CombineLatestTest.cs 194 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970
  1. // Licensed to the .NET Foundation under one or more agreements.
  2. // The .NET Foundation licenses this file to you under the MIT License.
  3. // See the LICENSE file in the project root for more information.
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Reactive.Linq;
  8. using Microsoft.Reactive.Testing;
  9. using ReactiveTests.Dummies;
  10. using Microsoft.VisualStudio.TestTools.UnitTesting;
  11. namespace ReactiveTests.Tests
  12. {
  13. #pragma warning disable IDE0039 // Use local function
  14. [TestClass]
  15. public class CombineLatestTest : ReactiveTest
  16. {
  17. #region ArgumentChecking
  18. [TestMethod]
  19. public void CombineLatest_ArgumentChecking()
  20. {
  21. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest<int, int, int>(DummyObservable<int>.Instance, DummyObservable<int>.Instance, null));
  22. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest<int, int, int>(null, DummyObservable<int>.Instance, (_, __) => 0));
  23. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest<int, int, int>(DummyObservable<int>.Instance, null, (_, __) => 0));
  24. }
  25. [TestMethod]
  26. public void CombineLatest_ArgumentCheckingHighArity()
  27. {
  28. var xs = DummyObservable<int>.Instance;
  29. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(default(IObservable<int>), xs, (_0, _1) => _0 + _1));
  30. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, default(IObservable<int>), (_0, _1) => _0 + _1));
  31. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, default(Func<int, int, int>)));
  32. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(default(IObservable<int>), xs, xs, (_0, _1, _2) => _0 + _1 + _2));
  33. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, default(IObservable<int>), xs, (_0, _1, _2) => _0 + _1 + _2));
  34. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, default(IObservable<int>), (_0, _1, _2) => _0 + _1 + _2));
  35. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, default(Func<int, int, int, int>)));
  36. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(default(IObservable<int>), xs, xs, xs, (_0, _1, _2, _3) => _0 + _1 + _2 + _3));
  37. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, default(IObservable<int>), xs, xs, (_0, _1, _2, _3) => _0 + _1 + _2 + _3));
  38. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, default(IObservable<int>), xs, (_0, _1, _2, _3) => _0 + _1 + _2 + _3));
  39. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, default(IObservable<int>), (_0, _1, _2, _3) => _0 + _1 + _2 + _3));
  40. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, default(Func<int, int, int, int, int>)));
  41. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(default(IObservable<int>), xs, xs, xs, xs, (_0, _1, _2, _3, _4) => _0 + _1 + _2 + _3 + _4));
  42. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, default(IObservable<int>), xs, xs, xs, (_0, _1, _2, _3, _4) => _0 + _1 + _2 + _3 + _4));
  43. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, default(IObservable<int>), xs, xs, (_0, _1, _2, _3, _4) => _0 + _1 + _2 + _3 + _4));
  44. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, default(IObservable<int>), xs, (_0, _1, _2, _3, _4) => _0 + _1 + _2 + _3 + _4));
  45. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, default(IObservable<int>), (_0, _1, _2, _3, _4) => _0 + _1 + _2 + _3 + _4));
  46. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, default(Func<int, int, int, int, int, int>)));
  47. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(default(IObservable<int>), xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5) => _0 + _1 + _2 + _3 + _4 + _5));
  48. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, default(IObservable<int>), xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5) => _0 + _1 + _2 + _3 + _4 + _5));
  49. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, default(IObservable<int>), xs, xs, xs, (_0, _1, _2, _3, _4, _5) => _0 + _1 + _2 + _3 + _4 + _5));
  50. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, default(IObservable<int>), xs, xs, (_0, _1, _2, _3, _4, _5) => _0 + _1 + _2 + _3 + _4 + _5));
  51. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, default(IObservable<int>), xs, (_0, _1, _2, _3, _4, _5) => _0 + _1 + _2 + _3 + _4 + _5));
  52. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, default(IObservable<int>), (_0, _1, _2, _3, _4, _5) => _0 + _1 + _2 + _3 + _4 + _5));
  53. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, default(Func<int, int, int, int, int, int, int>)));
  54. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(default(IObservable<int>), xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6) => _0 + _1 + _2 + _3 + _4 + _5 + _6));
  55. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, default(IObservable<int>), xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6) => _0 + _1 + _2 + _3 + _4 + _5 + _6));
  56. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, default(IObservable<int>), xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6) => _0 + _1 + _2 + _3 + _4 + _5 + _6));
  57. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, default(IObservable<int>), xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6) => _0 + _1 + _2 + _3 + _4 + _5 + _6));
  58. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, default(IObservable<int>), xs, xs, (_0, _1, _2, _3, _4, _5, _6) => _0 + _1 + _2 + _3 + _4 + _5 + _6));
  59. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, default(IObservable<int>), xs, (_0, _1, _2, _3, _4, _5, _6) => _0 + _1 + _2 + _3 + _4 + _5 + _6));
  60. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, default(IObservable<int>), (_0, _1, _2, _3, _4, _5, _6) => _0 + _1 + _2 + _3 + _4 + _5 + _6));
  61. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, default(Func<int, int, int, int, int, int, int, int>)));
  62. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7));
  63. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7));
  64. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7));
  65. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7));
  66. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7));
  67. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7));
  68. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, (_0, _1, _2, _3, _4, _5, _6, _7) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7));
  69. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), (_0, _1, _2, _3, _4, _5, _6, _7) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7));
  70. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, default(Func<int, int, int, int, int, int, int, int, int>)));
  71. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8));
  72. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8));
  73. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8));
  74. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8));
  75. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8));
  76. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8));
  77. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8));
  78. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8));
  79. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), (_0, _1, _2, _3, _4, _5, _6, _7, _8) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8));
  80. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, default(Func<int, int, int, int, int, int, int, int, int, int>)));
  81. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9));
  82. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9));
  83. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9));
  84. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9));
  85. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9));
  86. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9));
  87. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9));
  88. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9));
  89. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9));
  90. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9));
  91. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(Func<int, int, int, int, int, int, int, int, int, int, int>)));
  92. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10));
  93. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10));
  94. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10));
  95. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10));
  96. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10));
  97. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10));
  98. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10));
  99. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10));
  100. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10));
  101. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10));
  102. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10));
  103. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(Func<int, int, int, int, int, int, int, int, int, int, int, int>)));
  104. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11));
  105. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11));
  106. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11));
  107. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11));
  108. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11));
  109. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11));
  110. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11));
  111. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11));
  112. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11));
  113. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11));
  114. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11));
  115. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11));
  116. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(Func<int, int, int, int, int, int, int, int, int, int, int, int, int>)));
  117. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12));
  118. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12));
  119. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12));
  120. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12));
  121. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12));
  122. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12));
  123. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12));
  124. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12));
  125. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12));
  126. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12));
  127. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12));
  128. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12));
  129. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12));
  130. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int>)));
  131. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13));
  132. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13));
  133. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13));
  134. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13));
  135. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13));
  136. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13));
  137. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13));
  138. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13));
  139. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13));
  140. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13));
  141. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13));
  142. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13));
  143. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13));
  144. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13));
  145. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>)));
  146. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14));
  147. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14));
  148. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14));
  149. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14));
  150. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14));
  151. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14));
  152. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14));
  153. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14));
  154. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14));
  155. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14));
  156. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14));
  157. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14));
  158. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14));
  159. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14));
  160. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14));
  161. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>)));
  162. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14 + _15));
  163. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14 + _15));
  164. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14 + _15));
  165. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14 + _15));
  166. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14 + _15));
  167. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14 + _15));
  168. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14 + _15));
  169. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14 + _15));
  170. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14 + _15));
  171. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14 + _15));
  172. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14 + _15));
  173. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14 + _15));
  174. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14 + _15));
  175. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14 + _15));
  176. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), xs, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14 + _15));
  177. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(IObservable<int>), (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14 + _15));
  178. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, xs, default(Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>)));
  179. }
  180. #endregion
  181. #region Never
  182. [TestMethod]
  183. public void CombineLatest_NeverN()
  184. {
  185. var scheduler = new TestScheduler();
  186. var e0 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  187. var e1 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  188. var e2 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  189. var res = scheduler.Start(() =>
  190. Observable.CombineLatest([e0, e1, e2], xs => xs.Sum())
  191. );
  192. res.Messages.AssertEqual(
  193. );
  194. foreach (var e in new[] { e0, e1, e2 })
  195. {
  196. e.Subscriptions.AssertEqual(Subscribe(200, 1000));
  197. }
  198. }
  199. [TestMethod]
  200. public void CombineLatest_Never2()
  201. {
  202. var scheduler = new TestScheduler();
  203. var e0 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  204. var e1 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  205. var res = scheduler.Start(() =>
  206. Observable.CombineLatest(e0, e1, (_0, _1) => 42)
  207. );
  208. res.Messages.AssertEqual(
  209. );
  210. foreach (var e in new[] { e0, e1 })
  211. {
  212. e.Subscriptions.AssertEqual(Subscribe(200, 1000));
  213. }
  214. }
  215. [TestMethod]
  216. public void CombineLatest_Never3()
  217. {
  218. var scheduler = new TestScheduler();
  219. var e0 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  220. var e1 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  221. var e2 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  222. var res = scheduler.Start(() =>
  223. Observable.CombineLatest(e0, e1, e2, (_0, _1, _2) => 42)
  224. );
  225. res.Messages.AssertEqual(
  226. );
  227. foreach (var e in new[] { e0, e1, e2 })
  228. {
  229. e.Subscriptions.AssertEqual(Subscribe(200, 1000));
  230. }
  231. }
  232. [TestMethod]
  233. public void CombineLatest_Never4()
  234. {
  235. var scheduler = new TestScheduler();
  236. var e0 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  237. var e1 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  238. var e2 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  239. var e3 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  240. var res = scheduler.Start(() =>
  241. Observable.CombineLatest(e0, e1, e2, e3, (_0, _1, _2, _3) => 42)
  242. );
  243. res.Messages.AssertEqual(
  244. );
  245. foreach (var e in new[] { e0, e1, e2, e3 })
  246. {
  247. e.Subscriptions.AssertEqual(Subscribe(200, 1000));
  248. }
  249. }
  250. [TestMethod]
  251. public void CombineLatest_Never5()
  252. {
  253. var scheduler = new TestScheduler();
  254. var e0 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  255. var e1 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  256. var e2 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  257. var e3 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  258. var e4 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  259. var res = scheduler.Start(() =>
  260. Observable.CombineLatest(e0, e1, e2, e3, e4, (_0, _1, _2, _3, _4) => 42)
  261. );
  262. res.Messages.AssertEqual(
  263. );
  264. foreach (var e in new[] { e0, e1, e2, e3, e4 })
  265. {
  266. e.Subscriptions.AssertEqual(Subscribe(200, 1000));
  267. }
  268. }
  269. [TestMethod]
  270. public void CombineLatest_Never6()
  271. {
  272. var scheduler = new TestScheduler();
  273. var e0 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  274. var e1 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  275. var e2 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  276. var e3 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  277. var e4 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  278. var e5 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  279. var res = scheduler.Start(() =>
  280. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, (_0, _1, _2, _3, _4, _5) => 42)
  281. );
  282. res.Messages.AssertEqual(
  283. );
  284. foreach (var e in new[] { e0, e1, e2, e3, e4, e5 })
  285. {
  286. e.Subscriptions.AssertEqual(Subscribe(200, 1000));
  287. }
  288. }
  289. [TestMethod]
  290. public void CombineLatest_Never7()
  291. {
  292. var scheduler = new TestScheduler();
  293. var e0 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  294. var e1 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  295. var e2 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  296. var e3 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  297. var e4 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  298. var e5 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  299. var e6 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  300. var res = scheduler.Start(() =>
  301. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, (_0, _1, _2, _3, _4, _5, _6) => 42)
  302. );
  303. res.Messages.AssertEqual(
  304. );
  305. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6 })
  306. {
  307. e.Subscriptions.AssertEqual(Subscribe(200, 1000));
  308. }
  309. }
  310. [TestMethod]
  311. public void CombineLatest_Never8()
  312. {
  313. var scheduler = new TestScheduler();
  314. var e0 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  315. var e1 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  316. var e2 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  317. var e3 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  318. var e4 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  319. var e5 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  320. var e6 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  321. var e7 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  322. var res = scheduler.Start(() =>
  323. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, (_0, _1, _2, _3, _4, _5, _6, _7) => 42)
  324. );
  325. res.Messages.AssertEqual(
  326. );
  327. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7 })
  328. {
  329. e.Subscriptions.AssertEqual(Subscribe(200, 1000));
  330. }
  331. }
  332. [TestMethod]
  333. public void CombineLatest_Never9()
  334. {
  335. var scheduler = new TestScheduler();
  336. var e0 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  337. var e1 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  338. var e2 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  339. var e3 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  340. var e4 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  341. var e5 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  342. var e6 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  343. var e7 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  344. var e8 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  345. var res = scheduler.Start(() =>
  346. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, (_0, _1, _2, _3, _4, _5, _6, _7, _8) => 42)
  347. );
  348. res.Messages.AssertEqual(
  349. );
  350. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8 })
  351. {
  352. e.Subscriptions.AssertEqual(Subscribe(200, 1000));
  353. }
  354. }
  355. [TestMethod]
  356. public void CombineLatest_Never10()
  357. {
  358. var scheduler = new TestScheduler();
  359. var e0 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  360. var e1 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  361. var e2 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  362. var e3 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  363. var e4 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  364. var e5 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  365. var e6 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  366. var e7 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  367. var e8 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  368. var e9 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  369. var res = scheduler.Start(() =>
  370. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) => 42)
  371. );
  372. res.Messages.AssertEqual(
  373. );
  374. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9 })
  375. {
  376. e.Subscriptions.AssertEqual(Subscribe(200, 1000));
  377. }
  378. }
  379. [TestMethod]
  380. public void CombineLatest_Never11()
  381. {
  382. var scheduler = new TestScheduler();
  383. var e0 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  384. var e1 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  385. var e2 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  386. var e3 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  387. var e4 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  388. var e5 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  389. var e6 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  390. var e7 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  391. var e8 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  392. var e9 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  393. var e10 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  394. var res = scheduler.Start(() =>
  395. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) => 42)
  396. );
  397. res.Messages.AssertEqual(
  398. );
  399. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10 })
  400. {
  401. e.Subscriptions.AssertEqual(Subscribe(200, 1000));
  402. }
  403. }
  404. [TestMethod]
  405. public void CombineLatest_Never12()
  406. {
  407. var scheduler = new TestScheduler();
  408. var e0 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  409. var e1 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  410. var e2 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  411. var e3 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  412. var e4 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  413. var e5 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  414. var e6 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  415. var e7 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  416. var e8 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  417. var e9 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  418. var e10 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  419. var e11 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  420. var res = scheduler.Start(() =>
  421. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) => 42)
  422. );
  423. res.Messages.AssertEqual(
  424. );
  425. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11 })
  426. {
  427. e.Subscriptions.AssertEqual(Subscribe(200, 1000));
  428. }
  429. }
  430. [TestMethod]
  431. public void CombineLatest_Never13()
  432. {
  433. var scheduler = new TestScheduler();
  434. var e0 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  435. var e1 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  436. var e2 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  437. var e3 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  438. var e4 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  439. var e5 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  440. var e6 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  441. var e7 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  442. var e8 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  443. var e9 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  444. var e10 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  445. var e11 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  446. var e12 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  447. var res = scheduler.Start(() =>
  448. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) => 42)
  449. );
  450. res.Messages.AssertEqual(
  451. );
  452. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12 })
  453. {
  454. e.Subscriptions.AssertEqual(Subscribe(200, 1000));
  455. }
  456. }
  457. [TestMethod]
  458. public void CombineLatest_Never14()
  459. {
  460. var scheduler = new TestScheduler();
  461. var e0 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  462. var e1 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  463. var e2 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  464. var e3 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  465. var e4 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  466. var e5 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  467. var e6 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  468. var e7 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  469. var e8 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  470. var e9 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  471. var e10 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  472. var e11 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  473. var e12 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  474. var e13 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  475. var res = scheduler.Start(() =>
  476. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => 42)
  477. );
  478. res.Messages.AssertEqual(
  479. );
  480. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13 })
  481. {
  482. e.Subscriptions.AssertEqual(Subscribe(200, 1000));
  483. }
  484. }
  485. [TestMethod]
  486. public void CombineLatest_Never15()
  487. {
  488. var scheduler = new TestScheduler();
  489. var e0 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  490. var e1 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  491. var e2 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  492. var e3 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  493. var e4 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  494. var e5 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  495. var e6 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  496. var e7 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  497. var e8 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  498. var e9 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  499. var e10 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  500. var e11 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  501. var e12 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  502. var e13 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  503. var e14 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  504. var res = scheduler.Start(() =>
  505. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => 42)
  506. );
  507. res.Messages.AssertEqual(
  508. );
  509. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14 })
  510. {
  511. e.Subscriptions.AssertEqual(Subscribe(200, 1000));
  512. }
  513. }
  514. [TestMethod]
  515. public void CombineLatest_Never16()
  516. {
  517. var scheduler = new TestScheduler();
  518. var e0 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  519. var e1 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  520. var e2 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  521. var e3 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  522. var e4 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  523. var e5 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  524. var e6 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  525. var e7 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  526. var e8 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  527. var e9 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  528. var e10 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  529. var e11 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  530. var e12 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  531. var e13 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  532. var e14 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  533. var e15 = scheduler.CreateHotObservable([OnNext(150, 1)]);
  534. var res = scheduler.Start(() =>
  535. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => 42)
  536. );
  537. res.Messages.AssertEqual(
  538. );
  539. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15 })
  540. {
  541. e.Subscriptions.AssertEqual(Subscribe(200, 1000));
  542. }
  543. }
  544. #endregion
  545. #region Never/Empty
  546. [TestMethod]
  547. public void CombineLatest_NeverEmpty()
  548. {
  549. var scheduler = new TestScheduler();
  550. var n = scheduler.CreateHotObservable(
  551. OnNext(150, 1)
  552. );
  553. var e = scheduler.CreateHotObservable(
  554. OnNext(150, 1),
  555. OnCompleted<int>(210)
  556. );
  557. var res = scheduler.Start(() =>
  558. n.CombineLatest(e, (x, y) => x + y)
  559. );
  560. res.Messages.AssertEqual(
  561. );
  562. n.Subscriptions.AssertEqual(
  563. Subscribe(200, 1000)
  564. );
  565. e.Subscriptions.AssertEqual(
  566. Subscribe(200, 210)
  567. );
  568. }
  569. [TestMethod]
  570. public void CombineLatest_EmptyNever()
  571. {
  572. var scheduler = new TestScheduler();
  573. var e = scheduler.CreateHotObservable(
  574. OnNext(150, 1),
  575. OnCompleted<int>(210)
  576. );
  577. var n = scheduler.CreateHotObservable(
  578. OnNext(150, 1)
  579. );
  580. var res = scheduler.Start(() =>
  581. e.CombineLatest(n, (x, y) => x + y)
  582. );
  583. res.Messages.AssertEqual(
  584. );
  585. n.Subscriptions.AssertEqual(
  586. Subscribe(200, 1000)
  587. );
  588. e.Subscriptions.AssertEqual(
  589. Subscribe(200, 210)
  590. );
  591. }
  592. #endregion
  593. #region Empty
  594. [TestMethod]
  595. public void CombineLatest_EmptyN()
  596. {
  597. var scheduler = new TestScheduler();
  598. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(210)]);
  599. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(220)]);
  600. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(230)]);
  601. var res = scheduler.Start(() =>
  602. Observable.CombineLatest([e0, e1, e2], xs => xs.Sum())
  603. );
  604. res.Messages.AssertEqual(
  605. OnCompleted<int>(230)
  606. );
  607. var i = 0;
  608. foreach (var e in new[] { e0, e1, e2 })
  609. {
  610. e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10)));
  611. }
  612. }
  613. [TestMethod]
  614. public void CombineLatest_Empty2()
  615. {
  616. var scheduler = new TestScheduler();
  617. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(210)]);
  618. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(220)]);
  619. var res = scheduler.Start(() =>
  620. Observable.CombineLatest(e0, e1, (_0, _1) => 42)
  621. );
  622. res.Messages.AssertEqual(
  623. OnCompleted<int>(220)
  624. );
  625. var i = 0;
  626. foreach (var e in new[] { e0, e1 })
  627. {
  628. e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10)));
  629. }
  630. }
  631. [TestMethod]
  632. public void CombineLatest_Empty3()
  633. {
  634. var scheduler = new TestScheduler();
  635. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(210)]);
  636. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(220)]);
  637. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(230)]);
  638. var res = scheduler.Start(() =>
  639. Observable.CombineLatest(e0, e1, e2, (_0, _1, _2) => 42)
  640. );
  641. res.Messages.AssertEqual(
  642. OnCompleted<int>(230)
  643. );
  644. var i = 0;
  645. foreach (var e in new[] { e0, e1, e2 })
  646. {
  647. e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10)));
  648. }
  649. }
  650. [TestMethod]
  651. public void CombineLatest_Empty4()
  652. {
  653. var scheduler = new TestScheduler();
  654. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(210)]);
  655. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(220)]);
  656. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(230)]);
  657. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(240)]);
  658. var res = scheduler.Start(() =>
  659. Observable.CombineLatest(e0, e1, e2, e3, (_0, _1, _2, _3) => 42)
  660. );
  661. res.Messages.AssertEqual(
  662. OnCompleted<int>(240)
  663. );
  664. var i = 0;
  665. foreach (var e in new[] { e0, e1, e2, e3 })
  666. {
  667. e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10)));
  668. }
  669. }
  670. [TestMethod]
  671. public void CombineLatest_Empty5()
  672. {
  673. var scheduler = new TestScheduler();
  674. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(210)]);
  675. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(220)]);
  676. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(230)]);
  677. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(240)]);
  678. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  679. var res = scheduler.Start(() =>
  680. Observable.CombineLatest(e0, e1, e2, e3, e4, (_0, _1, _2, _3, _4) => 42)
  681. );
  682. res.Messages.AssertEqual(
  683. OnCompleted<int>(250)
  684. );
  685. var i = 0;
  686. foreach (var e in new[] { e0, e1, e2, e3, e4 })
  687. {
  688. e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10)));
  689. }
  690. }
  691. [TestMethod]
  692. public void CombineLatest_Empty6()
  693. {
  694. var scheduler = new TestScheduler();
  695. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(210)]);
  696. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(220)]);
  697. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(230)]);
  698. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(240)]);
  699. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  700. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  701. var res = scheduler.Start(() =>
  702. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, (_0, _1, _2, _3, _4, _5) => 42)
  703. );
  704. res.Messages.AssertEqual(
  705. OnCompleted<int>(260)
  706. );
  707. var i = 0;
  708. foreach (var e in new[] { e0, e1, e2, e3, e4, e5 })
  709. {
  710. e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10)));
  711. }
  712. }
  713. [TestMethod]
  714. public void CombineLatest_Empty7()
  715. {
  716. var scheduler = new TestScheduler();
  717. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(210)]);
  718. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(220)]);
  719. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(230)]);
  720. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(240)]);
  721. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  722. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  723. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  724. var res = scheduler.Start(() =>
  725. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, (_0, _1, _2, _3, _4, _5, _6) => 42)
  726. );
  727. res.Messages.AssertEqual(
  728. OnCompleted<int>(270)
  729. );
  730. var i = 0;
  731. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6 })
  732. {
  733. e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10)));
  734. }
  735. }
  736. [TestMethod]
  737. public void CombineLatest_Empty8()
  738. {
  739. var scheduler = new TestScheduler();
  740. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(210)]);
  741. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(220)]);
  742. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(230)]);
  743. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(240)]);
  744. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  745. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  746. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  747. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  748. var res = scheduler.Start(() =>
  749. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, (_0, _1, _2, _3, _4, _5, _6, _7) => 42)
  750. );
  751. res.Messages.AssertEqual(
  752. OnCompleted<int>(280)
  753. );
  754. var i = 0;
  755. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7 })
  756. {
  757. e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10)));
  758. }
  759. }
  760. [TestMethod]
  761. public void CombineLatest_Empty9()
  762. {
  763. var scheduler = new TestScheduler();
  764. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(210)]);
  765. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(220)]);
  766. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(230)]);
  767. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(240)]);
  768. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  769. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  770. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  771. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  772. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  773. var res = scheduler.Start(() =>
  774. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, (_0, _1, _2, _3, _4, _5, _6, _7, _8) => 42)
  775. );
  776. res.Messages.AssertEqual(
  777. OnCompleted<int>(290)
  778. );
  779. var i = 0;
  780. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8 })
  781. {
  782. e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10)));
  783. }
  784. }
  785. [TestMethod]
  786. public void CombineLatest_Empty10()
  787. {
  788. var scheduler = new TestScheduler();
  789. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(210)]);
  790. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(220)]);
  791. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(230)]);
  792. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(240)]);
  793. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  794. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  795. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  796. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  797. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  798. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(300)]);
  799. var res = scheduler.Start(() =>
  800. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) => 42)
  801. );
  802. res.Messages.AssertEqual(
  803. OnCompleted<int>(300)
  804. );
  805. var i = 0;
  806. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9 })
  807. {
  808. e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10)));
  809. }
  810. }
  811. [TestMethod]
  812. public void CombineLatest_Empty11()
  813. {
  814. var scheduler = new TestScheduler();
  815. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(210)]);
  816. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(220)]);
  817. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(230)]);
  818. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(240)]);
  819. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  820. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  821. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  822. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  823. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  824. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(300)]);
  825. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(310)]);
  826. var res = scheduler.Start(() =>
  827. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) => 42)
  828. );
  829. res.Messages.AssertEqual(
  830. OnCompleted<int>(310)
  831. );
  832. var i = 0;
  833. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10 })
  834. {
  835. e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10)));
  836. }
  837. }
  838. [TestMethod]
  839. public void CombineLatest_Empty12()
  840. {
  841. var scheduler = new TestScheduler();
  842. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(210)]);
  843. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(220)]);
  844. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(230)]);
  845. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(240)]);
  846. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  847. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  848. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  849. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  850. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  851. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(300)]);
  852. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(310)]);
  853. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(320)]);
  854. var res = scheduler.Start(() =>
  855. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) => 42)
  856. );
  857. res.Messages.AssertEqual(
  858. OnCompleted<int>(320)
  859. );
  860. var i = 0;
  861. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11 })
  862. {
  863. e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10)));
  864. }
  865. }
  866. [TestMethod]
  867. public void CombineLatest_Empty13()
  868. {
  869. var scheduler = new TestScheduler();
  870. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(210)]);
  871. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(220)]);
  872. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(230)]);
  873. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(240)]);
  874. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  875. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  876. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  877. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  878. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  879. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(300)]);
  880. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(310)]);
  881. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(320)]);
  882. var e12 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(330)]);
  883. var res = scheduler.Start(() =>
  884. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) => 42)
  885. );
  886. res.Messages.AssertEqual(
  887. OnCompleted<int>(330)
  888. );
  889. var i = 0;
  890. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12 })
  891. {
  892. e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10)));
  893. }
  894. }
  895. [TestMethod]
  896. public void CombineLatest_Empty14()
  897. {
  898. var scheduler = new TestScheduler();
  899. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(210)]);
  900. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(220)]);
  901. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(230)]);
  902. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(240)]);
  903. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  904. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  905. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  906. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  907. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  908. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(300)]);
  909. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(310)]);
  910. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(320)]);
  911. var e12 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(330)]);
  912. var e13 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(340)]);
  913. var res = scheduler.Start(() =>
  914. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => 42)
  915. );
  916. res.Messages.AssertEqual(
  917. OnCompleted<int>(340)
  918. );
  919. var i = 0;
  920. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13 })
  921. {
  922. e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10)));
  923. }
  924. }
  925. [TestMethod]
  926. public void CombineLatest_Empty15()
  927. {
  928. var scheduler = new TestScheduler();
  929. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(210)]);
  930. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(220)]);
  931. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(230)]);
  932. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(240)]);
  933. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  934. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  935. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  936. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  937. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  938. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(300)]);
  939. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(310)]);
  940. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(320)]);
  941. var e12 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(330)]);
  942. var e13 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(340)]);
  943. var e14 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(350)]);
  944. var res = scheduler.Start(() =>
  945. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => 42)
  946. );
  947. res.Messages.AssertEqual(
  948. OnCompleted<int>(350)
  949. );
  950. var i = 0;
  951. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14 })
  952. {
  953. e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10)));
  954. }
  955. }
  956. [TestMethod]
  957. public void CombineLatest_Empty16()
  958. {
  959. var scheduler = new TestScheduler();
  960. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(210)]);
  961. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(220)]);
  962. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(230)]);
  963. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(240)]);
  964. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  965. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  966. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  967. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  968. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  969. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(300)]);
  970. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(310)]);
  971. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(320)]);
  972. var e12 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(330)]);
  973. var e13 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(340)]);
  974. var e14 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(350)]);
  975. var e15 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(360)]);
  976. var res = scheduler.Start(() =>
  977. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => 42)
  978. );
  979. res.Messages.AssertEqual(
  980. OnCompleted<int>(360)
  981. );
  982. var i = 0;
  983. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15 })
  984. {
  985. e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10)));
  986. }
  987. }
  988. #endregion
  989. #region Empty/Return
  990. [TestMethod]
  991. public void CombineLatest_EmptyReturn()
  992. {
  993. var scheduler = new TestScheduler();
  994. var e = scheduler.CreateHotObservable(
  995. OnNext(150, 1),
  996. OnCompleted<int>(210)
  997. );
  998. var o = scheduler.CreateHotObservable(
  999. OnNext(150, 1),
  1000. OnNext(215, 2),
  1001. OnCompleted<int>(220)
  1002. );
  1003. var res = scheduler.Start(() =>
  1004. e.CombineLatest(o, (x, y) => x + y)
  1005. );
  1006. res.Messages.AssertEqual(
  1007. OnCompleted<int>(215)
  1008. );
  1009. e.Subscriptions.AssertEqual(
  1010. Subscribe(200, 210)
  1011. );
  1012. o.Subscriptions.AssertEqual(
  1013. Subscribe(200, 215)
  1014. );
  1015. }
  1016. [TestMethod]
  1017. public void CombineLatest_ReturnEmpty()
  1018. {
  1019. var scheduler = new TestScheduler();
  1020. var e = scheduler.CreateHotObservable(
  1021. OnNext(150, 1),
  1022. OnCompleted<int>(210)
  1023. );
  1024. var o = scheduler.CreateHotObservable(
  1025. OnNext(150, 1),
  1026. OnNext(215, 2),
  1027. OnCompleted<int>(220)
  1028. );
  1029. var res = scheduler.Start(() =>
  1030. o.CombineLatest(e, (x, y) => x + y)
  1031. );
  1032. res.Messages.AssertEqual(
  1033. OnCompleted<int>(215)
  1034. );
  1035. e.Subscriptions.AssertEqual(
  1036. Subscribe(200, 210)
  1037. );
  1038. o.Subscriptions.AssertEqual(
  1039. Subscribe(200, 215)
  1040. );
  1041. }
  1042. #endregion
  1043. #region Never/Return
  1044. [TestMethod]
  1045. public void CombineLatest_NeverReturn()
  1046. {
  1047. var scheduler = new TestScheduler();
  1048. var o = scheduler.CreateHotObservable(
  1049. OnNext(150, 1),
  1050. OnNext(215, 2),
  1051. OnCompleted<int>(220)
  1052. );
  1053. var n = scheduler.CreateHotObservable(
  1054. OnNext(150, 1)
  1055. );
  1056. var res = scheduler.Start(() =>
  1057. n.CombineLatest(o, (x, y) => x + y)
  1058. );
  1059. res.Messages.AssertEqual(
  1060. );
  1061. o.Subscriptions.AssertEqual(
  1062. Subscribe(200, 220)
  1063. );
  1064. n.Subscriptions.AssertEqual(
  1065. Subscribe(200, 1000)
  1066. );
  1067. }
  1068. [TestMethod]
  1069. public void CombineLatest_ReturnNever()
  1070. {
  1071. var scheduler = new TestScheduler();
  1072. var o = scheduler.CreateHotObservable(
  1073. OnNext(150, 1),
  1074. OnNext(215, 2),
  1075. OnCompleted<int>(220)
  1076. );
  1077. var n = scheduler.CreateHotObservable(
  1078. OnNext(150, 1)
  1079. );
  1080. var res = scheduler.Start(() =>
  1081. o.CombineLatest(n, (x, y) => x + y)
  1082. );
  1083. res.Messages.AssertEqual(
  1084. );
  1085. o.Subscriptions.AssertEqual(
  1086. Subscribe(200, 220)
  1087. );
  1088. n.Subscriptions.AssertEqual(
  1089. Subscribe(200, 1000)
  1090. );
  1091. }
  1092. #endregion
  1093. #region Return/Return
  1094. [TestMethod]
  1095. public void CombineLatest_ReturnReturn()
  1096. {
  1097. var scheduler = new TestScheduler();
  1098. var o1 = scheduler.CreateHotObservable(
  1099. OnNext(150, 1),
  1100. OnNext(215, 2),
  1101. OnCompleted<int>(230)
  1102. );
  1103. var o2 = scheduler.CreateHotObservable(
  1104. OnNext(150, 1),
  1105. OnNext(220, 3),
  1106. OnCompleted<int>(240)
  1107. );
  1108. var res = scheduler.Start(() =>
  1109. o1.CombineLatest(o2, (x, y) => x + y)
  1110. );
  1111. res.Messages.AssertEqual(
  1112. OnNext(220, 2 + 3),
  1113. OnCompleted<int>(240)
  1114. );
  1115. o1.Subscriptions.AssertEqual(
  1116. Subscribe(200, 230)
  1117. );
  1118. o2.Subscriptions.AssertEqual(
  1119. Subscribe(200, 240)
  1120. );
  1121. }
  1122. #endregion
  1123. #region Empty/Error
  1124. [TestMethod]
  1125. public void CombineLatest_EmptyError()
  1126. {
  1127. var scheduler = new TestScheduler();
  1128. var ex = new Exception();
  1129. var o1 = scheduler.CreateHotObservable(
  1130. OnNext(150, 1),
  1131. OnCompleted<int>(230)
  1132. );
  1133. var o2 = scheduler.CreateHotObservable(
  1134. OnNext(150, 1),
  1135. OnError<int>(220, ex)
  1136. );
  1137. var res = scheduler.Start(() =>
  1138. o1.CombineLatest(o2, (x, y) => x + y)
  1139. );
  1140. res.Messages.AssertEqual(
  1141. OnError<int>(220, ex)
  1142. );
  1143. o1.Subscriptions.AssertEqual(
  1144. Subscribe(200, 220)
  1145. );
  1146. o2.Subscriptions.AssertEqual(
  1147. Subscribe(200, 220)
  1148. );
  1149. }
  1150. [TestMethod]
  1151. public void CombineLatest_ErrorEmpty()
  1152. {
  1153. var scheduler = new TestScheduler();
  1154. var ex = new Exception();
  1155. var e = scheduler.CreateHotObservable(
  1156. OnNext(150, 1),
  1157. OnCompleted<int>(230)
  1158. );
  1159. var f = scheduler.CreateHotObservable(
  1160. OnNext(150, 1),
  1161. OnError<int>(220, ex)
  1162. );
  1163. var res = scheduler.Start(() =>
  1164. f.CombineLatest(e, (x, y) => x + y)
  1165. );
  1166. res.Messages.AssertEqual(
  1167. OnError<int>(220, ex)
  1168. );
  1169. e.Subscriptions.AssertEqual(
  1170. Subscribe(200, 220)
  1171. );
  1172. f.Subscriptions.AssertEqual(
  1173. Subscribe(200, 220)
  1174. );
  1175. }
  1176. #endregion
  1177. #region Return/Throw
  1178. [TestMethod]
  1179. public void CombineLatest_ReturnThrow()
  1180. {
  1181. var scheduler = new TestScheduler();
  1182. var ex = new Exception();
  1183. var o1 = scheduler.CreateHotObservable(
  1184. OnNext(150, 1),
  1185. OnNext(210, 2),
  1186. OnCompleted<int>(230)
  1187. );
  1188. var o2 = scheduler.CreateHotObservable(
  1189. OnNext(150, 1),
  1190. OnError<int>(220, ex)
  1191. );
  1192. var res = scheduler.Start(() =>
  1193. o1.CombineLatest(o2, (x, y) => x + y)
  1194. );
  1195. res.Messages.AssertEqual(
  1196. OnError<int>(220, ex)
  1197. );
  1198. o1.Subscriptions.AssertEqual(
  1199. Subscribe(200, 220)
  1200. );
  1201. o2.Subscriptions.AssertEqual(
  1202. Subscribe(200, 220)
  1203. );
  1204. }
  1205. [TestMethod]
  1206. public void CombineLatest_ThrowReturn()
  1207. {
  1208. var scheduler = new TestScheduler();
  1209. var ex = new Exception();
  1210. var o1 = scheduler.CreateHotObservable(
  1211. OnNext(150, 1),
  1212. OnNext(210, 2),
  1213. OnCompleted<int>(230)
  1214. );
  1215. var o2 = scheduler.CreateHotObservable(
  1216. OnNext(150, 1),
  1217. OnError<int>(220, ex)
  1218. );
  1219. var res = scheduler.Start(() =>
  1220. o2.CombineLatest(o1, (x, y) => x + y)
  1221. );
  1222. res.Messages.AssertEqual(
  1223. OnError<int>(220, ex)
  1224. );
  1225. o1.Subscriptions.AssertEqual(
  1226. Subscribe(200, 220)
  1227. );
  1228. o2.Subscriptions.AssertEqual(
  1229. Subscribe(200, 220)
  1230. );
  1231. }
  1232. #endregion
  1233. #region Throw/Throw
  1234. [TestMethod]
  1235. public void CombineLatest_ThrowThrow()
  1236. {
  1237. var scheduler = new TestScheduler();
  1238. var ex1 = new Exception();
  1239. var ex2 = new Exception();
  1240. var o1 = scheduler.CreateHotObservable(
  1241. OnNext(150, 1),
  1242. OnError<int>(220, ex1)
  1243. );
  1244. var o2 = scheduler.CreateHotObservable(
  1245. OnNext(150, 1),
  1246. OnError<int>(230, ex2)
  1247. );
  1248. var res = scheduler.Start(() =>
  1249. o2.CombineLatest(o1, (x, y) => x + y)
  1250. );
  1251. res.Messages.AssertEqual(
  1252. OnError<int>(220, ex1)
  1253. );
  1254. o1.Subscriptions.AssertEqual(
  1255. Subscribe(200, 220)
  1256. );
  1257. o2.Subscriptions.AssertEqual(
  1258. Subscribe(200, 220)
  1259. );
  1260. }
  1261. [TestMethod]
  1262. public void CombineLatest_ErrorThrow()
  1263. {
  1264. var scheduler = new TestScheduler();
  1265. var ex1 = new Exception();
  1266. var ex2 = new Exception();
  1267. var o1 = scheduler.CreateHotObservable(
  1268. OnNext(150, 1),
  1269. OnNext(210, 2),
  1270. OnError<int>(220, ex1)
  1271. );
  1272. var o2 = scheduler.CreateHotObservable(
  1273. OnNext(150, 1),
  1274. OnError<int>(230, ex2)
  1275. );
  1276. var res = scheduler.Start(() =>
  1277. o2.CombineLatest(o1, (x, y) => x + y)
  1278. );
  1279. res.Messages.AssertEqual(
  1280. OnError<int>(220, ex1)
  1281. );
  1282. o1.Subscriptions.AssertEqual(
  1283. Subscribe(200, 220)
  1284. );
  1285. o2.Subscriptions.AssertEqual(
  1286. Subscribe(200, 220)
  1287. );
  1288. }
  1289. [TestMethod]
  1290. public void CombineLatest_ThrowError()
  1291. {
  1292. var scheduler = new TestScheduler();
  1293. var ex1 = new Exception();
  1294. var ex2 = new Exception();
  1295. var o1 = scheduler.CreateHotObservable(
  1296. OnNext(150, 1),
  1297. OnNext(210, 2),
  1298. OnError<int>(220, ex1)
  1299. );
  1300. var o2 = scheduler.CreateHotObservable(
  1301. OnNext(150, 1),
  1302. OnError<int>(230, ex2)
  1303. );
  1304. var res = scheduler.Start(() =>
  1305. o1.CombineLatest(o2, (x, y) => x + y)
  1306. );
  1307. res.Messages.AssertEqual(
  1308. OnError<int>(220, ex1)
  1309. );
  1310. o1.Subscriptions.AssertEqual(
  1311. Subscribe(200, 220)
  1312. );
  1313. o2.Subscriptions.AssertEqual(
  1314. Subscribe(200, 220)
  1315. );
  1316. }
  1317. #endregion
  1318. #region Never/Throw
  1319. [TestMethod]
  1320. public void CombineLatest_NeverThrow()
  1321. {
  1322. var scheduler = new TestScheduler();
  1323. var ex = new Exception();
  1324. var o1 = scheduler.CreateHotObservable(
  1325. OnNext(150, 1)
  1326. );
  1327. var o2 = scheduler.CreateHotObservable(
  1328. OnNext(150, 1),
  1329. OnError<int>(220, ex)
  1330. );
  1331. var res = scheduler.Start(() =>
  1332. o1.CombineLatest(o2, (x, y) => x + y)
  1333. );
  1334. res.Messages.AssertEqual(
  1335. OnError<int>(220, ex)
  1336. );
  1337. o1.Subscriptions.AssertEqual(
  1338. Subscribe(200, 220)
  1339. );
  1340. o2.Subscriptions.AssertEqual(
  1341. Subscribe(200, 220)
  1342. );
  1343. }
  1344. [TestMethod]
  1345. public void CombineLatest_ThrowNever()
  1346. {
  1347. var scheduler = new TestScheduler();
  1348. var ex = new Exception();
  1349. var o1 = scheduler.CreateHotObservable(
  1350. OnNext(150, 1)
  1351. );
  1352. var o2 = scheduler.CreateHotObservable(
  1353. OnNext(150, 1),
  1354. OnError<int>(220, ex)
  1355. );
  1356. var res = scheduler.Start(() =>
  1357. o2.CombineLatest(o1, (x, y) => x + y)
  1358. );
  1359. res.Messages.AssertEqual(
  1360. OnError<int>(220, ex)
  1361. );
  1362. o1.Subscriptions.AssertEqual(
  1363. Subscribe(200, 220)
  1364. );
  1365. o2.Subscriptions.AssertEqual(
  1366. Subscribe(200, 220)
  1367. );
  1368. }
  1369. #endregion
  1370. #region Some/Throw
  1371. [TestMethod]
  1372. public void CombineLatest_SomeThrow()
  1373. {
  1374. var scheduler = new TestScheduler();
  1375. var ex = new Exception();
  1376. var o1 = scheduler.CreateHotObservable(
  1377. OnNext(150, 1),
  1378. OnNext(215, 2),
  1379. OnCompleted<int>(230)
  1380. );
  1381. var o2 = scheduler.CreateHotObservable(
  1382. OnNext(150, 1),
  1383. OnError<int>(220, ex)
  1384. );
  1385. var res = scheduler.Start(() =>
  1386. o1.CombineLatest(o2, (x, y) => x + y)
  1387. );
  1388. res.Messages.AssertEqual(
  1389. OnError<int>(220, ex)
  1390. );
  1391. o1.Subscriptions.AssertEqual(
  1392. Subscribe(200, 220)
  1393. );
  1394. o2.Subscriptions.AssertEqual(
  1395. Subscribe(200, 220)
  1396. );
  1397. }
  1398. [TestMethod]
  1399. public void CombineLatest_ThrowSome()
  1400. {
  1401. var scheduler = new TestScheduler();
  1402. var ex = new Exception();
  1403. var o1 = scheduler.CreateHotObservable(
  1404. OnNext(150, 1),
  1405. OnNext(215, 2),
  1406. OnCompleted<int>(230)
  1407. );
  1408. var o2 = scheduler.CreateHotObservable(
  1409. OnNext(150, 1),
  1410. OnError<int>(220, ex)
  1411. );
  1412. var res = scheduler.Start(() =>
  1413. o2.CombineLatest(o1, (x, y) => x + y)
  1414. );
  1415. res.Messages.AssertEqual(
  1416. OnError<int>(220, ex)
  1417. );
  1418. o1.Subscriptions.AssertEqual(
  1419. Subscribe(200, 220)
  1420. );
  1421. o2.Subscriptions.AssertEqual(
  1422. Subscribe(200, 220)
  1423. );
  1424. }
  1425. #endregion
  1426. #region ThrowAfterCompleted
  1427. [TestMethod]
  1428. public void CombineLatest_ThrowAfterCompleteLeft()
  1429. {
  1430. var scheduler = new TestScheduler();
  1431. var ex = new Exception();
  1432. var o1 = scheduler.CreateHotObservable(
  1433. OnNext(150, 1),
  1434. OnNext(215, 2),
  1435. OnCompleted<int>(220)
  1436. );
  1437. var o2 = scheduler.CreateHotObservable(
  1438. OnNext(150, 1),
  1439. OnError<int>(230, ex)
  1440. );
  1441. var res = scheduler.Start(() =>
  1442. o2.CombineLatest(o1, (x, y) => x + y)
  1443. );
  1444. res.Messages.AssertEqual(
  1445. OnError<int>(230, ex)
  1446. );
  1447. o1.Subscriptions.AssertEqual(
  1448. Subscribe(200, 220)
  1449. );
  1450. o2.Subscriptions.AssertEqual(
  1451. Subscribe(200, 230)
  1452. );
  1453. }
  1454. [TestMethod]
  1455. public void CombineLatest_ThrowAfterCompleteRight()
  1456. {
  1457. var scheduler = new TestScheduler();
  1458. var ex = new Exception();
  1459. var o1 = scheduler.CreateHotObservable(
  1460. OnNext(150, 1),
  1461. OnNext(215, 2),
  1462. OnCompleted<int>(220)
  1463. );
  1464. var o2 = scheduler.CreateHotObservable(
  1465. OnNext(150, 1),
  1466. OnError<int>(230, ex)
  1467. );
  1468. var res = scheduler.Start(() =>
  1469. o1.CombineLatest(o2, (x, y) => x + y)
  1470. );
  1471. res.Messages.AssertEqual(
  1472. OnError<int>(230, ex)
  1473. );
  1474. o1.Subscriptions.AssertEqual(
  1475. Subscribe(200, 220)
  1476. );
  1477. o2.Subscriptions.AssertEqual(
  1478. Subscribe(200, 230)
  1479. );
  1480. }
  1481. #endregion
  1482. #region Basics
  1483. [TestMethod]
  1484. public void CombineLatest_InterleavedWithTail()
  1485. {
  1486. var scheduler = new TestScheduler();
  1487. var o1 = scheduler.CreateHotObservable(
  1488. OnNext(150, 1),
  1489. OnNext(215, 2),
  1490. OnNext(225, 4),
  1491. OnCompleted<int>(230)
  1492. );
  1493. var o2 = scheduler.CreateHotObservable(
  1494. OnNext(150, 1),
  1495. OnNext(220, 3),
  1496. OnNext(230, 5),
  1497. OnNext(235, 6),
  1498. OnNext(240, 7),
  1499. OnCompleted<int>(250)
  1500. );
  1501. var res = scheduler.Start(() =>
  1502. o2.CombineLatest(o1, (x, y) => x + y)
  1503. );
  1504. res.Messages.AssertEqual(
  1505. OnNext(220, 2 + 3),
  1506. OnNext(225, 3 + 4),
  1507. OnNext(230, 4 + 5),
  1508. OnNext(235, 4 + 6),
  1509. OnNext(240, 4 + 7),
  1510. OnCompleted<int>(250)
  1511. );
  1512. o1.Subscriptions.AssertEqual(
  1513. Subscribe(200, 230)
  1514. );
  1515. o2.Subscriptions.AssertEqual(
  1516. Subscribe(200, 250)
  1517. );
  1518. }
  1519. [TestMethod]
  1520. public void CombineLatest_Consecutive()
  1521. {
  1522. var scheduler = new TestScheduler();
  1523. var o1 = scheduler.CreateHotObservable(
  1524. OnNext(150, 1),
  1525. OnNext(215, 2),
  1526. OnNext(225, 4),
  1527. OnCompleted<int>(230)
  1528. );
  1529. var o2 = scheduler.CreateHotObservable(
  1530. OnNext(150, 1),
  1531. OnNext(235, 6),
  1532. OnNext(240, 7),
  1533. OnCompleted<int>(250)
  1534. );
  1535. var res = scheduler.Start(() =>
  1536. o2.CombineLatest(o1, (x, y) => x + y)
  1537. );
  1538. res.Messages.AssertEqual(
  1539. OnNext(235, 4 + 6),
  1540. OnNext(240, 4 + 7),
  1541. OnCompleted<int>(250)
  1542. );
  1543. o1.Subscriptions.AssertEqual(
  1544. Subscribe(200, 230)
  1545. );
  1546. o2.Subscriptions.AssertEqual(
  1547. Subscribe(200, 250)
  1548. );
  1549. }
  1550. [TestMethod]
  1551. public void CombineLatest_ConsecutiveEndWithErrorLeft()
  1552. {
  1553. var scheduler = new TestScheduler();
  1554. var ex = new Exception();
  1555. var o1 = scheduler.CreateHotObservable(
  1556. OnNext(150, 1),
  1557. OnNext(215, 2),
  1558. OnNext(225, 4),
  1559. OnError<int>(230, ex)
  1560. );
  1561. var o2 = scheduler.CreateHotObservable(
  1562. OnNext(150, 1),
  1563. OnNext(235, 6),
  1564. OnNext(240, 7),
  1565. OnCompleted<int>(250)
  1566. );
  1567. var res = scheduler.Start(() =>
  1568. o2.CombineLatest(o1, (x, y) => x + y)
  1569. );
  1570. res.Messages.AssertEqual(
  1571. OnError<int>(230, ex)
  1572. );
  1573. o1.Subscriptions.AssertEqual(
  1574. Subscribe(200, 230)
  1575. );
  1576. o2.Subscriptions.AssertEqual(
  1577. Subscribe(200, 230)
  1578. );
  1579. }
  1580. [TestMethod]
  1581. public void CombineLatest_ConsecutiveEndWithErrorRight()
  1582. {
  1583. var scheduler = new TestScheduler();
  1584. var ex = new Exception();
  1585. var o1 = scheduler.CreateHotObservable(
  1586. OnNext(150, 1),
  1587. OnNext(215, 2),
  1588. OnNext(225, 4),
  1589. OnCompleted<int>(250)
  1590. );
  1591. var o2 = scheduler.CreateHotObservable(
  1592. OnNext(150, 1),
  1593. OnNext(235, 6),
  1594. OnNext(240, 7),
  1595. OnError<int>(245, ex)
  1596. );
  1597. var res = scheduler.Start(() =>
  1598. o2.CombineLatest(o1, (x, y) => x + y)
  1599. );
  1600. res.Messages.AssertEqual(
  1601. OnNext(235, 4 + 6),
  1602. OnNext(240, 4 + 7),
  1603. OnError<int>(245, ex)
  1604. );
  1605. o1.Subscriptions.AssertEqual(
  1606. Subscribe(200, 245)
  1607. );
  1608. o2.Subscriptions.AssertEqual(
  1609. Subscribe(200, 245)
  1610. );
  1611. }
  1612. #endregion
  1613. #region SelectorThrows
  1614. [TestMethod]
  1615. public void CombineLatest_SelectorThrows()
  1616. {
  1617. var scheduler = new TestScheduler();
  1618. var o1 = scheduler.CreateHotObservable(
  1619. OnNext(150, 1),
  1620. OnNext(215, 2),
  1621. OnCompleted<int>(230)
  1622. );
  1623. var o2 = scheduler.CreateHotObservable(
  1624. OnNext(150, 1),
  1625. OnNext(220, 3),
  1626. OnCompleted<int>(240)
  1627. );
  1628. var ex = new Exception();
  1629. var res = scheduler.Start(() =>
  1630. o2.CombineLatest<int, int, int>(o1, (x, y) => { throw ex; })
  1631. );
  1632. res.Messages.AssertEqual(
  1633. OnError<int>(220, ex)
  1634. );
  1635. o1.Subscriptions.AssertEqual(
  1636. Subscribe(200, 220)
  1637. );
  1638. o2.Subscriptions.AssertEqual(
  1639. Subscribe(200, 220)
  1640. );
  1641. }
  1642. [TestMethod]
  1643. public void CombineLatest_SelectorThrowsN()
  1644. {
  1645. var scheduler = new TestScheduler();
  1646. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnCompleted<int>(400)]);
  1647. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnCompleted<int>(400)]);
  1648. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnCompleted<int>(400)]);
  1649. var ex = new Exception();
  1650. Func<IList<int>, int> f = xs => { throw ex; };
  1651. var res = scheduler.Start(() =>
  1652. Observable.CombineLatest([e0, e1, e2], f)
  1653. );
  1654. res.Messages.AssertEqual(
  1655. OnError<int>(230, ex)
  1656. );
  1657. var es = new[] { e0, e1, e2 };
  1658. foreach (var e in es)
  1659. {
  1660. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length));
  1661. }
  1662. }
  1663. [TestMethod]
  1664. public void CombineLatest_SelectorThrows2()
  1665. {
  1666. var scheduler = new TestScheduler();
  1667. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnCompleted<int>(400)]);
  1668. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnCompleted<int>(400)]);
  1669. var ex = new Exception();
  1670. Func<int> f = () => { throw ex; };
  1671. var res = scheduler.Start(() =>
  1672. Observable.CombineLatest(e0, e1, (_0, _1) => f())
  1673. );
  1674. res.Messages.AssertEqual(
  1675. OnError<int>(220, ex)
  1676. );
  1677. var es = new[] { e0, e1 };
  1678. foreach (var e in es)
  1679. {
  1680. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length));
  1681. }
  1682. }
  1683. [TestMethod]
  1684. public void CombineLatest_SelectorThrows3()
  1685. {
  1686. var scheduler = new TestScheduler();
  1687. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnCompleted<int>(400)]);
  1688. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnCompleted<int>(400)]);
  1689. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnCompleted<int>(400)]);
  1690. var ex = new Exception();
  1691. Func<int> f = () => { throw ex; };
  1692. var res = scheduler.Start(() =>
  1693. Observable.CombineLatest(e0, e1, e2, (_0, _1, _2) => f())
  1694. );
  1695. res.Messages.AssertEqual(
  1696. OnError<int>(230, ex)
  1697. );
  1698. var es = new[] { e0, e1, e2 };
  1699. foreach (var e in es)
  1700. {
  1701. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length));
  1702. }
  1703. }
  1704. [TestMethod]
  1705. public void CombineLatest_SelectorThrows4()
  1706. {
  1707. var scheduler = new TestScheduler();
  1708. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnCompleted<int>(400)]);
  1709. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnCompleted<int>(400)]);
  1710. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnCompleted<int>(400)]);
  1711. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnCompleted<int>(400)]);
  1712. var ex = new Exception();
  1713. Func<int> f = () => { throw ex; };
  1714. var res = scheduler.Start(() =>
  1715. Observable.CombineLatest(e0, e1, e2, e3, (_0, _1, _2, _3) => f())
  1716. );
  1717. res.Messages.AssertEqual(
  1718. OnError<int>(240, ex)
  1719. );
  1720. var es = new[] { e0, e1, e2, e3 };
  1721. foreach (var e in es)
  1722. {
  1723. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length));
  1724. }
  1725. }
  1726. [TestMethod]
  1727. public void CombineLatest_SelectorThrows5()
  1728. {
  1729. var scheduler = new TestScheduler();
  1730. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnCompleted<int>(400)]);
  1731. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnCompleted<int>(400)]);
  1732. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnCompleted<int>(400)]);
  1733. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnCompleted<int>(400)]);
  1734. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnCompleted<int>(400)]);
  1735. var ex = new Exception();
  1736. Func<int> f = () => { throw ex; };
  1737. var res = scheduler.Start(() =>
  1738. Observable.CombineLatest(e0, e1, e2, e3, e4, (_0, _1, _2, _3, _4) => f())
  1739. );
  1740. res.Messages.AssertEqual(
  1741. OnError<int>(250, ex)
  1742. );
  1743. var es = new[] { e0, e1, e2, e3, e4 };
  1744. foreach (var e in es)
  1745. {
  1746. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length));
  1747. }
  1748. }
  1749. [TestMethod]
  1750. public void CombineLatest_SelectorThrows6()
  1751. {
  1752. var scheduler = new TestScheduler();
  1753. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnCompleted<int>(400)]);
  1754. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnCompleted<int>(400)]);
  1755. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnCompleted<int>(400)]);
  1756. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnCompleted<int>(400)]);
  1757. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnCompleted<int>(400)]);
  1758. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnCompleted<int>(400)]);
  1759. var ex = new Exception();
  1760. Func<int> f = () => { throw ex; };
  1761. var res = scheduler.Start(() =>
  1762. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, (_0, _1, _2, _3, _4, _5) => f())
  1763. );
  1764. res.Messages.AssertEqual(
  1765. OnError<int>(260, ex)
  1766. );
  1767. var es = new[] { e0, e1, e2, e3, e4, e5 };
  1768. foreach (var e in es)
  1769. {
  1770. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length));
  1771. }
  1772. }
  1773. [TestMethod]
  1774. public void CombineLatest_SelectorThrows7()
  1775. {
  1776. var scheduler = new TestScheduler();
  1777. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnCompleted<int>(400)]);
  1778. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnCompleted<int>(400)]);
  1779. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnCompleted<int>(400)]);
  1780. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnCompleted<int>(400)]);
  1781. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnCompleted<int>(400)]);
  1782. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnCompleted<int>(400)]);
  1783. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnCompleted<int>(400)]);
  1784. var ex = new Exception();
  1785. Func<int> f = () => { throw ex; };
  1786. var res = scheduler.Start(() =>
  1787. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, (_0, _1, _2, _3, _4, _5, _6) => f())
  1788. );
  1789. res.Messages.AssertEqual(
  1790. OnError<int>(270, ex)
  1791. );
  1792. var es = new[] { e0, e1, e2, e3, e4, e5, e6 };
  1793. foreach (var e in es)
  1794. {
  1795. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length));
  1796. }
  1797. }
  1798. [TestMethod]
  1799. public void CombineLatest_SelectorThrows8()
  1800. {
  1801. var scheduler = new TestScheduler();
  1802. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnCompleted<int>(400)]);
  1803. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnCompleted<int>(400)]);
  1804. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnCompleted<int>(400)]);
  1805. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnCompleted<int>(400)]);
  1806. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnCompleted<int>(400)]);
  1807. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnCompleted<int>(400)]);
  1808. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnCompleted<int>(400)]);
  1809. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(280, 8), OnCompleted<int>(400)]);
  1810. var ex = new Exception();
  1811. Func<int> f = () => { throw ex; };
  1812. var res = scheduler.Start(() =>
  1813. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, (_0, _1, _2, _3, _4, _5, _6, _7) => f())
  1814. );
  1815. res.Messages.AssertEqual(
  1816. OnError<int>(280, ex)
  1817. );
  1818. var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7 };
  1819. foreach (var e in es)
  1820. {
  1821. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length));
  1822. }
  1823. }
  1824. [TestMethod]
  1825. public void CombineLatest_SelectorThrows9()
  1826. {
  1827. var scheduler = new TestScheduler();
  1828. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnCompleted<int>(400)]);
  1829. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnCompleted<int>(400)]);
  1830. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnCompleted<int>(400)]);
  1831. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnCompleted<int>(400)]);
  1832. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnCompleted<int>(400)]);
  1833. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnCompleted<int>(400)]);
  1834. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnCompleted<int>(400)]);
  1835. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(280, 8), OnCompleted<int>(400)]);
  1836. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(290, 9), OnCompleted<int>(400)]);
  1837. var ex = new Exception();
  1838. Func<int> f = () => { throw ex; };
  1839. var res = scheduler.Start(() =>
  1840. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, (_0, _1, _2, _3, _4, _5, _6, _7, _8) => f())
  1841. );
  1842. res.Messages.AssertEqual(
  1843. OnError<int>(290, ex)
  1844. );
  1845. var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8 };
  1846. foreach (var e in es)
  1847. {
  1848. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length));
  1849. }
  1850. }
  1851. [TestMethod]
  1852. public void CombineLatest_SelectorThrows10()
  1853. {
  1854. var scheduler = new TestScheduler();
  1855. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnCompleted<int>(400)]);
  1856. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnCompleted<int>(400)]);
  1857. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnCompleted<int>(400)]);
  1858. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnCompleted<int>(400)]);
  1859. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnCompleted<int>(400)]);
  1860. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnCompleted<int>(400)]);
  1861. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnCompleted<int>(400)]);
  1862. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(280, 8), OnCompleted<int>(400)]);
  1863. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(290, 9), OnCompleted<int>(400)]);
  1864. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(300, 10), OnCompleted<int>(400)]);
  1865. var ex = new Exception();
  1866. Func<int> f = () => { throw ex; };
  1867. var res = scheduler.Start(() =>
  1868. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) => f())
  1869. );
  1870. res.Messages.AssertEqual(
  1871. OnError<int>(300, ex)
  1872. );
  1873. var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9 };
  1874. foreach (var e in es)
  1875. {
  1876. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length));
  1877. }
  1878. }
  1879. [TestMethod]
  1880. public void CombineLatest_SelectorThrows11()
  1881. {
  1882. var scheduler = new TestScheduler();
  1883. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnCompleted<int>(400)]);
  1884. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnCompleted<int>(400)]);
  1885. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnCompleted<int>(400)]);
  1886. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnCompleted<int>(400)]);
  1887. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnCompleted<int>(400)]);
  1888. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnCompleted<int>(400)]);
  1889. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnCompleted<int>(400)]);
  1890. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(280, 8), OnCompleted<int>(400)]);
  1891. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(290, 9), OnCompleted<int>(400)]);
  1892. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(300, 10), OnCompleted<int>(400)]);
  1893. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(310, 11), OnCompleted<int>(400)]);
  1894. var ex = new Exception();
  1895. Func<int> f = () => { throw ex; };
  1896. var res = scheduler.Start(() =>
  1897. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) => f())
  1898. );
  1899. res.Messages.AssertEqual(
  1900. OnError<int>(310, ex)
  1901. );
  1902. var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10 };
  1903. foreach (var e in es)
  1904. {
  1905. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length));
  1906. }
  1907. }
  1908. [TestMethod]
  1909. public void CombineLatest_SelectorThrows12()
  1910. {
  1911. var scheduler = new TestScheduler();
  1912. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnCompleted<int>(400)]);
  1913. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnCompleted<int>(400)]);
  1914. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnCompleted<int>(400)]);
  1915. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnCompleted<int>(400)]);
  1916. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnCompleted<int>(400)]);
  1917. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnCompleted<int>(400)]);
  1918. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnCompleted<int>(400)]);
  1919. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(280, 8), OnCompleted<int>(400)]);
  1920. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(290, 9), OnCompleted<int>(400)]);
  1921. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(300, 10), OnCompleted<int>(400)]);
  1922. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(310, 11), OnCompleted<int>(400)]);
  1923. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(320, 12), OnCompleted<int>(400)]);
  1924. var ex = new Exception();
  1925. Func<int> f = () => { throw ex; };
  1926. var res = scheduler.Start(() =>
  1927. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) => f())
  1928. );
  1929. res.Messages.AssertEqual(
  1930. OnError<int>(320, ex)
  1931. );
  1932. var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11 };
  1933. foreach (var e in es)
  1934. {
  1935. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length));
  1936. }
  1937. }
  1938. [TestMethod]
  1939. public void CombineLatest_SelectorThrows13()
  1940. {
  1941. var scheduler = new TestScheduler();
  1942. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnCompleted<int>(400)]);
  1943. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnCompleted<int>(400)]);
  1944. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnCompleted<int>(400)]);
  1945. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnCompleted<int>(400)]);
  1946. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnCompleted<int>(400)]);
  1947. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnCompleted<int>(400)]);
  1948. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnCompleted<int>(400)]);
  1949. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(280, 8), OnCompleted<int>(400)]);
  1950. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(290, 9), OnCompleted<int>(400)]);
  1951. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(300, 10), OnCompleted<int>(400)]);
  1952. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(310, 11), OnCompleted<int>(400)]);
  1953. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(320, 12), OnCompleted<int>(400)]);
  1954. var e12 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(330, 13), OnCompleted<int>(400)]);
  1955. var ex = new Exception();
  1956. Func<int> f = () => { throw ex; };
  1957. var res = scheduler.Start(() =>
  1958. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) => f())
  1959. );
  1960. res.Messages.AssertEqual(
  1961. OnError<int>(330, ex)
  1962. );
  1963. var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12 };
  1964. foreach (var e in es)
  1965. {
  1966. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length));
  1967. }
  1968. }
  1969. [TestMethod]
  1970. public void CombineLatest_SelectorThrows14()
  1971. {
  1972. var scheduler = new TestScheduler();
  1973. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnCompleted<int>(400)]);
  1974. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnCompleted<int>(400)]);
  1975. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnCompleted<int>(400)]);
  1976. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnCompleted<int>(400)]);
  1977. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnCompleted<int>(400)]);
  1978. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnCompleted<int>(400)]);
  1979. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnCompleted<int>(400)]);
  1980. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(280, 8), OnCompleted<int>(400)]);
  1981. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(290, 9), OnCompleted<int>(400)]);
  1982. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(300, 10), OnCompleted<int>(400)]);
  1983. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(310, 11), OnCompleted<int>(400)]);
  1984. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(320, 12), OnCompleted<int>(400)]);
  1985. var e12 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(330, 13), OnCompleted<int>(400)]);
  1986. var e13 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(340, 14), OnCompleted<int>(400)]);
  1987. var ex = new Exception();
  1988. Func<int> f = () => { throw ex; };
  1989. var res = scheduler.Start(() =>
  1990. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => f())
  1991. );
  1992. res.Messages.AssertEqual(
  1993. OnError<int>(340, ex)
  1994. );
  1995. var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13 };
  1996. foreach (var e in es)
  1997. {
  1998. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length));
  1999. }
  2000. }
  2001. [TestMethod]
  2002. public void CombineLatest_SelectorThrows15()
  2003. {
  2004. var scheduler = new TestScheduler();
  2005. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnCompleted<int>(400)]);
  2006. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnCompleted<int>(400)]);
  2007. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnCompleted<int>(400)]);
  2008. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnCompleted<int>(400)]);
  2009. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnCompleted<int>(400)]);
  2010. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnCompleted<int>(400)]);
  2011. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnCompleted<int>(400)]);
  2012. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(280, 8), OnCompleted<int>(400)]);
  2013. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(290, 9), OnCompleted<int>(400)]);
  2014. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(300, 10), OnCompleted<int>(400)]);
  2015. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(310, 11), OnCompleted<int>(400)]);
  2016. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(320, 12), OnCompleted<int>(400)]);
  2017. var e12 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(330, 13), OnCompleted<int>(400)]);
  2018. var e13 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(340, 14), OnCompleted<int>(400)]);
  2019. var e14 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(350, 15), OnCompleted<int>(400)]);
  2020. var ex = new Exception();
  2021. Func<int> f = () => { throw ex; };
  2022. var res = scheduler.Start(() =>
  2023. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => f())
  2024. );
  2025. res.Messages.AssertEqual(
  2026. OnError<int>(350, ex)
  2027. );
  2028. var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14 };
  2029. foreach (var e in es)
  2030. {
  2031. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length));
  2032. }
  2033. }
  2034. [TestMethod]
  2035. public void CombineLatest_SelectorThrows16()
  2036. {
  2037. var scheduler = new TestScheduler();
  2038. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnCompleted<int>(400)]);
  2039. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnCompleted<int>(400)]);
  2040. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnCompleted<int>(400)]);
  2041. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnCompleted<int>(400)]);
  2042. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnCompleted<int>(400)]);
  2043. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnCompleted<int>(400)]);
  2044. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnCompleted<int>(400)]);
  2045. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(280, 8), OnCompleted<int>(400)]);
  2046. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(290, 9), OnCompleted<int>(400)]);
  2047. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(300, 10), OnCompleted<int>(400)]);
  2048. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(310, 11), OnCompleted<int>(400)]);
  2049. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(320, 12), OnCompleted<int>(400)]);
  2050. var e12 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(330, 13), OnCompleted<int>(400)]);
  2051. var e13 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(340, 14), OnCompleted<int>(400)]);
  2052. var e14 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(350, 15), OnCompleted<int>(400)]);
  2053. var e15 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(360, 16), OnCompleted<int>(400)]);
  2054. var ex = new Exception();
  2055. Func<int> f = () => { throw ex; };
  2056. var res = scheduler.Start(() =>
  2057. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => f())
  2058. );
  2059. res.Messages.AssertEqual(
  2060. OnError<int>(360, ex)
  2061. );
  2062. var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15 };
  2063. foreach (var e in es)
  2064. {
  2065. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length));
  2066. }
  2067. }
  2068. #endregion
  2069. #region AllEmptyButOne
  2070. [TestMethod]
  2071. public void CombineLatest_WillNeverBeAbleToCombineN()
  2072. {
  2073. var scheduler = new TestScheduler();
  2074. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  2075. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  2076. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(500, 2), OnCompleted<int>(800)]);
  2077. var res = scheduler.Start(() =>
  2078. Observable.CombineLatest([e0, e1, e2], xs => 42)
  2079. );
  2080. res.Messages.AssertEqual(
  2081. OnCompleted<int>(500)
  2082. );
  2083. var i = 0;
  2084. var es = new[] { e0, e1, e2 };
  2085. foreach (var e in es.Take(es.Length - 1))
  2086. {
  2087. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10)));
  2088. }
  2089. es.Last().Subscriptions.AssertEqual(Subscribe(200, 500));
  2090. }
  2091. [TestMethod]
  2092. public void CombineLatest_WillNeverBeAbleToCombine2()
  2093. {
  2094. var scheduler = new TestScheduler();
  2095. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  2096. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(500, 2), OnCompleted<int>(800)]);
  2097. var res = scheduler.Start(() =>
  2098. Observable.CombineLatest(e0, e1, (_0, _1) => 42)
  2099. );
  2100. res.Messages.AssertEqual(
  2101. OnCompleted<int>(500)
  2102. );
  2103. var i = 0;
  2104. var es = new[] { e0, e1 };
  2105. foreach (var e in es.Take(es.Length - 1))
  2106. {
  2107. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10)));
  2108. }
  2109. es.Last().Subscriptions.AssertEqual(Subscribe(200, 500));
  2110. }
  2111. [TestMethod]
  2112. public void CombineLatest_WillNeverBeAbleToCombine3()
  2113. {
  2114. var scheduler = new TestScheduler();
  2115. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  2116. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  2117. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(500, 2), OnCompleted<int>(800)]);
  2118. var res = scheduler.Start(() =>
  2119. Observable.CombineLatest(e0, e1, e2, (_0, _1, _2) => 42)
  2120. );
  2121. res.Messages.AssertEqual(
  2122. OnCompleted<int>(500)
  2123. );
  2124. var i = 0;
  2125. var es = new[] { e0, e1, e2 };
  2126. foreach (var e in es.Take(es.Length - 1))
  2127. {
  2128. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10)));
  2129. }
  2130. es.Last().Subscriptions.AssertEqual(Subscribe(200, 500));
  2131. }
  2132. [TestMethod]
  2133. public void CombineLatest_WillNeverBeAbleToCombine4()
  2134. {
  2135. var scheduler = new TestScheduler();
  2136. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  2137. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  2138. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  2139. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(500, 2), OnCompleted<int>(800)]);
  2140. var res = scheduler.Start(() =>
  2141. Observable.CombineLatest(e0, e1, e2, e3, (_0, _1, _2, _3) => 42)
  2142. );
  2143. res.Messages.AssertEqual(
  2144. OnCompleted<int>(500)
  2145. );
  2146. var i = 0;
  2147. var es = new[] { e0, e1, e2, e3 };
  2148. foreach (var e in es.Take(es.Length - 1))
  2149. {
  2150. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10)));
  2151. }
  2152. es.Last().Subscriptions.AssertEqual(Subscribe(200, 500));
  2153. }
  2154. [TestMethod]
  2155. public void CombineLatest_WillNeverBeAbleToCombine5()
  2156. {
  2157. var scheduler = new TestScheduler();
  2158. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  2159. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  2160. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  2161. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  2162. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(500, 2), OnCompleted<int>(800)]);
  2163. var res = scheduler.Start(() =>
  2164. Observable.CombineLatest(e0, e1, e2, e3, e4, (_0, _1, _2, _3, _4) => 42)
  2165. );
  2166. res.Messages.AssertEqual(
  2167. OnCompleted<int>(500)
  2168. );
  2169. var i = 0;
  2170. var es = new[] { e0, e1, e2, e3, e4 };
  2171. foreach (var e in es.Take(es.Length - 1))
  2172. {
  2173. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10)));
  2174. }
  2175. es.Last().Subscriptions.AssertEqual(Subscribe(200, 500));
  2176. }
  2177. [TestMethod]
  2178. public void CombineLatest_WillNeverBeAbleToCombine6()
  2179. {
  2180. var scheduler = new TestScheduler();
  2181. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  2182. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  2183. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  2184. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  2185. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  2186. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(500, 2), OnCompleted<int>(800)]);
  2187. var res = scheduler.Start(() =>
  2188. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, (_0, _1, _2, _3, _4, _5) => 42)
  2189. );
  2190. res.Messages.AssertEqual(
  2191. OnCompleted<int>(500)
  2192. );
  2193. var i = 0;
  2194. var es = new[] { e0, e1, e2, e3, e4, e5 };
  2195. foreach (var e in es.Take(es.Length - 1))
  2196. {
  2197. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10)));
  2198. }
  2199. es.Last().Subscriptions.AssertEqual(Subscribe(200, 500));
  2200. }
  2201. [TestMethod]
  2202. public void CombineLatest_WillNeverBeAbleToCombine7()
  2203. {
  2204. var scheduler = new TestScheduler();
  2205. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  2206. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  2207. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  2208. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  2209. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  2210. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(300)]);
  2211. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(500, 2), OnCompleted<int>(800)]);
  2212. var res = scheduler.Start(() =>
  2213. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, (_0, _1, _2, _3, _4, _5, _6) => 42)
  2214. );
  2215. res.Messages.AssertEqual(
  2216. OnCompleted<int>(500)
  2217. );
  2218. var i = 0;
  2219. var es = new[] { e0, e1, e2, e3, e4, e5, e6 };
  2220. foreach (var e in es.Take(es.Length - 1))
  2221. {
  2222. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10)));
  2223. }
  2224. es.Last().Subscriptions.AssertEqual(Subscribe(200, 500));
  2225. }
  2226. [TestMethod]
  2227. public void CombineLatest_WillNeverBeAbleToCombine8()
  2228. {
  2229. var scheduler = new TestScheduler();
  2230. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  2231. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  2232. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  2233. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  2234. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  2235. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(300)]);
  2236. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(310)]);
  2237. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(500, 2), OnCompleted<int>(800)]);
  2238. var res = scheduler.Start(() =>
  2239. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, (_0, _1, _2, _3, _4, _5, _6, _7) => 42)
  2240. );
  2241. res.Messages.AssertEqual(
  2242. OnCompleted<int>(500)
  2243. );
  2244. var i = 0;
  2245. var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7 };
  2246. foreach (var e in es.Take(es.Length - 1))
  2247. {
  2248. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10)));
  2249. }
  2250. es.Last().Subscriptions.AssertEqual(Subscribe(200, 500));
  2251. }
  2252. [TestMethod]
  2253. public void CombineLatest_WillNeverBeAbleToCombine9()
  2254. {
  2255. var scheduler = new TestScheduler();
  2256. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  2257. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  2258. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  2259. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  2260. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  2261. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(300)]);
  2262. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(310)]);
  2263. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(320)]);
  2264. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(500, 2), OnCompleted<int>(800)]);
  2265. var res = scheduler.Start(() =>
  2266. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, (_0, _1, _2, _3, _4, _5, _6, _7, _8) => 42)
  2267. );
  2268. res.Messages.AssertEqual(
  2269. OnCompleted<int>(500)
  2270. );
  2271. var i = 0;
  2272. var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8 };
  2273. foreach (var e in es.Take(es.Length - 1))
  2274. {
  2275. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10)));
  2276. }
  2277. es.Last().Subscriptions.AssertEqual(Subscribe(200, 500));
  2278. }
  2279. [TestMethod]
  2280. public void CombineLatest_WillNeverBeAbleToCombine10()
  2281. {
  2282. var scheduler = new TestScheduler();
  2283. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  2284. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  2285. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  2286. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  2287. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  2288. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(300)]);
  2289. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(310)]);
  2290. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(320)]);
  2291. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(330)]);
  2292. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(500, 2), OnCompleted<int>(800)]);
  2293. var res = scheduler.Start(() =>
  2294. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) => 42)
  2295. );
  2296. res.Messages.AssertEqual(
  2297. OnCompleted<int>(500)
  2298. );
  2299. var i = 0;
  2300. var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9 };
  2301. foreach (var e in es.Take(es.Length - 1))
  2302. {
  2303. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10)));
  2304. }
  2305. es.Last().Subscriptions.AssertEqual(Subscribe(200, 500));
  2306. }
  2307. [TestMethod]
  2308. public void CombineLatest_WillNeverBeAbleToCombine11()
  2309. {
  2310. var scheduler = new TestScheduler();
  2311. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  2312. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  2313. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  2314. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  2315. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  2316. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(300)]);
  2317. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(310)]);
  2318. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(320)]);
  2319. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(330)]);
  2320. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(340)]);
  2321. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(500, 2), OnCompleted<int>(800)]);
  2322. var res = scheduler.Start(() =>
  2323. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) => 42)
  2324. );
  2325. res.Messages.AssertEqual(
  2326. OnCompleted<int>(500)
  2327. );
  2328. var i = 0;
  2329. var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10 };
  2330. foreach (var e in es.Take(es.Length - 1))
  2331. {
  2332. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10)));
  2333. }
  2334. es.Last().Subscriptions.AssertEqual(Subscribe(200, 500));
  2335. }
  2336. [TestMethod]
  2337. public void CombineLatest_WillNeverBeAbleToCombine12()
  2338. {
  2339. var scheduler = new TestScheduler();
  2340. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  2341. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  2342. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  2343. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  2344. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  2345. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(300)]);
  2346. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(310)]);
  2347. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(320)]);
  2348. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(330)]);
  2349. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(340)]);
  2350. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(350)]);
  2351. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(500, 2), OnCompleted<int>(800)]);
  2352. var res = scheduler.Start(() =>
  2353. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) => 42)
  2354. );
  2355. res.Messages.AssertEqual(
  2356. OnCompleted<int>(500)
  2357. );
  2358. var i = 0;
  2359. var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11 };
  2360. foreach (var e in es.Take(es.Length - 1))
  2361. {
  2362. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10)));
  2363. }
  2364. es.Last().Subscriptions.AssertEqual(Subscribe(200, 500));
  2365. }
  2366. [TestMethod]
  2367. public void CombineLatest_WillNeverBeAbleToCombine13()
  2368. {
  2369. var scheduler = new TestScheduler();
  2370. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  2371. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  2372. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  2373. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  2374. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  2375. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(300)]);
  2376. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(310)]);
  2377. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(320)]);
  2378. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(330)]);
  2379. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(340)]);
  2380. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(350)]);
  2381. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(360)]);
  2382. var e12 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(500, 2), OnCompleted<int>(800)]);
  2383. var res = scheduler.Start(() =>
  2384. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) => 42)
  2385. );
  2386. res.Messages.AssertEqual(
  2387. OnCompleted<int>(500)
  2388. );
  2389. var i = 0;
  2390. var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12 };
  2391. foreach (var e in es.Take(es.Length - 1))
  2392. {
  2393. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10)));
  2394. }
  2395. es.Last().Subscriptions.AssertEqual(Subscribe(200, 500));
  2396. }
  2397. [TestMethod]
  2398. public void CombineLatest_WillNeverBeAbleToCombine14()
  2399. {
  2400. var scheduler = new TestScheduler();
  2401. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  2402. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  2403. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  2404. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  2405. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  2406. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(300)]);
  2407. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(310)]);
  2408. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(320)]);
  2409. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(330)]);
  2410. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(340)]);
  2411. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(350)]);
  2412. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(360)]);
  2413. var e12 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(370)]);
  2414. var e13 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(500, 2), OnCompleted<int>(800)]);
  2415. var res = scheduler.Start(() =>
  2416. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => 42)
  2417. );
  2418. res.Messages.AssertEqual(
  2419. OnCompleted<int>(500)
  2420. );
  2421. var i = 0;
  2422. var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13 };
  2423. foreach (var e in es.Take(es.Length - 1))
  2424. {
  2425. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10)));
  2426. }
  2427. es.Last().Subscriptions.AssertEqual(Subscribe(200, 500));
  2428. }
  2429. [TestMethod]
  2430. public void CombineLatest_WillNeverBeAbleToCombine15()
  2431. {
  2432. var scheduler = new TestScheduler();
  2433. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  2434. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  2435. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  2436. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  2437. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  2438. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(300)]);
  2439. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(310)]);
  2440. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(320)]);
  2441. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(330)]);
  2442. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(340)]);
  2443. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(350)]);
  2444. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(360)]);
  2445. var e12 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(370)]);
  2446. var e13 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(380)]);
  2447. var e14 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(500, 2), OnCompleted<int>(800)]);
  2448. var res = scheduler.Start(() =>
  2449. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => 42)
  2450. );
  2451. res.Messages.AssertEqual(
  2452. OnCompleted<int>(500)
  2453. );
  2454. var i = 0;
  2455. var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14 };
  2456. foreach (var e in es.Take(es.Length - 1))
  2457. {
  2458. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10)));
  2459. }
  2460. es.Last().Subscriptions.AssertEqual(Subscribe(200, 500));
  2461. }
  2462. [TestMethod]
  2463. public void CombineLatest_WillNeverBeAbleToCombine16()
  2464. {
  2465. var scheduler = new TestScheduler();
  2466. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(250)]);
  2467. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(260)]);
  2468. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(270)]);
  2469. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(280)]);
  2470. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(290)]);
  2471. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(300)]);
  2472. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(310)]);
  2473. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(320)]);
  2474. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(330)]);
  2475. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(340)]);
  2476. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(350)]);
  2477. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(360)]);
  2478. var e12 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(370)]);
  2479. var e13 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(380)]);
  2480. var e14 = scheduler.CreateHotObservable([OnNext(150, 1), OnCompleted<int>(390)]);
  2481. var e15 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(500, 2), OnCompleted<int>(800)]);
  2482. var res = scheduler.Start(() =>
  2483. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => 42)
  2484. );
  2485. res.Messages.AssertEqual(
  2486. OnCompleted<int>(500)
  2487. );
  2488. var i = 0;
  2489. var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15 };
  2490. foreach (var e in es.Take(es.Length - 1))
  2491. {
  2492. e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10)));
  2493. }
  2494. es.Last().Subscriptions.AssertEqual(Subscribe(200, 500));
  2495. }
  2496. #endregion
  2497. #region Typical
  2498. [TestMethod]
  2499. public void CombineLatest_TypicalN()
  2500. {
  2501. var scheduler = new TestScheduler();
  2502. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(410, 4), OnCompleted<int>(800)]);
  2503. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(420, 5), OnCompleted<int>(800)]);
  2504. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(430, 6), OnCompleted<int>(800)]);
  2505. var res = scheduler.Start(() =>
  2506. Observable.CombineLatest([e0, e1, e2], xs => xs.Sum())
  2507. );
  2508. res.Messages.AssertEqual(
  2509. OnNext(230, 6),
  2510. OnNext(410, 9),
  2511. OnNext(420, 12),
  2512. OnNext(430, 15),
  2513. OnCompleted<int>(800)
  2514. );
  2515. foreach (var e in new[] { e0, e1, e2 })
  2516. {
  2517. e.Subscriptions.AssertEqual(Subscribe(200, 800));
  2518. }
  2519. }
  2520. [TestMethod]
  2521. public void CombineLatest_Typical2()
  2522. {
  2523. var scheduler = new TestScheduler();
  2524. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(410, 3), OnCompleted<int>(800)]);
  2525. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(420, 4), OnCompleted<int>(800)]);
  2526. var res = scheduler.Start(() =>
  2527. Observable.CombineLatest(e0, e1, (_0, _1) => _0 + _1)
  2528. );
  2529. res.Messages.AssertEqual(
  2530. OnNext(220, 3),
  2531. OnNext(410, 5),
  2532. OnNext(420, 7),
  2533. OnCompleted<int>(800)
  2534. );
  2535. foreach (var e in new[] { e0, e1 })
  2536. {
  2537. e.Subscriptions.AssertEqual(Subscribe(200, 800));
  2538. }
  2539. }
  2540. [TestMethod]
  2541. public void CombineLatest_Typical3()
  2542. {
  2543. var scheduler = new TestScheduler();
  2544. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(410, 4), OnCompleted<int>(800)]);
  2545. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(420, 5), OnCompleted<int>(800)]);
  2546. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(430, 6), OnCompleted<int>(800)]);
  2547. var res = scheduler.Start(() =>
  2548. Observable.CombineLatest(e0, e1, e2, (_0, _1, _2) => _0 + _1 + _2)
  2549. );
  2550. res.Messages.AssertEqual(
  2551. OnNext(230, 6),
  2552. OnNext(410, 9),
  2553. OnNext(420, 12),
  2554. OnNext(430, 15),
  2555. OnCompleted<int>(800)
  2556. );
  2557. foreach (var e in new[] { e0, e1, e2 })
  2558. {
  2559. e.Subscriptions.AssertEqual(Subscribe(200, 800));
  2560. }
  2561. }
  2562. [TestMethod]
  2563. public void CombineLatest_Typical4()
  2564. {
  2565. var scheduler = new TestScheduler();
  2566. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(410, 5), OnCompleted<int>(800)]);
  2567. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(420, 6), OnCompleted<int>(800)]);
  2568. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(430, 7), OnCompleted<int>(800)]);
  2569. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnNext(440, 8), OnCompleted<int>(800)]);
  2570. var res = scheduler.Start(() =>
  2571. Observable.CombineLatest(e0, e1, e2, e3, (_0, _1, _2, _3) => _0 + _1 + _2 + _3)
  2572. );
  2573. res.Messages.AssertEqual(
  2574. OnNext(240, 10),
  2575. OnNext(410, 14),
  2576. OnNext(420, 18),
  2577. OnNext(430, 22),
  2578. OnNext(440, 26),
  2579. OnCompleted<int>(800)
  2580. );
  2581. foreach (var e in new[] { e0, e1, e2, e3 })
  2582. {
  2583. e.Subscriptions.AssertEqual(Subscribe(200, 800));
  2584. }
  2585. }
  2586. [TestMethod]
  2587. public void CombineLatest_Typical5()
  2588. {
  2589. var scheduler = new TestScheduler();
  2590. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(410, 6), OnCompleted<int>(800)]);
  2591. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(420, 7), OnCompleted<int>(800)]);
  2592. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(430, 8), OnCompleted<int>(800)]);
  2593. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnNext(440, 9), OnCompleted<int>(800)]);
  2594. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnNext(450, 10), OnCompleted<int>(800)]);
  2595. var res = scheduler.Start(() =>
  2596. Observable.CombineLatest(e0, e1, e2, e3, e4, (_0, _1, _2, _3, _4) => _0 + _1 + _2 + _3 + _4)
  2597. );
  2598. res.Messages.AssertEqual(
  2599. OnNext(250, 15),
  2600. OnNext(410, 20),
  2601. OnNext(420, 25),
  2602. OnNext(430, 30),
  2603. OnNext(440, 35),
  2604. OnNext(450, 40),
  2605. OnCompleted<int>(800)
  2606. );
  2607. foreach (var e in new[] { e0, e1, e2, e3, e4 })
  2608. {
  2609. e.Subscriptions.AssertEqual(Subscribe(200, 800));
  2610. }
  2611. }
  2612. [TestMethod]
  2613. public void CombineLatest_Typical6()
  2614. {
  2615. var scheduler = new TestScheduler();
  2616. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(410, 7), OnCompleted<int>(800)]);
  2617. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(420, 8), OnCompleted<int>(800)]);
  2618. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(430, 9), OnCompleted<int>(800)]);
  2619. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnNext(440, 10), OnCompleted<int>(800)]);
  2620. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnNext(450, 11), OnCompleted<int>(800)]);
  2621. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnNext(460, 12), OnCompleted<int>(800)]);
  2622. var res = scheduler.Start(() =>
  2623. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, (_0, _1, _2, _3, _4, _5) => _0 + _1 + _2 + _3 + _4 + _5)
  2624. );
  2625. res.Messages.AssertEqual(
  2626. OnNext(260, 21),
  2627. OnNext(410, 27),
  2628. OnNext(420, 33),
  2629. OnNext(430, 39),
  2630. OnNext(440, 45),
  2631. OnNext(450, 51),
  2632. OnNext(460, 57),
  2633. OnCompleted<int>(800)
  2634. );
  2635. foreach (var e in new[] { e0, e1, e2, e3, e4, e5 })
  2636. {
  2637. e.Subscriptions.AssertEqual(Subscribe(200, 800));
  2638. }
  2639. }
  2640. [TestMethod]
  2641. public void CombineLatest_Typical7()
  2642. {
  2643. var scheduler = new TestScheduler();
  2644. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(410, 8), OnCompleted<int>(800)]);
  2645. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(420, 9), OnCompleted<int>(800)]);
  2646. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(430, 10), OnCompleted<int>(800)]);
  2647. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnNext(440, 11), OnCompleted<int>(800)]);
  2648. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnNext(450, 12), OnCompleted<int>(800)]);
  2649. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnNext(460, 13), OnCompleted<int>(800)]);
  2650. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnNext(470, 14), OnCompleted<int>(800)]);
  2651. var res = scheduler.Start(() =>
  2652. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, (_0, _1, _2, _3, _4, _5, _6) => _0 + _1 + _2 + _3 + _4 + _5 + _6)
  2653. );
  2654. res.Messages.AssertEqual(
  2655. OnNext(270, 28),
  2656. OnNext(410, 35),
  2657. OnNext(420, 42),
  2658. OnNext(430, 49),
  2659. OnNext(440, 56),
  2660. OnNext(450, 63),
  2661. OnNext(460, 70),
  2662. OnNext(470, 77),
  2663. OnCompleted<int>(800)
  2664. );
  2665. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6 })
  2666. {
  2667. e.Subscriptions.AssertEqual(Subscribe(200, 800));
  2668. }
  2669. }
  2670. [TestMethod]
  2671. public void CombineLatest_Typical8()
  2672. {
  2673. var scheduler = new TestScheduler();
  2674. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(410, 9), OnCompleted<int>(800)]);
  2675. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(420, 10), OnCompleted<int>(800)]);
  2676. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(430, 11), OnCompleted<int>(800)]);
  2677. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnNext(440, 12), OnCompleted<int>(800)]);
  2678. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnNext(450, 13), OnCompleted<int>(800)]);
  2679. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnNext(460, 14), OnCompleted<int>(800)]);
  2680. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnNext(470, 15), OnCompleted<int>(800)]);
  2681. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(280, 8), OnNext(480, 16), OnCompleted<int>(800)]);
  2682. var res = scheduler.Start(() =>
  2683. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, (_0, _1, _2, _3, _4, _5, _6, _7) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7)
  2684. );
  2685. res.Messages.AssertEqual(
  2686. OnNext(280, 36),
  2687. OnNext(410, 44),
  2688. OnNext(420, 52),
  2689. OnNext(430, 60),
  2690. OnNext(440, 68),
  2691. OnNext(450, 76),
  2692. OnNext(460, 84),
  2693. OnNext(470, 92),
  2694. OnNext(480, 100),
  2695. OnCompleted<int>(800)
  2696. );
  2697. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7 })
  2698. {
  2699. e.Subscriptions.AssertEqual(Subscribe(200, 800));
  2700. }
  2701. }
  2702. [TestMethod]
  2703. public void CombineLatest_Typical9()
  2704. {
  2705. var scheduler = new TestScheduler();
  2706. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(410, 10), OnCompleted<int>(800)]);
  2707. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(420, 11), OnCompleted<int>(800)]);
  2708. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(430, 12), OnCompleted<int>(800)]);
  2709. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnNext(440, 13), OnCompleted<int>(800)]);
  2710. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnNext(450, 14), OnCompleted<int>(800)]);
  2711. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnNext(460, 15), OnCompleted<int>(800)]);
  2712. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnNext(470, 16), OnCompleted<int>(800)]);
  2713. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(280, 8), OnNext(480, 17), OnCompleted<int>(800)]);
  2714. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(290, 9), OnNext(490, 18), OnCompleted<int>(800)]);
  2715. var res = scheduler.Start(() =>
  2716. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, (_0, _1, _2, _3, _4, _5, _6, _7, _8) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8)
  2717. );
  2718. res.Messages.AssertEqual(
  2719. OnNext(290, 45),
  2720. OnNext(410, 54),
  2721. OnNext(420, 63),
  2722. OnNext(430, 72),
  2723. OnNext(440, 81),
  2724. OnNext(450, 90),
  2725. OnNext(460, 99),
  2726. OnNext(470, 108),
  2727. OnNext(480, 117),
  2728. OnNext(490, 126),
  2729. OnCompleted<int>(800)
  2730. );
  2731. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8 })
  2732. {
  2733. e.Subscriptions.AssertEqual(Subscribe(200, 800));
  2734. }
  2735. }
  2736. [TestMethod]
  2737. public void CombineLatest_Typical10()
  2738. {
  2739. var scheduler = new TestScheduler();
  2740. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(410, 11), OnCompleted<int>(800)]);
  2741. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(420, 12), OnCompleted<int>(800)]);
  2742. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(430, 13), OnCompleted<int>(800)]);
  2743. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnNext(440, 14), OnCompleted<int>(800)]);
  2744. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnNext(450, 15), OnCompleted<int>(800)]);
  2745. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnNext(460, 16), OnCompleted<int>(800)]);
  2746. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnNext(470, 17), OnCompleted<int>(800)]);
  2747. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(280, 8), OnNext(480, 18), OnCompleted<int>(800)]);
  2748. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(290, 9), OnNext(490, 19), OnCompleted<int>(800)]);
  2749. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(300, 10), OnNext(500, 20), OnCompleted<int>(800)]);
  2750. var res = scheduler.Start(() =>
  2751. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9)
  2752. );
  2753. res.Messages.AssertEqual(
  2754. OnNext(300, 55),
  2755. OnNext(410, 65),
  2756. OnNext(420, 75),
  2757. OnNext(430, 85),
  2758. OnNext(440, 95),
  2759. OnNext(450, 105),
  2760. OnNext(460, 115),
  2761. OnNext(470, 125),
  2762. OnNext(480, 135),
  2763. OnNext(490, 145),
  2764. OnNext(500, 155),
  2765. OnCompleted<int>(800)
  2766. );
  2767. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9 })
  2768. {
  2769. e.Subscriptions.AssertEqual(Subscribe(200, 800));
  2770. }
  2771. }
  2772. [TestMethod]
  2773. public void CombineLatest_Typical11()
  2774. {
  2775. var scheduler = new TestScheduler();
  2776. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(410, 12), OnCompleted<int>(800)]);
  2777. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(420, 13), OnCompleted<int>(800)]);
  2778. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(430, 14), OnCompleted<int>(800)]);
  2779. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnNext(440, 15), OnCompleted<int>(800)]);
  2780. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnNext(450, 16), OnCompleted<int>(800)]);
  2781. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnNext(460, 17), OnCompleted<int>(800)]);
  2782. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnNext(470, 18), OnCompleted<int>(800)]);
  2783. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(280, 8), OnNext(480, 19), OnCompleted<int>(800)]);
  2784. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(290, 9), OnNext(490, 20), OnCompleted<int>(800)]);
  2785. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(300, 10), OnNext(500, 21), OnCompleted<int>(800)]);
  2786. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(310, 11), OnNext(510, 22), OnCompleted<int>(800)]);
  2787. var res = scheduler.Start(() =>
  2788. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10)
  2789. );
  2790. res.Messages.AssertEqual(
  2791. OnNext(310, 66),
  2792. OnNext(410, 77),
  2793. OnNext(420, 88),
  2794. OnNext(430, 99),
  2795. OnNext(440, 110),
  2796. OnNext(450, 121),
  2797. OnNext(460, 132),
  2798. OnNext(470, 143),
  2799. OnNext(480, 154),
  2800. OnNext(490, 165),
  2801. OnNext(500, 176),
  2802. OnNext(510, 187),
  2803. OnCompleted<int>(800)
  2804. );
  2805. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10 })
  2806. {
  2807. e.Subscriptions.AssertEqual(Subscribe(200, 800));
  2808. }
  2809. }
  2810. [TestMethod]
  2811. public void CombineLatest_Typical12()
  2812. {
  2813. var scheduler = new TestScheduler();
  2814. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(410, 13), OnCompleted<int>(800)]);
  2815. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(420, 14), OnCompleted<int>(800)]);
  2816. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(430, 15), OnCompleted<int>(800)]);
  2817. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnNext(440, 16), OnCompleted<int>(800)]);
  2818. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnNext(450, 17), OnCompleted<int>(800)]);
  2819. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnNext(460, 18), OnCompleted<int>(800)]);
  2820. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnNext(470, 19), OnCompleted<int>(800)]);
  2821. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(280, 8), OnNext(480, 20), OnCompleted<int>(800)]);
  2822. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(290, 9), OnNext(490, 21), OnCompleted<int>(800)]);
  2823. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(300, 10), OnNext(500, 22), OnCompleted<int>(800)]);
  2824. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(310, 11), OnNext(510, 23), OnCompleted<int>(800)]);
  2825. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(320, 12), OnNext(520, 24), OnCompleted<int>(800)]);
  2826. var res = scheduler.Start(() =>
  2827. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11)
  2828. );
  2829. res.Messages.AssertEqual(
  2830. OnNext(320, 78),
  2831. OnNext(410, 90),
  2832. OnNext(420, 102),
  2833. OnNext(430, 114),
  2834. OnNext(440, 126),
  2835. OnNext(450, 138),
  2836. OnNext(460, 150),
  2837. OnNext(470, 162),
  2838. OnNext(480, 174),
  2839. OnNext(490, 186),
  2840. OnNext(500, 198),
  2841. OnNext(510, 210),
  2842. OnNext(520, 222),
  2843. OnCompleted<int>(800)
  2844. );
  2845. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11 })
  2846. {
  2847. e.Subscriptions.AssertEqual(Subscribe(200, 800));
  2848. }
  2849. }
  2850. [TestMethod]
  2851. public void CombineLatest_Typical13()
  2852. {
  2853. var scheduler = new TestScheduler();
  2854. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(410, 14), OnCompleted<int>(800)]);
  2855. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(420, 15), OnCompleted<int>(800)]);
  2856. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(430, 16), OnCompleted<int>(800)]);
  2857. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnNext(440, 17), OnCompleted<int>(800)]);
  2858. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnNext(450, 18), OnCompleted<int>(800)]);
  2859. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnNext(460, 19), OnCompleted<int>(800)]);
  2860. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnNext(470, 20), OnCompleted<int>(800)]);
  2861. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(280, 8), OnNext(480, 21), OnCompleted<int>(800)]);
  2862. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(290, 9), OnNext(490, 22), OnCompleted<int>(800)]);
  2863. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(300, 10), OnNext(500, 23), OnCompleted<int>(800)]);
  2864. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(310, 11), OnNext(510, 24), OnCompleted<int>(800)]);
  2865. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(320, 12), OnNext(520, 25), OnCompleted<int>(800)]);
  2866. var e12 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(330, 13), OnNext(530, 26), OnCompleted<int>(800)]);
  2867. var res = scheduler.Start(() =>
  2868. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12)
  2869. );
  2870. res.Messages.AssertEqual(
  2871. OnNext(330, 91),
  2872. OnNext(410, 104),
  2873. OnNext(420, 117),
  2874. OnNext(430, 130),
  2875. OnNext(440, 143),
  2876. OnNext(450, 156),
  2877. OnNext(460, 169),
  2878. OnNext(470, 182),
  2879. OnNext(480, 195),
  2880. OnNext(490, 208),
  2881. OnNext(500, 221),
  2882. OnNext(510, 234),
  2883. OnNext(520, 247),
  2884. OnNext(530, 260),
  2885. OnCompleted<int>(800)
  2886. );
  2887. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12 })
  2888. {
  2889. e.Subscriptions.AssertEqual(Subscribe(200, 800));
  2890. }
  2891. }
  2892. [TestMethod]
  2893. public void CombineLatest_Typical14()
  2894. {
  2895. var scheduler = new TestScheduler();
  2896. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(410, 15), OnCompleted<int>(800)]);
  2897. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(420, 16), OnCompleted<int>(800)]);
  2898. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(430, 17), OnCompleted<int>(800)]);
  2899. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnNext(440, 18), OnCompleted<int>(800)]);
  2900. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnNext(450, 19), OnCompleted<int>(800)]);
  2901. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnNext(460, 20), OnCompleted<int>(800)]);
  2902. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnNext(470, 21), OnCompleted<int>(800)]);
  2903. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(280, 8), OnNext(480, 22), OnCompleted<int>(800)]);
  2904. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(290, 9), OnNext(490, 23), OnCompleted<int>(800)]);
  2905. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(300, 10), OnNext(500, 24), OnCompleted<int>(800)]);
  2906. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(310, 11), OnNext(510, 25), OnCompleted<int>(800)]);
  2907. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(320, 12), OnNext(520, 26), OnCompleted<int>(800)]);
  2908. var e12 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(330, 13), OnNext(530, 27), OnCompleted<int>(800)]);
  2909. var e13 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(340, 14), OnNext(540, 28), OnCompleted<int>(800)]);
  2910. var res = scheduler.Start(() =>
  2911. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13)
  2912. );
  2913. res.Messages.AssertEqual(
  2914. OnNext(340, 105),
  2915. OnNext(410, 119),
  2916. OnNext(420, 133),
  2917. OnNext(430, 147),
  2918. OnNext(440, 161),
  2919. OnNext(450, 175),
  2920. OnNext(460, 189),
  2921. OnNext(470, 203),
  2922. OnNext(480, 217),
  2923. OnNext(490, 231),
  2924. OnNext(500, 245),
  2925. OnNext(510, 259),
  2926. OnNext(520, 273),
  2927. OnNext(530, 287),
  2928. OnNext(540, 301),
  2929. OnCompleted<int>(800)
  2930. );
  2931. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13 })
  2932. {
  2933. e.Subscriptions.AssertEqual(Subscribe(200, 800));
  2934. }
  2935. }
  2936. [TestMethod]
  2937. public void CombineLatest_Typical15()
  2938. {
  2939. var scheduler = new TestScheduler();
  2940. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(410, 16), OnCompleted<int>(800)]);
  2941. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(420, 17), OnCompleted<int>(800)]);
  2942. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(430, 18), OnCompleted<int>(800)]);
  2943. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnNext(440, 19), OnCompleted<int>(800)]);
  2944. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnNext(450, 20), OnCompleted<int>(800)]);
  2945. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnNext(460, 21), OnCompleted<int>(800)]);
  2946. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnNext(470, 22), OnCompleted<int>(800)]);
  2947. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(280, 8), OnNext(480, 23), OnCompleted<int>(800)]);
  2948. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(290, 9), OnNext(490, 24), OnCompleted<int>(800)]);
  2949. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(300, 10), OnNext(500, 25), OnCompleted<int>(800)]);
  2950. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(310, 11), OnNext(510, 26), OnCompleted<int>(800)]);
  2951. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(320, 12), OnNext(520, 27), OnCompleted<int>(800)]);
  2952. var e12 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(330, 13), OnNext(530, 28), OnCompleted<int>(800)]);
  2953. var e13 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(340, 14), OnNext(540, 29), OnCompleted<int>(800)]);
  2954. var e14 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(350, 15), OnNext(550, 30), OnCompleted<int>(800)]);
  2955. var res = scheduler.Start(() =>
  2956. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14)
  2957. );
  2958. res.Messages.AssertEqual(
  2959. OnNext(350, 120),
  2960. OnNext(410, 135),
  2961. OnNext(420, 150),
  2962. OnNext(430, 165),
  2963. OnNext(440, 180),
  2964. OnNext(450, 195),
  2965. OnNext(460, 210),
  2966. OnNext(470, 225),
  2967. OnNext(480, 240),
  2968. OnNext(490, 255),
  2969. OnNext(500, 270),
  2970. OnNext(510, 285),
  2971. OnNext(520, 300),
  2972. OnNext(530, 315),
  2973. OnNext(540, 330),
  2974. OnNext(550, 345),
  2975. OnCompleted<int>(800)
  2976. );
  2977. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14 })
  2978. {
  2979. e.Subscriptions.AssertEqual(Subscribe(200, 800));
  2980. }
  2981. }
  2982. [TestMethod]
  2983. public void CombineLatest_Typical16()
  2984. {
  2985. var scheduler = new TestScheduler();
  2986. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(410, 17), OnCompleted<int>(800)]);
  2987. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(420, 18), OnCompleted<int>(800)]);
  2988. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(430, 19), OnCompleted<int>(800)]);
  2989. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnNext(440, 20), OnCompleted<int>(800)]);
  2990. var e4 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(250, 5), OnNext(450, 21), OnCompleted<int>(800)]);
  2991. var e5 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(260, 6), OnNext(460, 22), OnCompleted<int>(800)]);
  2992. var e6 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(270, 7), OnNext(470, 23), OnCompleted<int>(800)]);
  2993. var e7 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(280, 8), OnNext(480, 24), OnCompleted<int>(800)]);
  2994. var e8 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(290, 9), OnNext(490, 25), OnCompleted<int>(800)]);
  2995. var e9 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(300, 10), OnNext(500, 26), OnCompleted<int>(800)]);
  2996. var e10 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(310, 11), OnNext(510, 27), OnCompleted<int>(800)]);
  2997. var e11 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(320, 12), OnNext(520, 28), OnCompleted<int>(800)]);
  2998. var e12 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(330, 13), OnNext(530, 29), OnCompleted<int>(800)]);
  2999. var e13 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(340, 14), OnNext(540, 30), OnCompleted<int>(800)]);
  3000. var e14 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(350, 15), OnNext(550, 31), OnCompleted<int>(800)]);
  3001. var e15 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(360, 16), OnNext(560, 32), OnCompleted<int>(800)]);
  3002. var res = scheduler.Start(() =>
  3003. Observable.CombineLatest(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, (_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) => _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14 + _15)
  3004. );
  3005. res.Messages.AssertEqual(
  3006. OnNext(360, 136),
  3007. OnNext(410, 152),
  3008. OnNext(420, 168),
  3009. OnNext(430, 184),
  3010. OnNext(440, 200),
  3011. OnNext(450, 216),
  3012. OnNext(460, 232),
  3013. OnNext(470, 248),
  3014. OnNext(480, 264),
  3015. OnNext(490, 280),
  3016. OnNext(500, 296),
  3017. OnNext(510, 312),
  3018. OnNext(520, 328),
  3019. OnNext(530, 344),
  3020. OnNext(540, 360),
  3021. OnNext(550, 376),
  3022. OnNext(560, 392),
  3023. OnCompleted<int>(800)
  3024. );
  3025. foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15 })
  3026. {
  3027. e.Subscriptions.AssertEqual(Subscribe(200, 800));
  3028. }
  3029. }
  3030. #endregion
  3031. #region NAry
  3032. [TestMethod]
  3033. public void CombineLatest_List_Regular()
  3034. {
  3035. var scheduler = new TestScheduler();
  3036. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(240, 4), OnCompleted<int>(270)]);
  3037. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(250, 5), OnCompleted<int>(280)]);
  3038. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(260, 6), OnCompleted<int>(290)]);
  3039. var res = scheduler.Start(() =>
  3040. Observable.CombineLatest(new IObservable<int>[] { e0, e1, e2 }.AsEnumerable())
  3041. );
  3042. res.Messages.AssertEqual(
  3043. OnNext<IList<int>>(230, l => l.SequenceEqual([1, 2, 3])),
  3044. OnNext<IList<int>>(240, l => l.SequenceEqual([4, 2, 3])),
  3045. OnNext<IList<int>>(250, l => l.SequenceEqual([4, 5, 3])),
  3046. OnNext<IList<int>>(260, l => l.SequenceEqual([4, 5, 6])),
  3047. OnCompleted<IList<int>>(290)
  3048. );
  3049. }
  3050. [TestMethod]
  3051. public void CombineLatest_NAry_ArgumentChecking()
  3052. {
  3053. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(default(IEnumerable<IObservable<int>>)));
  3054. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(default(IEnumerable<IObservable<int>>), _ => 42));
  3055. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest([Observable.Return(42)], default(Func<IList<int>, string>)));
  3056. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.CombineLatest(default(IObservable<int>[])));
  3057. }
  3058. [TestMethod]
  3059. public void CombineLatest_NAry_Symmetric()
  3060. {
  3061. var scheduler = new TestScheduler();
  3062. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(250, 4), OnCompleted<int>(420)]);
  3063. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(240, 5), OnCompleted<int>(410)]);
  3064. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(260, 6), OnCompleted<int>(400)]);
  3065. var res = scheduler.Start(() =>
  3066. Observable.CombineLatest(e0, e1, e2)
  3067. );
  3068. res.Messages.AssertEqual(
  3069. OnNext<IList<int>>(230, l => l.SequenceEqual([1, 2, 3])),
  3070. OnNext<IList<int>>(240, l => l.SequenceEqual([1, 5, 3])),
  3071. OnNext<IList<int>>(250, l => l.SequenceEqual([4, 5, 3])),
  3072. OnNext<IList<int>>(260, l => l.SequenceEqual([4, 5, 6])),
  3073. OnCompleted<IList<int>>(420)
  3074. );
  3075. e0.Subscriptions.AssertEqual(
  3076. Subscribe(200, 420)
  3077. );
  3078. e1.Subscriptions.AssertEqual(
  3079. Subscribe(200, 410)
  3080. );
  3081. e2.Subscriptions.AssertEqual(
  3082. Subscribe(200, 400)
  3083. );
  3084. }
  3085. [TestMethod]
  3086. public void CombineLatest_NAry_Symmetric_Selector()
  3087. {
  3088. var scheduler = new TestScheduler();
  3089. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(250, 4), OnCompleted<int>(420)]);
  3090. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(240, 5), OnCompleted<int>(410)]);
  3091. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(260, 6), OnCompleted<int>(400)]);
  3092. var res = scheduler.Start(() =>
  3093. Observable.CombineLatest([e0, e1, e2], xs => xs.Sum())
  3094. );
  3095. res.Messages.AssertEqual(
  3096. OnNext(230, new[] { 1, 2, 3 }.Sum()),
  3097. OnNext(240, new[] { 1, 5, 3 }.Sum()),
  3098. OnNext(250, new[] { 4, 5, 3 }.Sum()),
  3099. OnNext(260, new[] { 4, 5, 6 }.Sum()),
  3100. OnCompleted<int>(420)
  3101. );
  3102. e0.Subscriptions.AssertEqual(
  3103. Subscribe(200, 420)
  3104. );
  3105. e1.Subscriptions.AssertEqual(
  3106. Subscribe(200, 410)
  3107. );
  3108. e2.Subscriptions.AssertEqual(
  3109. Subscribe(200, 400)
  3110. );
  3111. }
  3112. [TestMethod]
  3113. public void CombineLatest_NAry_Asymmetric()
  3114. {
  3115. var scheduler = new TestScheduler();
  3116. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(250, 4), OnCompleted<int>(270)]);
  3117. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(240, 5), OnNext(290, 7), OnNext(310, 9), OnCompleted<int>(410)]);
  3118. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(260, 6), OnNext(280, 8), OnCompleted<int>(300)]);
  3119. var res = scheduler.Start(() =>
  3120. Observable.CombineLatest(e0, e1, e2)
  3121. );
  3122. res.Messages.AssertEqual(
  3123. OnNext<IList<int>>(230, l => l.SequenceEqual([1, 2, 3])),
  3124. OnNext<IList<int>>(240, l => l.SequenceEqual([1, 5, 3])),
  3125. OnNext<IList<int>>(250, l => l.SequenceEqual([4, 5, 3])),
  3126. OnNext<IList<int>>(260, l => l.SequenceEqual([4, 5, 6])),
  3127. OnNext<IList<int>>(280, l => l.SequenceEqual([4, 5, 8])),
  3128. OnNext<IList<int>>(290, l => l.SequenceEqual([4, 7, 8])),
  3129. OnNext<IList<int>>(310, l => l.SequenceEqual([4, 9, 8])),
  3130. OnCompleted<IList<int>>(410)
  3131. );
  3132. e0.Subscriptions.AssertEqual(
  3133. Subscribe(200, 270)
  3134. );
  3135. e1.Subscriptions.AssertEqual(
  3136. Subscribe(200, 410)
  3137. );
  3138. e2.Subscriptions.AssertEqual(
  3139. Subscribe(200, 300)
  3140. );
  3141. }
  3142. [TestMethod]
  3143. public void CombineLatest_NAry_Asymmetric_Selector()
  3144. {
  3145. var scheduler = new TestScheduler();
  3146. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnNext(250, 4), OnCompleted<int>(270)]);
  3147. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(240, 5), OnNext(290, 7), OnNext(310, 9), OnCompleted<int>(410)]);
  3148. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(260, 6), OnNext(280, 8), OnCompleted<int>(300)]);
  3149. var res = scheduler.Start(() =>
  3150. Observable.CombineLatest([e0, e1, e2], xs => xs.Sum())
  3151. );
  3152. res.Messages.AssertEqual(
  3153. OnNext(230, new[] { 1, 2, 3 }.Sum()),
  3154. OnNext(240, new[] { 1, 5, 3 }.Sum()),
  3155. OnNext(250, new[] { 4, 5, 3 }.Sum()),
  3156. OnNext(260, new[] { 4, 5, 6 }.Sum()),
  3157. OnNext(280, new[] { 4, 5, 8 }.Sum()),
  3158. OnNext(290, new[] { 4, 7, 8 }.Sum()),
  3159. OnNext(310, new[] { 4, 9, 8 }.Sum()),
  3160. OnCompleted<int>(410)
  3161. );
  3162. e0.Subscriptions.AssertEqual(
  3163. Subscribe(200, 270)
  3164. );
  3165. e1.Subscriptions.AssertEqual(
  3166. Subscribe(200, 410)
  3167. );
  3168. e2.Subscriptions.AssertEqual(
  3169. Subscribe(200, 300)
  3170. );
  3171. }
  3172. [TestMethod]
  3173. public void CombineLatest_NAry_Error()
  3174. {
  3175. var ex = new Exception();
  3176. var scheduler = new TestScheduler();
  3177. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnError<int>(250, ex)]);
  3178. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(240, 5), OnCompleted<int>(410)]);
  3179. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(260, 6), OnCompleted<int>(400)]);
  3180. var res = scheduler.Start(() =>
  3181. Observable.CombineLatest(e0, e1, e2)
  3182. );
  3183. res.Messages.AssertEqual(
  3184. OnNext<IList<int>>(230, l => l.SequenceEqual([1, 2, 3])),
  3185. OnNext<IList<int>>(240, l => l.SequenceEqual([1, 5, 3])),
  3186. OnError<IList<int>>(250, ex)
  3187. );
  3188. e0.Subscriptions.AssertEqual(
  3189. Subscribe(200, 250)
  3190. );
  3191. e1.Subscriptions.AssertEqual(
  3192. Subscribe(200, 250)
  3193. );
  3194. e2.Subscriptions.AssertEqual(
  3195. Subscribe(200, 250)
  3196. );
  3197. }
  3198. [TestMethod]
  3199. public void CombineLatest_NAry_Error_Selector()
  3200. {
  3201. var ex = new Exception();
  3202. var scheduler = new TestScheduler();
  3203. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnError<int>(250, ex)]);
  3204. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnNext(240, 5), OnCompleted<int>(410)]);
  3205. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(230, 3), OnNext(260, 6), OnCompleted<int>(400)]);
  3206. var res = scheduler.Start(() =>
  3207. Observable.CombineLatest([e0, e1, e2], xs => xs.Sum())
  3208. );
  3209. res.Messages.AssertEqual(
  3210. OnNext(230, new[] { 1, 2, 3 }.Sum()),
  3211. OnNext(240, new[] { 1, 5, 3 }.Sum()),
  3212. OnError<int>(250, ex)
  3213. );
  3214. e0.Subscriptions.AssertEqual(
  3215. Subscribe(200, 250)
  3216. );
  3217. e1.Subscriptions.AssertEqual(
  3218. Subscribe(200, 250)
  3219. );
  3220. e2.Subscriptions.AssertEqual(
  3221. Subscribe(200, 250)
  3222. );
  3223. }
  3224. #endregion
  3225. #region AtLeastOneThrows
  3226. [TestMethod]
  3227. public void CombineLatest_AtLeastOneThrows4()
  3228. {
  3229. var ex = new Exception();
  3230. var scheduler = new TestScheduler();
  3231. var e0 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(210, 1), OnCompleted<int>(400)]);
  3232. var e1 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(220, 2), OnCompleted<int>(400)]);
  3233. var e2 = scheduler.CreateHotObservable([OnNext(150, 1), OnError<int>(230, ex)]);
  3234. var e3 = scheduler.CreateHotObservable([OnNext(150, 1), OnNext(240, 4), OnCompleted<int>(400)]);
  3235. var res = scheduler.Start(() =>
  3236. Observable.CombineLatest(e0, e1, e2, e3, (_0, _1, _2, _3) => 42)
  3237. );
  3238. res.Messages.AssertEqual(
  3239. OnError<int>(230, ex)
  3240. );
  3241. e0.Subscriptions.AssertEqual(Subscribe(200, 230));
  3242. e1.Subscriptions.AssertEqual(Subscribe(200, 230));
  3243. e2.Subscriptions.AssertEqual(Subscribe(200, 230));
  3244. e3.Subscriptions.AssertEqual(Subscribe(200, 230));
  3245. }
  3246. #endregion
  3247. }
  3248. #pragma warning restore IDE0039 // Use local function
  3249. }