123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520 |
- ////////////////////////////////////////////////////////////////////////////
- //
- // Copyright 2017 Realm Inc.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- //
- ////////////////////////////////////////////////////////////////////////////
- #import "RLMTestCase.h"
- @interface PrimitiveArrayPropertyTests : RLMTestCase
- @end
- @implementation PrimitiveArrayPropertyTests {
- AllPrimitiveArrays *unmanaged;
- AllPrimitiveArrays *managed;
- AllOptionalPrimitiveArrays *optUnmanaged;
- AllOptionalPrimitiveArrays *optManaged;
- RLMRealm *realm;
- }
- - (void)setUp {
- unmanaged = [[AllPrimitiveArrays alloc] init];
- optUnmanaged = [[AllOptionalPrimitiveArrays alloc] init];
- realm = [RLMRealm defaultRealm];
- [realm beginWriteTransaction];
- managed = [AllPrimitiveArrays createInRealm:realm withValue:@[]];
- optManaged = [AllOptionalPrimitiveArrays createInRealm:realm withValue:@[]];
- }
- - (void)tearDown {
- if (realm.inWriteTransaction) {
- [realm cancelWriteTransaction];
- }
- }
- - (void)testCount {
- XCTAssertEqual(unmanaged.intObj.count, 0U);
- [unmanaged.intObj addObject:@1];
- XCTAssertEqual(unmanaged.intObj.count, 1U);
- }
- - (void)testType {
- XCTAssertEqual(unmanaged.boolObj.type, RLMPropertyTypeBool);
- XCTAssertEqual(unmanaged.intObj.type, RLMPropertyTypeInt);
- XCTAssertEqual(unmanaged.floatObj.type, RLMPropertyTypeFloat);
- XCTAssertEqual(unmanaged.doubleObj.type, RLMPropertyTypeDouble);
- XCTAssertEqual(unmanaged.stringObj.type, RLMPropertyTypeString);
- XCTAssertEqual(unmanaged.dataObj.type, RLMPropertyTypeData);
- XCTAssertEqual(unmanaged.dateObj.type, RLMPropertyTypeDate);
- XCTAssertEqual(optUnmanaged.boolObj.type, RLMPropertyTypeBool);
- XCTAssertEqual(optUnmanaged.intObj.type, RLMPropertyTypeInt);
- XCTAssertEqual(optUnmanaged.floatObj.type, RLMPropertyTypeFloat);
- XCTAssertEqual(optUnmanaged.doubleObj.type, RLMPropertyTypeDouble);
- XCTAssertEqual(optUnmanaged.stringObj.type, RLMPropertyTypeString);
- XCTAssertEqual(optUnmanaged.dataObj.type, RLMPropertyTypeData);
- XCTAssertEqual(optUnmanaged.dateObj.type, RLMPropertyTypeDate);
- }
- - (void)testOptional {
- XCTAssertFalse(unmanaged.boolObj.optional);
- XCTAssertFalse(unmanaged.intObj.optional);
- XCTAssertFalse(unmanaged.floatObj.optional);
- XCTAssertFalse(unmanaged.doubleObj.optional);
- XCTAssertFalse(unmanaged.stringObj.optional);
- XCTAssertFalse(unmanaged.dataObj.optional);
- XCTAssertFalse(unmanaged.dateObj.optional);
- XCTAssertTrue(optUnmanaged.boolObj.optional);
- XCTAssertTrue(optUnmanaged.intObj.optional);
- XCTAssertTrue(optUnmanaged.floatObj.optional);
- XCTAssertTrue(optUnmanaged.doubleObj.optional);
- XCTAssertTrue(optUnmanaged.stringObj.optional);
- XCTAssertTrue(optUnmanaged.dataObj.optional);
- XCTAssertTrue(optUnmanaged.dateObj.optional);
- }
- - (void)testObjectClassName {
- XCTAssertNil(unmanaged.boolObj.objectClassName);
- XCTAssertNil(unmanaged.intObj.objectClassName);
- XCTAssertNil(unmanaged.floatObj.objectClassName);
- XCTAssertNil(unmanaged.doubleObj.objectClassName);
- XCTAssertNil(unmanaged.stringObj.objectClassName);
- XCTAssertNil(unmanaged.dataObj.objectClassName);
- XCTAssertNil(unmanaged.dateObj.objectClassName);
- XCTAssertNil(optUnmanaged.boolObj.objectClassName);
- XCTAssertNil(optUnmanaged.intObj.objectClassName);
- XCTAssertNil(optUnmanaged.floatObj.objectClassName);
- XCTAssertNil(optUnmanaged.doubleObj.objectClassName);
- XCTAssertNil(optUnmanaged.stringObj.objectClassName);
- XCTAssertNil(optUnmanaged.dataObj.objectClassName);
- XCTAssertNil(optUnmanaged.dateObj.objectClassName);
- }
- - (void)testRealm {
- XCTAssertNil(unmanaged.boolObj.realm);
- XCTAssertNil(unmanaged.intObj.realm);
- XCTAssertNil(unmanaged.floatObj.realm);
- XCTAssertNil(unmanaged.doubleObj.realm);
- XCTAssertNil(unmanaged.stringObj.realm);
- XCTAssertNil(unmanaged.dataObj.realm);
- XCTAssertNil(unmanaged.dateObj.realm);
- XCTAssertNil(optUnmanaged.boolObj.realm);
- XCTAssertNil(optUnmanaged.intObj.realm);
- XCTAssertNil(optUnmanaged.floatObj.realm);
- XCTAssertNil(optUnmanaged.doubleObj.realm);
- XCTAssertNil(optUnmanaged.stringObj.realm);
- XCTAssertNil(optUnmanaged.dataObj.realm);
- XCTAssertNil(optUnmanaged.dateObj.realm);
- }
- - (void)testInvalidated {
- RLMArray *array;
- @autoreleasepool {
- AllPrimitiveArrays *obj = [[AllPrimitiveArrays alloc] init];
- array = obj.intObj;
- XCTAssertFalse(array.invalidated);
- }
- XCTAssertFalse(array.invalidated);
- }
- - (void)testDeleteObjectsInRealm {
- RLMAssertThrowsWithReason([realm deleteObjects:unmanaged.boolObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:unmanaged.intObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:unmanaged.floatObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:unmanaged.doubleObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:unmanaged.stringObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:unmanaged.dataObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:unmanaged.dateObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:optUnmanaged.boolObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:optUnmanaged.intObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:optUnmanaged.floatObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:optUnmanaged.doubleObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:optUnmanaged.stringObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:optUnmanaged.dataObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:optUnmanaged.dateObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:managed.boolObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:managed.intObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:managed.floatObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:managed.doubleObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:managed.stringObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:managed.dataObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:managed.dateObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:optManaged.boolObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:optManaged.intObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:optManaged.floatObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:optManaged.doubleObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:optManaged.stringObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:optManaged.dataObj], @"Cannot delete objects from RLMArray");
- RLMAssertThrowsWithReason([realm deleteObjects:optManaged.dateObj], @"Cannot delete objects from RLMArray");
- }
- static NSDate *date(int i) {
- return [NSDate dateWithTimeIntervalSince1970:i];
- }
- static NSData *data(int i) {
- return [NSData dataWithBytesNoCopy:calloc(i, 1) length:i freeWhenDone:YES];
- }
- - (void)testObjectAtIndex {
- RLMAssertThrowsWithReason([unmanaged.intObj objectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- [unmanaged.intObj addObject:@1];
- XCTAssertEqualObjects([unmanaged.intObj objectAtIndex:0], @1);
- }
- - (void)testFirstObject {
- XCTAssertNil(unmanaged.boolObj.firstObject);
- XCTAssertNil(unmanaged.intObj.firstObject);
- XCTAssertNil(unmanaged.floatObj.firstObject);
- XCTAssertNil(unmanaged.doubleObj.firstObject);
- XCTAssertNil(unmanaged.stringObj.firstObject);
- XCTAssertNil(unmanaged.dataObj.firstObject);
- XCTAssertNil(unmanaged.dateObj.firstObject);
- XCTAssertNil(optUnmanaged.boolObj.firstObject);
- XCTAssertNil(optUnmanaged.intObj.firstObject);
- XCTAssertNil(optUnmanaged.floatObj.firstObject);
- XCTAssertNil(optUnmanaged.doubleObj.firstObject);
- XCTAssertNil(optUnmanaged.stringObj.firstObject);
- XCTAssertNil(optUnmanaged.dataObj.firstObject);
- XCTAssertNil(optUnmanaged.dateObj.firstObject);
- XCTAssertNil(managed.boolObj.firstObject);
- XCTAssertNil(managed.intObj.firstObject);
- XCTAssertNil(managed.floatObj.firstObject);
- XCTAssertNil(managed.doubleObj.firstObject);
- XCTAssertNil(managed.stringObj.firstObject);
- XCTAssertNil(managed.dataObj.firstObject);
- XCTAssertNil(managed.dateObj.firstObject);
- XCTAssertNil(optManaged.boolObj.firstObject);
- XCTAssertNil(optManaged.intObj.firstObject);
- XCTAssertNil(optManaged.floatObj.firstObject);
- XCTAssertNil(optManaged.doubleObj.firstObject);
- XCTAssertNil(optManaged.stringObj.firstObject);
- XCTAssertNil(optManaged.dataObj.firstObject);
- XCTAssertNil(optManaged.dateObj.firstObject);
- [unmanaged.boolObj addObjects:@[@NO, @YES]];
- [unmanaged.intObj addObjects:@[@2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3]];
- [unmanaged.stringObj addObjects:@[@"a", @"b"]];
- [unmanaged.dataObj addObjects:@[data(1), data(2)]];
- [unmanaged.dateObj addObjects:@[date(1), date(2)]];
- [managed.boolObj addObjects:@[@NO, @YES]];
- [managed.intObj addObjects:@[@2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3]];
- [managed.stringObj addObjects:@[@"a", @"b"]];
- [managed.dataObj addObjects:@[data(1), data(2)]];
- [managed.dateObj addObjects:@[date(1), date(2)]];
- XCTAssertEqualObjects(unmanaged.boolObj.firstObject, @NO);
- XCTAssertEqualObjects(unmanaged.intObj.firstObject, @2);
- XCTAssertEqualObjects(unmanaged.floatObj.firstObject, @2.2f);
- XCTAssertEqualObjects(unmanaged.doubleObj.firstObject, @2.2);
- XCTAssertEqualObjects(unmanaged.stringObj.firstObject, @"a");
- XCTAssertEqualObjects(unmanaged.dataObj.firstObject, data(1));
- XCTAssertEqualObjects(unmanaged.dateObj.firstObject, date(1));
- XCTAssertEqualObjects(managed.boolObj.firstObject, @NO);
- XCTAssertEqualObjects(managed.intObj.firstObject, @2);
- XCTAssertEqualObjects(managed.floatObj.firstObject, @2.2f);
- XCTAssertEqualObjects(managed.doubleObj.firstObject, @2.2);
- XCTAssertEqualObjects(managed.stringObj.firstObject, @"a");
- XCTAssertEqualObjects(managed.dataObj.firstObject, data(1));
- XCTAssertEqualObjects(managed.dateObj.firstObject, date(1));
- [optUnmanaged.boolObj addObject:NSNull.null];
- [optUnmanaged.intObj addObject:NSNull.null];
- [optUnmanaged.floatObj addObject:NSNull.null];
- [optUnmanaged.doubleObj addObject:NSNull.null];
- [optUnmanaged.stringObj addObject:NSNull.null];
- [optUnmanaged.dataObj addObject:NSNull.null];
- [optUnmanaged.dateObj addObject:NSNull.null];
- [optManaged.boolObj addObject:NSNull.null];
- [optManaged.intObj addObject:NSNull.null];
- [optManaged.floatObj addObject:NSNull.null];
- [optManaged.doubleObj addObject:NSNull.null];
- [optManaged.stringObj addObject:NSNull.null];
- [optManaged.dataObj addObject:NSNull.null];
- [optManaged.dateObj addObject:NSNull.null];
- XCTAssertEqualObjects(optUnmanaged.boolObj.firstObject, NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.intObj.firstObject, NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.floatObj.firstObject, NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.doubleObj.firstObject, NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.stringObj.firstObject, NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.dataObj.firstObject, NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.dateObj.firstObject, NSNull.null);
- XCTAssertEqualObjects(optManaged.boolObj.firstObject, NSNull.null);
- XCTAssertEqualObjects(optManaged.intObj.firstObject, NSNull.null);
- XCTAssertEqualObjects(optManaged.floatObj.firstObject, NSNull.null);
- XCTAssertEqualObjects(optManaged.doubleObj.firstObject, NSNull.null);
- XCTAssertEqualObjects(optManaged.stringObj.firstObject, NSNull.null);
- XCTAssertEqualObjects(optManaged.dataObj.firstObject, NSNull.null);
- XCTAssertEqualObjects(optManaged.dateObj.firstObject, NSNull.null);
- [optUnmanaged.boolObj removeAllObjects];
- [optUnmanaged.intObj removeAllObjects];
- [optUnmanaged.floatObj removeAllObjects];
- [optUnmanaged.doubleObj removeAllObjects];
- [optUnmanaged.stringObj removeAllObjects];
- [optUnmanaged.dataObj removeAllObjects];
- [optUnmanaged.dateObj removeAllObjects];
- [optManaged.boolObj removeAllObjects];
- [optManaged.intObj removeAllObjects];
- [optManaged.floatObj removeAllObjects];
- [optManaged.doubleObj removeAllObjects];
- [optManaged.stringObj removeAllObjects];
- [optManaged.dataObj removeAllObjects];
- [optManaged.dateObj removeAllObjects];
- [optUnmanaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optUnmanaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optUnmanaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optUnmanaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optUnmanaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- [optManaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optManaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optManaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optManaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optManaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- XCTAssertEqualObjects(optUnmanaged.boolObj.firstObject, @NO);
- XCTAssertEqualObjects(optUnmanaged.intObj.firstObject, @2);
- XCTAssertEqualObjects(optUnmanaged.floatObj.firstObject, @2.2f);
- XCTAssertEqualObjects(optUnmanaged.doubleObj.firstObject, @2.2);
- XCTAssertEqualObjects(optUnmanaged.stringObj.firstObject, @"a");
- XCTAssertEqualObjects(optUnmanaged.dataObj.firstObject, data(1));
- XCTAssertEqualObjects(optUnmanaged.dateObj.firstObject, date(1));
- XCTAssertEqualObjects(optManaged.boolObj.firstObject, @NO);
- XCTAssertEqualObjects(optManaged.intObj.firstObject, @2);
- XCTAssertEqualObjects(optManaged.floatObj.firstObject, @2.2f);
- XCTAssertEqualObjects(optManaged.doubleObj.firstObject, @2.2);
- XCTAssertEqualObjects(optManaged.stringObj.firstObject, @"a");
- XCTAssertEqualObjects(optManaged.dataObj.firstObject, data(1));
- XCTAssertEqualObjects(optManaged.dateObj.firstObject, date(1));
- }
- - (void)testLastObject {
- XCTAssertNil(unmanaged.boolObj.lastObject);
- XCTAssertNil(unmanaged.intObj.lastObject);
- XCTAssertNil(unmanaged.floatObj.lastObject);
- XCTAssertNil(unmanaged.doubleObj.lastObject);
- XCTAssertNil(unmanaged.stringObj.lastObject);
- XCTAssertNil(unmanaged.dataObj.lastObject);
- XCTAssertNil(unmanaged.dateObj.lastObject);
- XCTAssertNil(optUnmanaged.boolObj.lastObject);
- XCTAssertNil(optUnmanaged.intObj.lastObject);
- XCTAssertNil(optUnmanaged.floatObj.lastObject);
- XCTAssertNil(optUnmanaged.doubleObj.lastObject);
- XCTAssertNil(optUnmanaged.stringObj.lastObject);
- XCTAssertNil(optUnmanaged.dataObj.lastObject);
- XCTAssertNil(optUnmanaged.dateObj.lastObject);
- XCTAssertNil(managed.boolObj.lastObject);
- XCTAssertNil(managed.intObj.lastObject);
- XCTAssertNil(managed.floatObj.lastObject);
- XCTAssertNil(managed.doubleObj.lastObject);
- XCTAssertNil(managed.stringObj.lastObject);
- XCTAssertNil(managed.dataObj.lastObject);
- XCTAssertNil(managed.dateObj.lastObject);
- XCTAssertNil(optManaged.boolObj.lastObject);
- XCTAssertNil(optManaged.intObj.lastObject);
- XCTAssertNil(optManaged.floatObj.lastObject);
- XCTAssertNil(optManaged.doubleObj.lastObject);
- XCTAssertNil(optManaged.stringObj.lastObject);
- XCTAssertNil(optManaged.dataObj.lastObject);
- XCTAssertNil(optManaged.dateObj.lastObject);
- [unmanaged.boolObj addObjects:@[@NO, @YES]];
- [unmanaged.intObj addObjects:@[@2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3]];
- [unmanaged.stringObj addObjects:@[@"a", @"b"]];
- [unmanaged.dataObj addObjects:@[data(1), data(2)]];
- [unmanaged.dateObj addObjects:@[date(1), date(2)]];
- [optUnmanaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optUnmanaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optUnmanaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optUnmanaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optUnmanaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- [managed.boolObj addObjects:@[@NO, @YES]];
- [managed.intObj addObjects:@[@2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3]];
- [managed.stringObj addObjects:@[@"a", @"b"]];
- [managed.dataObj addObjects:@[data(1), data(2)]];
- [managed.dateObj addObjects:@[date(1), date(2)]];
- [optManaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optManaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optManaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optManaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optManaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- XCTAssertEqualObjects(unmanaged.boolObj.lastObject, @YES);
- XCTAssertEqualObjects(unmanaged.intObj.lastObject, @3);
- XCTAssertEqualObjects(unmanaged.floatObj.lastObject, @3.3f);
- XCTAssertEqualObjects(unmanaged.doubleObj.lastObject, @3.3);
- XCTAssertEqualObjects(unmanaged.stringObj.lastObject, @"b");
- XCTAssertEqualObjects(unmanaged.dataObj.lastObject, data(2));
- XCTAssertEqualObjects(unmanaged.dateObj.lastObject, date(2));
- XCTAssertEqualObjects(optUnmanaged.boolObj.lastObject, NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.intObj.lastObject, NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.floatObj.lastObject, NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.doubleObj.lastObject, NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.stringObj.lastObject, NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.dataObj.lastObject, NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.dateObj.lastObject, NSNull.null);
- XCTAssertEqualObjects(managed.boolObj.lastObject, @YES);
- XCTAssertEqualObjects(managed.intObj.lastObject, @3);
- XCTAssertEqualObjects(managed.floatObj.lastObject, @3.3f);
- XCTAssertEqualObjects(managed.doubleObj.lastObject, @3.3);
- XCTAssertEqualObjects(managed.stringObj.lastObject, @"b");
- XCTAssertEqualObjects(managed.dataObj.lastObject, data(2));
- XCTAssertEqualObjects(managed.dateObj.lastObject, date(2));
- XCTAssertEqualObjects(optManaged.boolObj.lastObject, NSNull.null);
- XCTAssertEqualObjects(optManaged.intObj.lastObject, NSNull.null);
- XCTAssertEqualObjects(optManaged.floatObj.lastObject, NSNull.null);
- XCTAssertEqualObjects(optManaged.doubleObj.lastObject, NSNull.null);
- XCTAssertEqualObjects(optManaged.stringObj.lastObject, NSNull.null);
- XCTAssertEqualObjects(optManaged.dataObj.lastObject, NSNull.null);
- XCTAssertEqualObjects(optManaged.dateObj.lastObject, NSNull.null);
- [optUnmanaged.boolObj removeLastObject];
- [optUnmanaged.intObj removeLastObject];
- [optUnmanaged.floatObj removeLastObject];
- [optUnmanaged.doubleObj removeLastObject];
- [optUnmanaged.stringObj removeLastObject];
- [optUnmanaged.dataObj removeLastObject];
- [optUnmanaged.dateObj removeLastObject];
- [optManaged.boolObj removeLastObject];
- [optManaged.intObj removeLastObject];
- [optManaged.floatObj removeLastObject];
- [optManaged.doubleObj removeLastObject];
- [optManaged.stringObj removeLastObject];
- [optManaged.dataObj removeLastObject];
- [optManaged.dateObj removeLastObject];
- XCTAssertEqualObjects(optUnmanaged.boolObj.lastObject, @YES);
- XCTAssertEqualObjects(optUnmanaged.intObj.lastObject, @3);
- XCTAssertEqualObjects(optUnmanaged.floatObj.lastObject, @3.3f);
- XCTAssertEqualObjects(optUnmanaged.doubleObj.lastObject, @3.3);
- XCTAssertEqualObjects(optUnmanaged.stringObj.lastObject, @"b");
- XCTAssertEqualObjects(optUnmanaged.dataObj.lastObject, data(2));
- XCTAssertEqualObjects(optUnmanaged.dateObj.lastObject, date(2));
- XCTAssertEqualObjects(optManaged.boolObj.lastObject, @YES);
- XCTAssertEqualObjects(optManaged.intObj.lastObject, @3);
- XCTAssertEqualObjects(optManaged.floatObj.lastObject, @3.3f);
- XCTAssertEqualObjects(optManaged.doubleObj.lastObject, @3.3);
- XCTAssertEqualObjects(optManaged.stringObj.lastObject, @"b");
- XCTAssertEqualObjects(optManaged.dataObj.lastObject, data(2));
- XCTAssertEqualObjects(optManaged.dateObj.lastObject, date(2));
- }
- - (void)testAddObject {
- RLMAssertThrowsWithReason([unmanaged.boolObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool'");
- RLMAssertThrowsWithReason([unmanaged.intObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int'");
- RLMAssertThrowsWithReason([unmanaged.floatObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float'");
- RLMAssertThrowsWithReason([unmanaged.doubleObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double'");
- RLMAssertThrowsWithReason([unmanaged.stringObj addObject:@2],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string'");
- RLMAssertThrowsWithReason([unmanaged.dataObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data'");
- RLMAssertThrowsWithReason([unmanaged.dateObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date'");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool?'");
- RLMAssertThrowsWithReason([optUnmanaged.intObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int?'");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float?'");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double?'");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj addObject:@2],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string?'");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data?'");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date?'");
- RLMAssertThrowsWithReason([managed.boolObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool'");
- RLMAssertThrowsWithReason([managed.intObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int'");
- RLMAssertThrowsWithReason([managed.floatObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float'");
- RLMAssertThrowsWithReason([managed.doubleObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double'");
- RLMAssertThrowsWithReason([managed.stringObj addObject:@2],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string'");
- RLMAssertThrowsWithReason([managed.dataObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data'");
- RLMAssertThrowsWithReason([managed.dateObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date'");
- RLMAssertThrowsWithReason([optManaged.boolObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool?'");
- RLMAssertThrowsWithReason([optManaged.intObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int?'");
- RLMAssertThrowsWithReason([optManaged.floatObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float?'");
- RLMAssertThrowsWithReason([optManaged.doubleObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double?'");
- RLMAssertThrowsWithReason([optManaged.stringObj addObject:@2],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string?'");
- RLMAssertThrowsWithReason([optManaged.dataObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data?'");
- RLMAssertThrowsWithReason([optManaged.dateObj addObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date?'");
- RLMAssertThrowsWithReason([unmanaged.boolObj addObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'bool'");
- RLMAssertThrowsWithReason([unmanaged.intObj addObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'int'");
- RLMAssertThrowsWithReason([unmanaged.floatObj addObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'float'");
- RLMAssertThrowsWithReason([unmanaged.doubleObj addObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'double'");
- RLMAssertThrowsWithReason([unmanaged.stringObj addObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'string'");
- RLMAssertThrowsWithReason([unmanaged.dataObj addObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'data'");
- RLMAssertThrowsWithReason([unmanaged.dateObj addObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'date'");
- RLMAssertThrowsWithReason([managed.boolObj addObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'bool'");
- RLMAssertThrowsWithReason([managed.intObj addObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'int'");
- RLMAssertThrowsWithReason([managed.floatObj addObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'float'");
- RLMAssertThrowsWithReason([managed.doubleObj addObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'double'");
- RLMAssertThrowsWithReason([managed.stringObj addObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'string'");
- RLMAssertThrowsWithReason([managed.dataObj addObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'data'");
- RLMAssertThrowsWithReason([managed.dateObj addObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'date'");
- [unmanaged.boolObj addObject:@NO];
- [unmanaged.intObj addObject:@2];
- [unmanaged.floatObj addObject:@2.2f];
- [unmanaged.doubleObj addObject:@2.2];
- [unmanaged.stringObj addObject:@"a"];
- [unmanaged.dataObj addObject:data(1)];
- [unmanaged.dateObj addObject:date(1)];
- [optUnmanaged.boolObj addObject:@NO];
- [optUnmanaged.intObj addObject:@2];
- [optUnmanaged.floatObj addObject:@2.2f];
- [optUnmanaged.doubleObj addObject:@2.2];
- [optUnmanaged.stringObj addObject:@"a"];
- [optUnmanaged.dataObj addObject:data(1)];
- [optUnmanaged.dateObj addObject:date(1)];
- [managed.boolObj addObject:@NO];
- [managed.intObj addObject:@2];
- [managed.floatObj addObject:@2.2f];
- [managed.doubleObj addObject:@2.2];
- [managed.stringObj addObject:@"a"];
- [managed.dataObj addObject:data(1)];
- [managed.dateObj addObject:date(1)];
- [optManaged.boolObj addObject:@NO];
- [optManaged.intObj addObject:@2];
- [optManaged.floatObj addObject:@2.2f];
- [optManaged.doubleObj addObject:@2.2];
- [optManaged.stringObj addObject:@"a"];
- [optManaged.dataObj addObject:data(1)];
- [optManaged.dateObj addObject:date(1)];
- XCTAssertEqualObjects(unmanaged.boolObj[0], @NO);
- XCTAssertEqualObjects(unmanaged.intObj[0], @2);
- XCTAssertEqualObjects(unmanaged.floatObj[0], @2.2f);
- XCTAssertEqualObjects(unmanaged.doubleObj[0], @2.2);
- XCTAssertEqualObjects(unmanaged.stringObj[0], @"a");
- XCTAssertEqualObjects(unmanaged.dataObj[0], data(1));
- XCTAssertEqualObjects(unmanaged.dateObj[0], date(1));
- XCTAssertEqualObjects(optUnmanaged.boolObj[0], @NO);
- XCTAssertEqualObjects(optUnmanaged.intObj[0], @2);
- XCTAssertEqualObjects(optUnmanaged.floatObj[0], @2.2f);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[0], @2.2);
- XCTAssertEqualObjects(optUnmanaged.stringObj[0], @"a");
- XCTAssertEqualObjects(optUnmanaged.dataObj[0], data(1));
- XCTAssertEqualObjects(optUnmanaged.dateObj[0], date(1));
- XCTAssertEqualObjects(managed.boolObj[0], @NO);
- XCTAssertEqualObjects(managed.intObj[0], @2);
- XCTAssertEqualObjects(managed.floatObj[0], @2.2f);
- XCTAssertEqualObjects(managed.doubleObj[0], @2.2);
- XCTAssertEqualObjects(managed.stringObj[0], @"a");
- XCTAssertEqualObjects(managed.dataObj[0], data(1));
- XCTAssertEqualObjects(managed.dateObj[0], date(1));
- XCTAssertEqualObjects(optManaged.boolObj[0], @NO);
- XCTAssertEqualObjects(optManaged.intObj[0], @2);
- XCTAssertEqualObjects(optManaged.floatObj[0], @2.2f);
- XCTAssertEqualObjects(optManaged.doubleObj[0], @2.2);
- XCTAssertEqualObjects(optManaged.stringObj[0], @"a");
- XCTAssertEqualObjects(optManaged.dataObj[0], data(1));
- XCTAssertEqualObjects(optManaged.dateObj[0], date(1));
- [optUnmanaged.boolObj addObject:NSNull.null];
- [optUnmanaged.intObj addObject:NSNull.null];
- [optUnmanaged.floatObj addObject:NSNull.null];
- [optUnmanaged.doubleObj addObject:NSNull.null];
- [optUnmanaged.stringObj addObject:NSNull.null];
- [optUnmanaged.dataObj addObject:NSNull.null];
- [optUnmanaged.dateObj addObject:NSNull.null];
- [optManaged.boolObj addObject:NSNull.null];
- [optManaged.intObj addObject:NSNull.null];
- [optManaged.floatObj addObject:NSNull.null];
- [optManaged.doubleObj addObject:NSNull.null];
- [optManaged.stringObj addObject:NSNull.null];
- [optManaged.dataObj addObject:NSNull.null];
- [optManaged.dateObj addObject:NSNull.null];
- XCTAssertEqualObjects(optUnmanaged.boolObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.intObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.floatObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.stringObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.dataObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.dateObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.boolObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.intObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.floatObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.doubleObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.stringObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.dataObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.dateObj[1], NSNull.null);
- }
- - (void)testAddObjects {
- RLMAssertThrowsWithReason([unmanaged.boolObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool'");
- RLMAssertThrowsWithReason([unmanaged.intObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int'");
- RLMAssertThrowsWithReason([unmanaged.floatObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float'");
- RLMAssertThrowsWithReason([unmanaged.doubleObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double'");
- RLMAssertThrowsWithReason([unmanaged.stringObj addObjects:@[@2]],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string'");
- RLMAssertThrowsWithReason([unmanaged.dataObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data'");
- RLMAssertThrowsWithReason([unmanaged.dateObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date'");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool?'");
- RLMAssertThrowsWithReason([optUnmanaged.intObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int?'");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float?'");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double?'");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj addObjects:@[@2]],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string?'");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data?'");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date?'");
- RLMAssertThrowsWithReason([managed.boolObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool'");
- RLMAssertThrowsWithReason([managed.intObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int'");
- RLMAssertThrowsWithReason([managed.floatObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float'");
- RLMAssertThrowsWithReason([managed.doubleObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double'");
- RLMAssertThrowsWithReason([managed.stringObj addObjects:@[@2]],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string'");
- RLMAssertThrowsWithReason([managed.dataObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data'");
- RLMAssertThrowsWithReason([managed.dateObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date'");
- RLMAssertThrowsWithReason([optManaged.boolObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool?'");
- RLMAssertThrowsWithReason([optManaged.intObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int?'");
- RLMAssertThrowsWithReason([optManaged.floatObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float?'");
- RLMAssertThrowsWithReason([optManaged.doubleObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double?'");
- RLMAssertThrowsWithReason([optManaged.stringObj addObjects:@[@2]],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string?'");
- RLMAssertThrowsWithReason([optManaged.dataObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data?'");
- RLMAssertThrowsWithReason([optManaged.dateObj addObjects:@[@"a"]],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date?'");
- RLMAssertThrowsWithReason([unmanaged.boolObj addObjects:@[NSNull.null]],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'bool'");
- RLMAssertThrowsWithReason([unmanaged.intObj addObjects:@[NSNull.null]],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'int'");
- RLMAssertThrowsWithReason([unmanaged.floatObj addObjects:@[NSNull.null]],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'float'");
- RLMAssertThrowsWithReason([unmanaged.doubleObj addObjects:@[NSNull.null]],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'double'");
- RLMAssertThrowsWithReason([unmanaged.stringObj addObjects:@[NSNull.null]],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'string'");
- RLMAssertThrowsWithReason([unmanaged.dataObj addObjects:@[NSNull.null]],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'data'");
- RLMAssertThrowsWithReason([unmanaged.dateObj addObjects:@[NSNull.null]],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'date'");
- RLMAssertThrowsWithReason([managed.boolObj addObjects:@[NSNull.null]],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'bool'");
- RLMAssertThrowsWithReason([managed.intObj addObjects:@[NSNull.null]],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'int'");
- RLMAssertThrowsWithReason([managed.floatObj addObjects:@[NSNull.null]],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'float'");
- RLMAssertThrowsWithReason([managed.doubleObj addObjects:@[NSNull.null]],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'double'");
- RLMAssertThrowsWithReason([managed.stringObj addObjects:@[NSNull.null]],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'string'");
- RLMAssertThrowsWithReason([managed.dataObj addObjects:@[NSNull.null]],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'data'");
- RLMAssertThrowsWithReason([managed.dateObj addObjects:@[NSNull.null]],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'date'");
- [unmanaged.boolObj addObjects:@[@NO, @YES]];
- [unmanaged.intObj addObjects:@[@2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3]];
- [unmanaged.stringObj addObjects:@[@"a", @"b"]];
- [unmanaged.dataObj addObjects:@[data(1), data(2)]];
- [unmanaged.dateObj addObjects:@[date(1), date(2)]];
- [optUnmanaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optUnmanaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optUnmanaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optUnmanaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optUnmanaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- [managed.boolObj addObjects:@[@NO, @YES]];
- [managed.intObj addObjects:@[@2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3]];
- [managed.stringObj addObjects:@[@"a", @"b"]];
- [managed.dataObj addObjects:@[data(1), data(2)]];
- [managed.dateObj addObjects:@[date(1), date(2)]];
- [optManaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optManaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optManaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optManaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optManaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- XCTAssertEqualObjects(unmanaged.boolObj[0], @NO);
- XCTAssertEqualObjects(unmanaged.intObj[0], @2);
- XCTAssertEqualObjects(unmanaged.floatObj[0], @2.2f);
- XCTAssertEqualObjects(unmanaged.doubleObj[0], @2.2);
- XCTAssertEqualObjects(unmanaged.stringObj[0], @"a");
- XCTAssertEqualObjects(unmanaged.dataObj[0], data(1));
- XCTAssertEqualObjects(unmanaged.dateObj[0], date(1));
- XCTAssertEqualObjects(optUnmanaged.boolObj[0], @NO);
- XCTAssertEqualObjects(optUnmanaged.intObj[0], @2);
- XCTAssertEqualObjects(optUnmanaged.floatObj[0], @2.2f);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[0], @2.2);
- XCTAssertEqualObjects(optUnmanaged.stringObj[0], @"a");
- XCTAssertEqualObjects(optUnmanaged.dataObj[0], data(1));
- XCTAssertEqualObjects(optUnmanaged.dateObj[0], date(1));
- XCTAssertEqualObjects(managed.boolObj[0], @NO);
- XCTAssertEqualObjects(managed.intObj[0], @2);
- XCTAssertEqualObjects(managed.floatObj[0], @2.2f);
- XCTAssertEqualObjects(managed.doubleObj[0], @2.2);
- XCTAssertEqualObjects(managed.stringObj[0], @"a");
- XCTAssertEqualObjects(managed.dataObj[0], data(1));
- XCTAssertEqualObjects(managed.dateObj[0], date(1));
- XCTAssertEqualObjects(optManaged.boolObj[0], @NO);
- XCTAssertEqualObjects(optManaged.intObj[0], @2);
- XCTAssertEqualObjects(optManaged.floatObj[0], @2.2f);
- XCTAssertEqualObjects(optManaged.doubleObj[0], @2.2);
- XCTAssertEqualObjects(optManaged.stringObj[0], @"a");
- XCTAssertEqualObjects(optManaged.dataObj[0], data(1));
- XCTAssertEqualObjects(optManaged.dateObj[0], date(1));
- XCTAssertEqualObjects(unmanaged.boolObj[1], @YES);
- XCTAssertEqualObjects(unmanaged.intObj[1], @3);
- XCTAssertEqualObjects(unmanaged.floatObj[1], @3.3f);
- XCTAssertEqualObjects(unmanaged.doubleObj[1], @3.3);
- XCTAssertEqualObjects(unmanaged.stringObj[1], @"b");
- XCTAssertEqualObjects(unmanaged.dataObj[1], data(2));
- XCTAssertEqualObjects(unmanaged.dateObj[1], date(2));
- XCTAssertEqualObjects(optUnmanaged.boolObj[1], @YES);
- XCTAssertEqualObjects(optUnmanaged.intObj[1], @3);
- XCTAssertEqualObjects(optUnmanaged.floatObj[1], @3.3f);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[1], @3.3);
- XCTAssertEqualObjects(optUnmanaged.stringObj[1], @"b");
- XCTAssertEqualObjects(optUnmanaged.dataObj[1], data(2));
- XCTAssertEqualObjects(optUnmanaged.dateObj[1], date(2));
- XCTAssertEqualObjects(managed.boolObj[1], @YES);
- XCTAssertEqualObjects(managed.intObj[1], @3);
- XCTAssertEqualObjects(managed.floatObj[1], @3.3f);
- XCTAssertEqualObjects(managed.doubleObj[1], @3.3);
- XCTAssertEqualObjects(managed.stringObj[1], @"b");
- XCTAssertEqualObjects(managed.dataObj[1], data(2));
- XCTAssertEqualObjects(managed.dateObj[1], date(2));
- XCTAssertEqualObjects(optManaged.boolObj[1], @YES);
- XCTAssertEqualObjects(optManaged.intObj[1], @3);
- XCTAssertEqualObjects(optManaged.floatObj[1], @3.3f);
- XCTAssertEqualObjects(optManaged.doubleObj[1], @3.3);
- XCTAssertEqualObjects(optManaged.stringObj[1], @"b");
- XCTAssertEqualObjects(optManaged.dataObj[1], data(2));
- XCTAssertEqualObjects(optManaged.dateObj[1], date(2));
- XCTAssertEqualObjects(optUnmanaged.boolObj[2], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.intObj[2], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.floatObj[2], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[2], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.stringObj[2], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.dataObj[2], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.dateObj[2], NSNull.null);
- XCTAssertEqualObjects(optManaged.boolObj[2], NSNull.null);
- XCTAssertEqualObjects(optManaged.intObj[2], NSNull.null);
- XCTAssertEqualObjects(optManaged.floatObj[2], NSNull.null);
- XCTAssertEqualObjects(optManaged.doubleObj[2], NSNull.null);
- XCTAssertEqualObjects(optManaged.stringObj[2], NSNull.null);
- XCTAssertEqualObjects(optManaged.dataObj[2], NSNull.null);
- XCTAssertEqualObjects(optManaged.dateObj[2], NSNull.null);
- }
- - (void)testInsertObject {
- RLMAssertThrowsWithReason([unmanaged.boolObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool'");
- RLMAssertThrowsWithReason([unmanaged.intObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int'");
- RLMAssertThrowsWithReason([unmanaged.floatObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float'");
- RLMAssertThrowsWithReason([unmanaged.doubleObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double'");
- RLMAssertThrowsWithReason([unmanaged.stringObj insertObject:@2 atIndex:0],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string'");
- RLMAssertThrowsWithReason([unmanaged.dataObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data'");
- RLMAssertThrowsWithReason([unmanaged.dateObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date'");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool?'");
- RLMAssertThrowsWithReason([optUnmanaged.intObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int?'");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float?'");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double?'");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj insertObject:@2 atIndex:0],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string?'");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data?'");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date?'");
- RLMAssertThrowsWithReason([managed.boolObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool'");
- RLMAssertThrowsWithReason([managed.intObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int'");
- RLMAssertThrowsWithReason([managed.floatObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float'");
- RLMAssertThrowsWithReason([managed.doubleObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double'");
- RLMAssertThrowsWithReason([managed.stringObj insertObject:@2 atIndex:0],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string'");
- RLMAssertThrowsWithReason([managed.dataObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data'");
- RLMAssertThrowsWithReason([managed.dateObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date'");
- RLMAssertThrowsWithReason([optManaged.boolObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool?'");
- RLMAssertThrowsWithReason([optManaged.intObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int?'");
- RLMAssertThrowsWithReason([optManaged.floatObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float?'");
- RLMAssertThrowsWithReason([optManaged.doubleObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double?'");
- RLMAssertThrowsWithReason([optManaged.stringObj insertObject:@2 atIndex:0],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string?'");
- RLMAssertThrowsWithReason([optManaged.dataObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data?'");
- RLMAssertThrowsWithReason([optManaged.dateObj insertObject:@"a" atIndex:0],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date?'");
- RLMAssertThrowsWithReason([unmanaged.boolObj insertObject:NSNull.null atIndex:0],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'bool'");
- RLMAssertThrowsWithReason([unmanaged.intObj insertObject:NSNull.null atIndex:0],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'int'");
- RLMAssertThrowsWithReason([unmanaged.floatObj insertObject:NSNull.null atIndex:0],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'float'");
- RLMAssertThrowsWithReason([unmanaged.doubleObj insertObject:NSNull.null atIndex:0],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'double'");
- RLMAssertThrowsWithReason([unmanaged.stringObj insertObject:NSNull.null atIndex:0],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'string'");
- RLMAssertThrowsWithReason([unmanaged.dataObj insertObject:NSNull.null atIndex:0],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'data'");
- RLMAssertThrowsWithReason([unmanaged.dateObj insertObject:NSNull.null atIndex:0],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'date'");
- RLMAssertThrowsWithReason([managed.boolObj insertObject:NSNull.null atIndex:0],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'bool'");
- RLMAssertThrowsWithReason([managed.intObj insertObject:NSNull.null atIndex:0],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'int'");
- RLMAssertThrowsWithReason([managed.floatObj insertObject:NSNull.null atIndex:0],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'float'");
- RLMAssertThrowsWithReason([managed.doubleObj insertObject:NSNull.null atIndex:0],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'double'");
- RLMAssertThrowsWithReason([managed.stringObj insertObject:NSNull.null atIndex:0],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'string'");
- RLMAssertThrowsWithReason([managed.dataObj insertObject:NSNull.null atIndex:0],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'data'");
- RLMAssertThrowsWithReason([managed.dateObj insertObject:NSNull.null atIndex:0],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'date'");
- RLMAssertThrowsWithReason([unmanaged.boolObj insertObject:@NO atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([unmanaged.intObj insertObject:@2 atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([unmanaged.floatObj insertObject:@2.2f atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([unmanaged.doubleObj insertObject:@2.2 atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([unmanaged.stringObj insertObject:@"a" atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([unmanaged.dataObj insertObject:data(1) atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([unmanaged.dateObj insertObject:date(1) atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj insertObject:@NO atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([optUnmanaged.intObj insertObject:@2 atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj insertObject:@2.2f atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj insertObject:@2.2 atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj insertObject:@"a" atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj insertObject:data(1) atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj insertObject:date(1) atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([managed.boolObj insertObject:@NO atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([managed.intObj insertObject:@2 atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([managed.floatObj insertObject:@2.2f atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([managed.doubleObj insertObject:@2.2 atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([managed.stringObj insertObject:@"a" atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([managed.dataObj insertObject:data(1) atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([managed.dateObj insertObject:date(1) atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([optManaged.boolObj insertObject:@NO atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([optManaged.intObj insertObject:@2 atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([optManaged.floatObj insertObject:@2.2f atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([optManaged.doubleObj insertObject:@2.2 atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([optManaged.stringObj insertObject:@"a" atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([optManaged.dataObj insertObject:data(1) atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- RLMAssertThrowsWithReason([optManaged.dateObj insertObject:date(1) atIndex:1],
- @"Index 1 is out of bounds (must be less than 1).");
- [unmanaged.boolObj insertObject:@NO atIndex:0];
- [unmanaged.intObj insertObject:@2 atIndex:0];
- [unmanaged.floatObj insertObject:@2.2f atIndex:0];
- [unmanaged.doubleObj insertObject:@2.2 atIndex:0];
- [unmanaged.stringObj insertObject:@"a" atIndex:0];
- [unmanaged.dataObj insertObject:data(1) atIndex:0];
- [unmanaged.dateObj insertObject:date(1) atIndex:0];
- [optUnmanaged.boolObj insertObject:@NO atIndex:0];
- [optUnmanaged.intObj insertObject:@2 atIndex:0];
- [optUnmanaged.floatObj insertObject:@2.2f atIndex:0];
- [optUnmanaged.doubleObj insertObject:@2.2 atIndex:0];
- [optUnmanaged.stringObj insertObject:@"a" atIndex:0];
- [optUnmanaged.dataObj insertObject:data(1) atIndex:0];
- [optUnmanaged.dateObj insertObject:date(1) atIndex:0];
- [managed.boolObj insertObject:@NO atIndex:0];
- [managed.intObj insertObject:@2 atIndex:0];
- [managed.floatObj insertObject:@2.2f atIndex:0];
- [managed.doubleObj insertObject:@2.2 atIndex:0];
- [managed.stringObj insertObject:@"a" atIndex:0];
- [managed.dataObj insertObject:data(1) atIndex:0];
- [managed.dateObj insertObject:date(1) atIndex:0];
- [optManaged.boolObj insertObject:@NO atIndex:0];
- [optManaged.intObj insertObject:@2 atIndex:0];
- [optManaged.floatObj insertObject:@2.2f atIndex:0];
- [optManaged.doubleObj insertObject:@2.2 atIndex:0];
- [optManaged.stringObj insertObject:@"a" atIndex:0];
- [optManaged.dataObj insertObject:data(1) atIndex:0];
- [optManaged.dateObj insertObject:date(1) atIndex:0];
- XCTAssertEqualObjects(unmanaged.boolObj[0], @NO);
- XCTAssertEqualObjects(unmanaged.intObj[0], @2);
- XCTAssertEqualObjects(unmanaged.floatObj[0], @2.2f);
- XCTAssertEqualObjects(unmanaged.doubleObj[0], @2.2);
- XCTAssertEqualObjects(unmanaged.stringObj[0], @"a");
- XCTAssertEqualObjects(unmanaged.dataObj[0], data(1));
- XCTAssertEqualObjects(unmanaged.dateObj[0], date(1));
- XCTAssertEqualObjects(optUnmanaged.boolObj[0], @NO);
- XCTAssertEqualObjects(optUnmanaged.intObj[0], @2);
- XCTAssertEqualObjects(optUnmanaged.floatObj[0], @2.2f);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[0], @2.2);
- XCTAssertEqualObjects(optUnmanaged.stringObj[0], @"a");
- XCTAssertEqualObjects(optUnmanaged.dataObj[0], data(1));
- XCTAssertEqualObjects(optUnmanaged.dateObj[0], date(1));
- XCTAssertEqualObjects(managed.boolObj[0], @NO);
- XCTAssertEqualObjects(managed.intObj[0], @2);
- XCTAssertEqualObjects(managed.floatObj[0], @2.2f);
- XCTAssertEqualObjects(managed.doubleObj[0], @2.2);
- XCTAssertEqualObjects(managed.stringObj[0], @"a");
- XCTAssertEqualObjects(managed.dataObj[0], data(1));
- XCTAssertEqualObjects(managed.dateObj[0], date(1));
- XCTAssertEqualObjects(optManaged.boolObj[0], @NO);
- XCTAssertEqualObjects(optManaged.intObj[0], @2);
- XCTAssertEqualObjects(optManaged.floatObj[0], @2.2f);
- XCTAssertEqualObjects(optManaged.doubleObj[0], @2.2);
- XCTAssertEqualObjects(optManaged.stringObj[0], @"a");
- XCTAssertEqualObjects(optManaged.dataObj[0], data(1));
- XCTAssertEqualObjects(optManaged.dateObj[0], date(1));
- [unmanaged.boolObj insertObject:@YES atIndex:0];
- [unmanaged.intObj insertObject:@3 atIndex:0];
- [unmanaged.floatObj insertObject:@3.3f atIndex:0];
- [unmanaged.doubleObj insertObject:@3.3 atIndex:0];
- [unmanaged.stringObj insertObject:@"b" atIndex:0];
- [unmanaged.dataObj insertObject:data(2) atIndex:0];
- [unmanaged.dateObj insertObject:date(2) atIndex:0];
- [optUnmanaged.boolObj insertObject:@YES atIndex:0];
- [optUnmanaged.intObj insertObject:@3 atIndex:0];
- [optUnmanaged.floatObj insertObject:@3.3f atIndex:0];
- [optUnmanaged.doubleObj insertObject:@3.3 atIndex:0];
- [optUnmanaged.stringObj insertObject:@"b" atIndex:0];
- [optUnmanaged.dataObj insertObject:data(2) atIndex:0];
- [optUnmanaged.dateObj insertObject:date(2) atIndex:0];
- [managed.boolObj insertObject:@YES atIndex:0];
- [managed.intObj insertObject:@3 atIndex:0];
- [managed.floatObj insertObject:@3.3f atIndex:0];
- [managed.doubleObj insertObject:@3.3 atIndex:0];
- [managed.stringObj insertObject:@"b" atIndex:0];
- [managed.dataObj insertObject:data(2) atIndex:0];
- [managed.dateObj insertObject:date(2) atIndex:0];
- [optManaged.boolObj insertObject:@YES atIndex:0];
- [optManaged.intObj insertObject:@3 atIndex:0];
- [optManaged.floatObj insertObject:@3.3f atIndex:0];
- [optManaged.doubleObj insertObject:@3.3 atIndex:0];
- [optManaged.stringObj insertObject:@"b" atIndex:0];
- [optManaged.dataObj insertObject:data(2) atIndex:0];
- [optManaged.dateObj insertObject:date(2) atIndex:0];
- XCTAssertEqualObjects(unmanaged.boolObj[0], @YES);
- XCTAssertEqualObjects(unmanaged.intObj[0], @3);
- XCTAssertEqualObjects(unmanaged.floatObj[0], @3.3f);
- XCTAssertEqualObjects(unmanaged.doubleObj[0], @3.3);
- XCTAssertEqualObjects(unmanaged.stringObj[0], @"b");
- XCTAssertEqualObjects(unmanaged.dataObj[0], data(2));
- XCTAssertEqualObjects(unmanaged.dateObj[0], date(2));
- XCTAssertEqualObjects(optUnmanaged.boolObj[0], @YES);
- XCTAssertEqualObjects(optUnmanaged.intObj[0], @3);
- XCTAssertEqualObjects(optUnmanaged.floatObj[0], @3.3f);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[0], @3.3);
- XCTAssertEqualObjects(optUnmanaged.stringObj[0], @"b");
- XCTAssertEqualObjects(optUnmanaged.dataObj[0], data(2));
- XCTAssertEqualObjects(optUnmanaged.dateObj[0], date(2));
- XCTAssertEqualObjects(managed.boolObj[0], @YES);
- XCTAssertEqualObjects(managed.intObj[0], @3);
- XCTAssertEqualObjects(managed.floatObj[0], @3.3f);
- XCTAssertEqualObjects(managed.doubleObj[0], @3.3);
- XCTAssertEqualObjects(managed.stringObj[0], @"b");
- XCTAssertEqualObjects(managed.dataObj[0], data(2));
- XCTAssertEqualObjects(managed.dateObj[0], date(2));
- XCTAssertEqualObjects(optManaged.boolObj[0], @YES);
- XCTAssertEqualObjects(optManaged.intObj[0], @3);
- XCTAssertEqualObjects(optManaged.floatObj[0], @3.3f);
- XCTAssertEqualObjects(optManaged.doubleObj[0], @3.3);
- XCTAssertEqualObjects(optManaged.stringObj[0], @"b");
- XCTAssertEqualObjects(optManaged.dataObj[0], data(2));
- XCTAssertEqualObjects(optManaged.dateObj[0], date(2));
- XCTAssertEqualObjects(unmanaged.boolObj[1], @NO);
- XCTAssertEqualObjects(unmanaged.intObj[1], @2);
- XCTAssertEqualObjects(unmanaged.floatObj[1], @2.2f);
- XCTAssertEqualObjects(unmanaged.doubleObj[1], @2.2);
- XCTAssertEqualObjects(unmanaged.stringObj[1], @"a");
- XCTAssertEqualObjects(unmanaged.dataObj[1], data(1));
- XCTAssertEqualObjects(unmanaged.dateObj[1], date(1));
- XCTAssertEqualObjects(optUnmanaged.boolObj[1], @NO);
- XCTAssertEqualObjects(optUnmanaged.intObj[1], @2);
- XCTAssertEqualObjects(optUnmanaged.floatObj[1], @2.2f);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[1], @2.2);
- XCTAssertEqualObjects(optUnmanaged.stringObj[1], @"a");
- XCTAssertEqualObjects(optUnmanaged.dataObj[1], data(1));
- XCTAssertEqualObjects(optUnmanaged.dateObj[1], date(1));
- XCTAssertEqualObjects(managed.boolObj[1], @NO);
- XCTAssertEqualObjects(managed.intObj[1], @2);
- XCTAssertEqualObjects(managed.floatObj[1], @2.2f);
- XCTAssertEqualObjects(managed.doubleObj[1], @2.2);
- XCTAssertEqualObjects(managed.stringObj[1], @"a");
- XCTAssertEqualObjects(managed.dataObj[1], data(1));
- XCTAssertEqualObjects(managed.dateObj[1], date(1));
- XCTAssertEqualObjects(optManaged.boolObj[1], @NO);
- XCTAssertEqualObjects(optManaged.intObj[1], @2);
- XCTAssertEqualObjects(optManaged.floatObj[1], @2.2f);
- XCTAssertEqualObjects(optManaged.doubleObj[1], @2.2);
- XCTAssertEqualObjects(optManaged.stringObj[1], @"a");
- XCTAssertEqualObjects(optManaged.dataObj[1], data(1));
- XCTAssertEqualObjects(optManaged.dateObj[1], date(1));
- [optUnmanaged.boolObj insertObject:NSNull.null atIndex:1];
- [optUnmanaged.intObj insertObject:NSNull.null atIndex:1];
- [optUnmanaged.floatObj insertObject:NSNull.null atIndex:1];
- [optUnmanaged.doubleObj insertObject:NSNull.null atIndex:1];
- [optUnmanaged.stringObj insertObject:NSNull.null atIndex:1];
- [optUnmanaged.dataObj insertObject:NSNull.null atIndex:1];
- [optUnmanaged.dateObj insertObject:NSNull.null atIndex:1];
- [optManaged.boolObj insertObject:NSNull.null atIndex:1];
- [optManaged.intObj insertObject:NSNull.null atIndex:1];
- [optManaged.floatObj insertObject:NSNull.null atIndex:1];
- [optManaged.doubleObj insertObject:NSNull.null atIndex:1];
- [optManaged.stringObj insertObject:NSNull.null atIndex:1];
- [optManaged.dataObj insertObject:NSNull.null atIndex:1];
- [optManaged.dateObj insertObject:NSNull.null atIndex:1];
- XCTAssertEqualObjects(optUnmanaged.boolObj[0], @YES);
- XCTAssertEqualObjects(optUnmanaged.intObj[0], @3);
- XCTAssertEqualObjects(optUnmanaged.floatObj[0], @3.3f);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[0], @3.3);
- XCTAssertEqualObjects(optUnmanaged.stringObj[0], @"b");
- XCTAssertEqualObjects(optUnmanaged.dataObj[0], data(2));
- XCTAssertEqualObjects(optUnmanaged.dateObj[0], date(2));
- XCTAssertEqualObjects(optManaged.boolObj[0], @YES);
- XCTAssertEqualObjects(optManaged.intObj[0], @3);
- XCTAssertEqualObjects(optManaged.floatObj[0], @3.3f);
- XCTAssertEqualObjects(optManaged.doubleObj[0], @3.3);
- XCTAssertEqualObjects(optManaged.stringObj[0], @"b");
- XCTAssertEqualObjects(optManaged.dataObj[0], data(2));
- XCTAssertEqualObjects(optManaged.dateObj[0], date(2));
- XCTAssertEqualObjects(optUnmanaged.boolObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.intObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.floatObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.stringObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.dataObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.dateObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.boolObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.intObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.floatObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.doubleObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.stringObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.dataObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.dateObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.boolObj[2], @NO);
- XCTAssertEqualObjects(optUnmanaged.intObj[2], @2);
- XCTAssertEqualObjects(optUnmanaged.floatObj[2], @2.2f);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[2], @2.2);
- XCTAssertEqualObjects(optUnmanaged.stringObj[2], @"a");
- XCTAssertEqualObjects(optUnmanaged.dataObj[2], data(1));
- XCTAssertEqualObjects(optUnmanaged.dateObj[2], date(1));
- XCTAssertEqualObjects(optManaged.boolObj[2], @NO);
- XCTAssertEqualObjects(optManaged.intObj[2], @2);
- XCTAssertEqualObjects(optManaged.floatObj[2], @2.2f);
- XCTAssertEqualObjects(optManaged.doubleObj[2], @2.2);
- XCTAssertEqualObjects(optManaged.stringObj[2], @"a");
- XCTAssertEqualObjects(optManaged.dataObj[2], data(1));
- XCTAssertEqualObjects(optManaged.dateObj[2], date(1));
- }
- - (void)testRemoveObject {
- RLMAssertThrowsWithReason([unmanaged.boolObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.intObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.floatObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.doubleObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.stringObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.dataObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.dateObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.intObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.boolObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.intObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.floatObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.doubleObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.stringObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.dataObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.dateObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.boolObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.intObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.floatObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.doubleObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.stringObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.dataObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.dateObj removeObjectAtIndex:0],
- @"Index 0 is out of bounds (must be less than 0).");
- [unmanaged.boolObj addObjects:@[@NO, @YES]];
- [unmanaged.intObj addObjects:@[@2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3]];
- [unmanaged.stringObj addObjects:@[@"a", @"b"]];
- [unmanaged.dataObj addObjects:@[data(1), data(2)]];
- [unmanaged.dateObj addObjects:@[date(1), date(2)]];
- [optUnmanaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optUnmanaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optUnmanaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optUnmanaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optUnmanaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- [managed.boolObj addObjects:@[@NO, @YES]];
- [managed.intObj addObjects:@[@2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3]];
- [managed.stringObj addObjects:@[@"a", @"b"]];
- [managed.dataObj addObjects:@[data(1), data(2)]];
- [managed.dateObj addObjects:@[date(1), date(2)]];
- [optManaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optManaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optManaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optManaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optManaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- XCTAssertEqual(unmanaged.boolObj.count, 2U);
- XCTAssertEqual(unmanaged.intObj.count, 2U);
- XCTAssertEqual(unmanaged.floatObj.count, 2U);
- XCTAssertEqual(unmanaged.doubleObj.count, 2U);
- XCTAssertEqual(unmanaged.stringObj.count, 2U);
- XCTAssertEqual(unmanaged.dataObj.count, 2U);
- XCTAssertEqual(unmanaged.dateObj.count, 2U);
- XCTAssertEqual(managed.boolObj.count, 2U);
- XCTAssertEqual(managed.intObj.count, 2U);
- XCTAssertEqual(managed.floatObj.count, 2U);
- XCTAssertEqual(managed.doubleObj.count, 2U);
- XCTAssertEqual(managed.stringObj.count, 2U);
- XCTAssertEqual(managed.dataObj.count, 2U);
- XCTAssertEqual(managed.dateObj.count, 2U);
- XCTAssertEqual(optUnmanaged.boolObj.count, 3U);
- XCTAssertEqual(optUnmanaged.intObj.count, 3U);
- XCTAssertEqual(optUnmanaged.floatObj.count, 3U);
- XCTAssertEqual(optUnmanaged.doubleObj.count, 3U);
- XCTAssertEqual(optUnmanaged.stringObj.count, 3U);
- XCTAssertEqual(optUnmanaged.dataObj.count, 3U);
- XCTAssertEqual(optUnmanaged.dateObj.count, 3U);
- XCTAssertEqual(optManaged.boolObj.count, 3U);
- XCTAssertEqual(optManaged.intObj.count, 3U);
- XCTAssertEqual(optManaged.floatObj.count, 3U);
- XCTAssertEqual(optManaged.doubleObj.count, 3U);
- XCTAssertEqual(optManaged.stringObj.count, 3U);
- XCTAssertEqual(optManaged.dataObj.count, 3U);
- XCTAssertEqual(optManaged.dateObj.count, 3U);
- RLMAssertThrowsWithReason([unmanaged.boolObj removeObjectAtIndex:2],
- @"Index 2 is out of bounds (must be less than 2).");
- RLMAssertThrowsWithReason([unmanaged.intObj removeObjectAtIndex:2],
- @"Index 2 is out of bounds (must be less than 2).");
- RLMAssertThrowsWithReason([unmanaged.floatObj removeObjectAtIndex:2],
- @"Index 2 is out of bounds (must be less than 2).");
- RLMAssertThrowsWithReason([unmanaged.doubleObj removeObjectAtIndex:2],
- @"Index 2 is out of bounds (must be less than 2).");
- RLMAssertThrowsWithReason([unmanaged.stringObj removeObjectAtIndex:2],
- @"Index 2 is out of bounds (must be less than 2).");
- RLMAssertThrowsWithReason([unmanaged.dataObj removeObjectAtIndex:2],
- @"Index 2 is out of bounds (must be less than 2).");
- RLMAssertThrowsWithReason([unmanaged.dateObj removeObjectAtIndex:2],
- @"Index 2 is out of bounds (must be less than 2).");
- RLMAssertThrowsWithReason([managed.boolObj removeObjectAtIndex:2],
- @"Index 2 is out of bounds (must be less than 2).");
- RLMAssertThrowsWithReason([managed.intObj removeObjectAtIndex:2],
- @"Index 2 is out of bounds (must be less than 2).");
- RLMAssertThrowsWithReason([managed.floatObj removeObjectAtIndex:2],
- @"Index 2 is out of bounds (must be less than 2).");
- RLMAssertThrowsWithReason([managed.doubleObj removeObjectAtIndex:2],
- @"Index 2 is out of bounds (must be less than 2).");
- RLMAssertThrowsWithReason([managed.stringObj removeObjectAtIndex:2],
- @"Index 2 is out of bounds (must be less than 2).");
- RLMAssertThrowsWithReason([managed.dataObj removeObjectAtIndex:2],
- @"Index 2 is out of bounds (must be less than 2).");
- RLMAssertThrowsWithReason([managed.dateObj removeObjectAtIndex:2],
- @"Index 2 is out of bounds (must be less than 2).");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj removeObjectAtIndex:3],
- @"Index 3 is out of bounds (must be less than 3).");
- RLMAssertThrowsWithReason([optUnmanaged.intObj removeObjectAtIndex:3],
- @"Index 3 is out of bounds (must be less than 3).");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj removeObjectAtIndex:3],
- @"Index 3 is out of bounds (must be less than 3).");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj removeObjectAtIndex:3],
- @"Index 3 is out of bounds (must be less than 3).");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj removeObjectAtIndex:3],
- @"Index 3 is out of bounds (must be less than 3).");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj removeObjectAtIndex:3],
- @"Index 3 is out of bounds (must be less than 3).");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj removeObjectAtIndex:3],
- @"Index 3 is out of bounds (must be less than 3).");
- RLMAssertThrowsWithReason([optManaged.boolObj removeObjectAtIndex:3],
- @"Index 3 is out of bounds (must be less than 3).");
- RLMAssertThrowsWithReason([optManaged.intObj removeObjectAtIndex:3],
- @"Index 3 is out of bounds (must be less than 3).");
- RLMAssertThrowsWithReason([optManaged.floatObj removeObjectAtIndex:3],
- @"Index 3 is out of bounds (must be less than 3).");
- RLMAssertThrowsWithReason([optManaged.doubleObj removeObjectAtIndex:3],
- @"Index 3 is out of bounds (must be less than 3).");
- RLMAssertThrowsWithReason([optManaged.stringObj removeObjectAtIndex:3],
- @"Index 3 is out of bounds (must be less than 3).");
- RLMAssertThrowsWithReason([optManaged.dataObj removeObjectAtIndex:3],
- @"Index 3 is out of bounds (must be less than 3).");
- RLMAssertThrowsWithReason([optManaged.dateObj removeObjectAtIndex:3],
- @"Index 3 is out of bounds (must be less than 3).");
- [unmanaged.boolObj removeObjectAtIndex:0];
- [unmanaged.intObj removeObjectAtIndex:0];
- [unmanaged.floatObj removeObjectAtIndex:0];
- [unmanaged.doubleObj removeObjectAtIndex:0];
- [unmanaged.stringObj removeObjectAtIndex:0];
- [unmanaged.dataObj removeObjectAtIndex:0];
- [unmanaged.dateObj removeObjectAtIndex:0];
- [optUnmanaged.boolObj removeObjectAtIndex:0];
- [optUnmanaged.intObj removeObjectAtIndex:0];
- [optUnmanaged.floatObj removeObjectAtIndex:0];
- [optUnmanaged.doubleObj removeObjectAtIndex:0];
- [optUnmanaged.stringObj removeObjectAtIndex:0];
- [optUnmanaged.dataObj removeObjectAtIndex:0];
- [optUnmanaged.dateObj removeObjectAtIndex:0];
- [managed.boolObj removeObjectAtIndex:0];
- [managed.intObj removeObjectAtIndex:0];
- [managed.floatObj removeObjectAtIndex:0];
- [managed.doubleObj removeObjectAtIndex:0];
- [managed.stringObj removeObjectAtIndex:0];
- [managed.dataObj removeObjectAtIndex:0];
- [managed.dateObj removeObjectAtIndex:0];
- [optManaged.boolObj removeObjectAtIndex:0];
- [optManaged.intObj removeObjectAtIndex:0];
- [optManaged.floatObj removeObjectAtIndex:0];
- [optManaged.doubleObj removeObjectAtIndex:0];
- [optManaged.stringObj removeObjectAtIndex:0];
- [optManaged.dataObj removeObjectAtIndex:0];
- [optManaged.dateObj removeObjectAtIndex:0];
- XCTAssertEqual(unmanaged.boolObj.count, 1U);
- XCTAssertEqual(unmanaged.intObj.count, 1U);
- XCTAssertEqual(unmanaged.floatObj.count, 1U);
- XCTAssertEqual(unmanaged.doubleObj.count, 1U);
- XCTAssertEqual(unmanaged.stringObj.count, 1U);
- XCTAssertEqual(unmanaged.dataObj.count, 1U);
- XCTAssertEqual(unmanaged.dateObj.count, 1U);
- XCTAssertEqual(managed.boolObj.count, 1U);
- XCTAssertEqual(managed.intObj.count, 1U);
- XCTAssertEqual(managed.floatObj.count, 1U);
- XCTAssertEqual(managed.doubleObj.count, 1U);
- XCTAssertEqual(managed.stringObj.count, 1U);
- XCTAssertEqual(managed.dataObj.count, 1U);
- XCTAssertEqual(managed.dateObj.count, 1U);
- XCTAssertEqual(optUnmanaged.boolObj.count, 2U);
- XCTAssertEqual(optUnmanaged.intObj.count, 2U);
- XCTAssertEqual(optUnmanaged.floatObj.count, 2U);
- XCTAssertEqual(optUnmanaged.doubleObj.count, 2U);
- XCTAssertEqual(optUnmanaged.stringObj.count, 2U);
- XCTAssertEqual(optUnmanaged.dataObj.count, 2U);
- XCTAssertEqual(optUnmanaged.dateObj.count, 2U);
- XCTAssertEqual(optManaged.boolObj.count, 2U);
- XCTAssertEqual(optManaged.intObj.count, 2U);
- XCTAssertEqual(optManaged.floatObj.count, 2U);
- XCTAssertEqual(optManaged.doubleObj.count, 2U);
- XCTAssertEqual(optManaged.stringObj.count, 2U);
- XCTAssertEqual(optManaged.dataObj.count, 2U);
- XCTAssertEqual(optManaged.dateObj.count, 2U);
- XCTAssertEqualObjects(unmanaged.boolObj[0], @YES);
- XCTAssertEqualObjects(unmanaged.intObj[0], @3);
- XCTAssertEqualObjects(unmanaged.floatObj[0], @3.3f);
- XCTAssertEqualObjects(unmanaged.doubleObj[0], @3.3);
- XCTAssertEqualObjects(unmanaged.stringObj[0], @"b");
- XCTAssertEqualObjects(unmanaged.dataObj[0], data(2));
- XCTAssertEqualObjects(unmanaged.dateObj[0], date(2));
- XCTAssertEqualObjects(optUnmanaged.boolObj[0], @YES);
- XCTAssertEqualObjects(optUnmanaged.intObj[0], @3);
- XCTAssertEqualObjects(optUnmanaged.floatObj[0], @3.3f);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[0], @3.3);
- XCTAssertEqualObjects(optUnmanaged.stringObj[0], @"b");
- XCTAssertEqualObjects(optUnmanaged.dataObj[0], data(2));
- XCTAssertEqualObjects(optUnmanaged.dateObj[0], date(2));
- XCTAssertEqualObjects(managed.boolObj[0], @YES);
- XCTAssertEqualObjects(managed.intObj[0], @3);
- XCTAssertEqualObjects(managed.floatObj[0], @3.3f);
- XCTAssertEqualObjects(managed.doubleObj[0], @3.3);
- XCTAssertEqualObjects(managed.stringObj[0], @"b");
- XCTAssertEqualObjects(managed.dataObj[0], data(2));
- XCTAssertEqualObjects(managed.dateObj[0], date(2));
- XCTAssertEqualObjects(optManaged.boolObj[0], @YES);
- XCTAssertEqualObjects(optManaged.intObj[0], @3);
- XCTAssertEqualObjects(optManaged.floatObj[0], @3.3f);
- XCTAssertEqualObjects(optManaged.doubleObj[0], @3.3);
- XCTAssertEqualObjects(optManaged.stringObj[0], @"b");
- XCTAssertEqualObjects(optManaged.dataObj[0], data(2));
- XCTAssertEqualObjects(optManaged.dateObj[0], date(2));
- XCTAssertEqualObjects(optUnmanaged.boolObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.intObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.floatObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.stringObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.dataObj[1], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.dateObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.boolObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.intObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.floatObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.doubleObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.stringObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.dataObj[1], NSNull.null);
- XCTAssertEqualObjects(optManaged.dateObj[1], NSNull.null);
- }
- - (void)testRemoveLastObject {
- XCTAssertNoThrow([unmanaged.boolObj removeLastObject]);
- XCTAssertNoThrow([unmanaged.intObj removeLastObject]);
- XCTAssertNoThrow([unmanaged.floatObj removeLastObject]);
- XCTAssertNoThrow([unmanaged.doubleObj removeLastObject]);
- XCTAssertNoThrow([unmanaged.stringObj removeLastObject]);
- XCTAssertNoThrow([unmanaged.dataObj removeLastObject]);
- XCTAssertNoThrow([unmanaged.dateObj removeLastObject]);
- XCTAssertNoThrow([optUnmanaged.boolObj removeLastObject]);
- XCTAssertNoThrow([optUnmanaged.intObj removeLastObject]);
- XCTAssertNoThrow([optUnmanaged.floatObj removeLastObject]);
- XCTAssertNoThrow([optUnmanaged.doubleObj removeLastObject]);
- XCTAssertNoThrow([optUnmanaged.stringObj removeLastObject]);
- XCTAssertNoThrow([optUnmanaged.dataObj removeLastObject]);
- XCTAssertNoThrow([optUnmanaged.dateObj removeLastObject]);
- XCTAssertNoThrow([managed.boolObj removeLastObject]);
- XCTAssertNoThrow([managed.intObj removeLastObject]);
- XCTAssertNoThrow([managed.floatObj removeLastObject]);
- XCTAssertNoThrow([managed.doubleObj removeLastObject]);
- XCTAssertNoThrow([managed.stringObj removeLastObject]);
- XCTAssertNoThrow([managed.dataObj removeLastObject]);
- XCTAssertNoThrow([managed.dateObj removeLastObject]);
- XCTAssertNoThrow([optManaged.boolObj removeLastObject]);
- XCTAssertNoThrow([optManaged.intObj removeLastObject]);
- XCTAssertNoThrow([optManaged.floatObj removeLastObject]);
- XCTAssertNoThrow([optManaged.doubleObj removeLastObject]);
- XCTAssertNoThrow([optManaged.stringObj removeLastObject]);
- XCTAssertNoThrow([optManaged.dataObj removeLastObject]);
- XCTAssertNoThrow([optManaged.dateObj removeLastObject]);
- [unmanaged.boolObj addObjects:@[@NO, @YES]];
- [unmanaged.intObj addObjects:@[@2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3]];
- [unmanaged.stringObj addObjects:@[@"a", @"b"]];
- [unmanaged.dataObj addObjects:@[data(1), data(2)]];
- [unmanaged.dateObj addObjects:@[date(1), date(2)]];
- [optUnmanaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optUnmanaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optUnmanaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optUnmanaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optUnmanaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- [managed.boolObj addObjects:@[@NO, @YES]];
- [managed.intObj addObjects:@[@2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3]];
- [managed.stringObj addObjects:@[@"a", @"b"]];
- [managed.dataObj addObjects:@[data(1), data(2)]];
- [managed.dateObj addObjects:@[date(1), date(2)]];
- [optManaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optManaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optManaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optManaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optManaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- XCTAssertEqual(unmanaged.boolObj.count, 2U);
- XCTAssertEqual(unmanaged.intObj.count, 2U);
- XCTAssertEqual(unmanaged.floatObj.count, 2U);
- XCTAssertEqual(unmanaged.doubleObj.count, 2U);
- XCTAssertEqual(unmanaged.stringObj.count, 2U);
- XCTAssertEqual(unmanaged.dataObj.count, 2U);
- XCTAssertEqual(unmanaged.dateObj.count, 2U);
- XCTAssertEqual(managed.boolObj.count, 2U);
- XCTAssertEqual(managed.intObj.count, 2U);
- XCTAssertEqual(managed.floatObj.count, 2U);
- XCTAssertEqual(managed.doubleObj.count, 2U);
- XCTAssertEqual(managed.stringObj.count, 2U);
- XCTAssertEqual(managed.dataObj.count, 2U);
- XCTAssertEqual(managed.dateObj.count, 2U);
- XCTAssertEqual(optUnmanaged.boolObj.count, 3U);
- XCTAssertEqual(optUnmanaged.intObj.count, 3U);
- XCTAssertEqual(optUnmanaged.floatObj.count, 3U);
- XCTAssertEqual(optUnmanaged.doubleObj.count, 3U);
- XCTAssertEqual(optUnmanaged.stringObj.count, 3U);
- XCTAssertEqual(optUnmanaged.dataObj.count, 3U);
- XCTAssertEqual(optUnmanaged.dateObj.count, 3U);
- XCTAssertEqual(optManaged.boolObj.count, 3U);
- XCTAssertEqual(optManaged.intObj.count, 3U);
- XCTAssertEqual(optManaged.floatObj.count, 3U);
- XCTAssertEqual(optManaged.doubleObj.count, 3U);
- XCTAssertEqual(optManaged.stringObj.count, 3U);
- XCTAssertEqual(optManaged.dataObj.count, 3U);
- XCTAssertEqual(optManaged.dateObj.count, 3U);
- [unmanaged.boolObj removeLastObject];
- [unmanaged.intObj removeLastObject];
- [unmanaged.floatObj removeLastObject];
- [unmanaged.doubleObj removeLastObject];
- [unmanaged.stringObj removeLastObject];
- [unmanaged.dataObj removeLastObject];
- [unmanaged.dateObj removeLastObject];
- [optUnmanaged.boolObj removeLastObject];
- [optUnmanaged.intObj removeLastObject];
- [optUnmanaged.floatObj removeLastObject];
- [optUnmanaged.doubleObj removeLastObject];
- [optUnmanaged.stringObj removeLastObject];
- [optUnmanaged.dataObj removeLastObject];
- [optUnmanaged.dateObj removeLastObject];
- [managed.boolObj removeLastObject];
- [managed.intObj removeLastObject];
- [managed.floatObj removeLastObject];
- [managed.doubleObj removeLastObject];
- [managed.stringObj removeLastObject];
- [managed.dataObj removeLastObject];
- [managed.dateObj removeLastObject];
- [optManaged.boolObj removeLastObject];
- [optManaged.intObj removeLastObject];
- [optManaged.floatObj removeLastObject];
- [optManaged.doubleObj removeLastObject];
- [optManaged.stringObj removeLastObject];
- [optManaged.dataObj removeLastObject];
- [optManaged.dateObj removeLastObject];
- XCTAssertEqual(unmanaged.boolObj.count, 1U);
- XCTAssertEqual(unmanaged.intObj.count, 1U);
- XCTAssertEqual(unmanaged.floatObj.count, 1U);
- XCTAssertEqual(unmanaged.doubleObj.count, 1U);
- XCTAssertEqual(unmanaged.stringObj.count, 1U);
- XCTAssertEqual(unmanaged.dataObj.count, 1U);
- XCTAssertEqual(unmanaged.dateObj.count, 1U);
- XCTAssertEqual(managed.boolObj.count, 1U);
- XCTAssertEqual(managed.intObj.count, 1U);
- XCTAssertEqual(managed.floatObj.count, 1U);
- XCTAssertEqual(managed.doubleObj.count, 1U);
- XCTAssertEqual(managed.stringObj.count, 1U);
- XCTAssertEqual(managed.dataObj.count, 1U);
- XCTAssertEqual(managed.dateObj.count, 1U);
- XCTAssertEqual(optUnmanaged.boolObj.count, 2U);
- XCTAssertEqual(optUnmanaged.intObj.count, 2U);
- XCTAssertEqual(optUnmanaged.floatObj.count, 2U);
- XCTAssertEqual(optUnmanaged.doubleObj.count, 2U);
- XCTAssertEqual(optUnmanaged.stringObj.count, 2U);
- XCTAssertEqual(optUnmanaged.dataObj.count, 2U);
- XCTAssertEqual(optUnmanaged.dateObj.count, 2U);
- XCTAssertEqual(optManaged.boolObj.count, 2U);
- XCTAssertEqual(optManaged.intObj.count, 2U);
- XCTAssertEqual(optManaged.floatObj.count, 2U);
- XCTAssertEqual(optManaged.doubleObj.count, 2U);
- XCTAssertEqual(optManaged.stringObj.count, 2U);
- XCTAssertEqual(optManaged.dataObj.count, 2U);
- XCTAssertEqual(optManaged.dateObj.count, 2U);
- XCTAssertEqualObjects(unmanaged.boolObj[0], @NO);
- XCTAssertEqualObjects(unmanaged.intObj[0], @2);
- XCTAssertEqualObjects(unmanaged.floatObj[0], @2.2f);
- XCTAssertEqualObjects(unmanaged.doubleObj[0], @2.2);
- XCTAssertEqualObjects(unmanaged.stringObj[0], @"a");
- XCTAssertEqualObjects(unmanaged.dataObj[0], data(1));
- XCTAssertEqualObjects(unmanaged.dateObj[0], date(1));
- XCTAssertEqualObjects(optUnmanaged.boolObj[0], @NO);
- XCTAssertEqualObjects(optUnmanaged.intObj[0], @2);
- XCTAssertEqualObjects(optUnmanaged.floatObj[0], @2.2f);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[0], @2.2);
- XCTAssertEqualObjects(optUnmanaged.stringObj[0], @"a");
- XCTAssertEqualObjects(optUnmanaged.dataObj[0], data(1));
- XCTAssertEqualObjects(optUnmanaged.dateObj[0], date(1));
- XCTAssertEqualObjects(managed.boolObj[0], @NO);
- XCTAssertEqualObjects(managed.intObj[0], @2);
- XCTAssertEqualObjects(managed.floatObj[0], @2.2f);
- XCTAssertEqualObjects(managed.doubleObj[0], @2.2);
- XCTAssertEqualObjects(managed.stringObj[0], @"a");
- XCTAssertEqualObjects(managed.dataObj[0], data(1));
- XCTAssertEqualObjects(managed.dateObj[0], date(1));
- XCTAssertEqualObjects(optManaged.boolObj[0], @NO);
- XCTAssertEqualObjects(optManaged.intObj[0], @2);
- XCTAssertEqualObjects(optManaged.floatObj[0], @2.2f);
- XCTAssertEqualObjects(optManaged.doubleObj[0], @2.2);
- XCTAssertEqualObjects(optManaged.stringObj[0], @"a");
- XCTAssertEqualObjects(optManaged.dataObj[0], data(1));
- XCTAssertEqualObjects(optManaged.dateObj[0], date(1));
- XCTAssertEqualObjects(optUnmanaged.boolObj[1], @YES);
- XCTAssertEqualObjects(optUnmanaged.intObj[1], @3);
- XCTAssertEqualObjects(optUnmanaged.floatObj[1], @3.3f);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[1], @3.3);
- XCTAssertEqualObjects(optUnmanaged.stringObj[1], @"b");
- XCTAssertEqualObjects(optUnmanaged.dataObj[1], data(2));
- XCTAssertEqualObjects(optUnmanaged.dateObj[1], date(2));
- XCTAssertEqualObjects(optManaged.boolObj[1], @YES);
- XCTAssertEqualObjects(optManaged.intObj[1], @3);
- XCTAssertEqualObjects(optManaged.floatObj[1], @3.3f);
- XCTAssertEqualObjects(optManaged.doubleObj[1], @3.3);
- XCTAssertEqualObjects(optManaged.stringObj[1], @"b");
- XCTAssertEqualObjects(optManaged.dataObj[1], data(2));
- XCTAssertEqualObjects(optManaged.dateObj[1], date(2));
- }
- - (void)testReplace {
- RLMAssertThrowsWithReason([unmanaged.boolObj replaceObjectAtIndex:0 withObject:@NO],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.intObj replaceObjectAtIndex:0 withObject:@2],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.floatObj replaceObjectAtIndex:0 withObject:@2.2f],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.doubleObj replaceObjectAtIndex:0 withObject:@2.2],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.stringObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.dataObj replaceObjectAtIndex:0 withObject:data(1)],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.dateObj replaceObjectAtIndex:0 withObject:date(1)],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj replaceObjectAtIndex:0 withObject:@NO],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.intObj replaceObjectAtIndex:0 withObject:@2],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj replaceObjectAtIndex:0 withObject:@2.2f],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj replaceObjectAtIndex:0 withObject:@2.2],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj replaceObjectAtIndex:0 withObject:data(1)],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj replaceObjectAtIndex:0 withObject:date(1)],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.boolObj replaceObjectAtIndex:0 withObject:@NO],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.intObj replaceObjectAtIndex:0 withObject:@2],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.floatObj replaceObjectAtIndex:0 withObject:@2.2f],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.doubleObj replaceObjectAtIndex:0 withObject:@2.2],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.stringObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.dataObj replaceObjectAtIndex:0 withObject:data(1)],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.dateObj replaceObjectAtIndex:0 withObject:date(1)],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.boolObj replaceObjectAtIndex:0 withObject:@NO],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.intObj replaceObjectAtIndex:0 withObject:@2],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.floatObj replaceObjectAtIndex:0 withObject:@2.2f],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.doubleObj replaceObjectAtIndex:0 withObject:@2.2],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.stringObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.dataObj replaceObjectAtIndex:0 withObject:data(1)],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.dateObj replaceObjectAtIndex:0 withObject:date(1)],
- @"Index 0 is out of bounds (must be less than 0).");
- [unmanaged.boolObj addObject:@NO];
- [unmanaged.boolObj replaceObjectAtIndex:0 withObject:@YES];
- XCTAssertEqualObjects(unmanaged.boolObj[0], @YES);
-
- [unmanaged.intObj addObject:@2];
- [unmanaged.intObj replaceObjectAtIndex:0 withObject:@3];
- XCTAssertEqualObjects(unmanaged.intObj[0], @3);
-
- [unmanaged.floatObj addObject:@2.2f];
- [unmanaged.floatObj replaceObjectAtIndex:0 withObject:@3.3f];
- XCTAssertEqualObjects(unmanaged.floatObj[0], @3.3f);
-
- [unmanaged.doubleObj addObject:@2.2];
- [unmanaged.doubleObj replaceObjectAtIndex:0 withObject:@3.3];
- XCTAssertEqualObjects(unmanaged.doubleObj[0], @3.3);
-
- [unmanaged.stringObj addObject:@"a"];
- [unmanaged.stringObj replaceObjectAtIndex:0 withObject:@"b"];
- XCTAssertEqualObjects(unmanaged.stringObj[0], @"b");
-
- [unmanaged.dataObj addObject:data(1)];
- [unmanaged.dataObj replaceObjectAtIndex:0 withObject:data(2)];
- XCTAssertEqualObjects(unmanaged.dataObj[0], data(2));
-
- [unmanaged.dateObj addObject:date(1)];
- [unmanaged.dateObj replaceObjectAtIndex:0 withObject:date(2)];
- XCTAssertEqualObjects(unmanaged.dateObj[0], date(2));
-
- [optUnmanaged.boolObj addObject:@NO];
- [optUnmanaged.boolObj replaceObjectAtIndex:0 withObject:@YES];
- XCTAssertEqualObjects(optUnmanaged.boolObj[0], @YES);
-
- [optUnmanaged.intObj addObject:@2];
- [optUnmanaged.intObj replaceObjectAtIndex:0 withObject:@3];
- XCTAssertEqualObjects(optUnmanaged.intObj[0], @3);
-
- [optUnmanaged.floatObj addObject:@2.2f];
- [optUnmanaged.floatObj replaceObjectAtIndex:0 withObject:@3.3f];
- XCTAssertEqualObjects(optUnmanaged.floatObj[0], @3.3f);
-
- [optUnmanaged.doubleObj addObject:@2.2];
- [optUnmanaged.doubleObj replaceObjectAtIndex:0 withObject:@3.3];
- XCTAssertEqualObjects(optUnmanaged.doubleObj[0], @3.3);
-
- [optUnmanaged.stringObj addObject:@"a"];
- [optUnmanaged.stringObj replaceObjectAtIndex:0 withObject:@"b"];
- XCTAssertEqualObjects(optUnmanaged.stringObj[0], @"b");
-
- [optUnmanaged.dataObj addObject:data(1)];
- [optUnmanaged.dataObj replaceObjectAtIndex:0 withObject:data(2)];
- XCTAssertEqualObjects(optUnmanaged.dataObj[0], data(2));
-
- [optUnmanaged.dateObj addObject:date(1)];
- [optUnmanaged.dateObj replaceObjectAtIndex:0 withObject:date(2)];
- XCTAssertEqualObjects(optUnmanaged.dateObj[0], date(2));
-
- [managed.boolObj addObject:@NO];
- [managed.boolObj replaceObjectAtIndex:0 withObject:@YES];
- XCTAssertEqualObjects(managed.boolObj[0], @YES);
-
- [managed.intObj addObject:@2];
- [managed.intObj replaceObjectAtIndex:0 withObject:@3];
- XCTAssertEqualObjects(managed.intObj[0], @3);
-
- [managed.floatObj addObject:@2.2f];
- [managed.floatObj replaceObjectAtIndex:0 withObject:@3.3f];
- XCTAssertEqualObjects(managed.floatObj[0], @3.3f);
-
- [managed.doubleObj addObject:@2.2];
- [managed.doubleObj replaceObjectAtIndex:0 withObject:@3.3];
- XCTAssertEqualObjects(managed.doubleObj[0], @3.3);
-
- [managed.stringObj addObject:@"a"];
- [managed.stringObj replaceObjectAtIndex:0 withObject:@"b"];
- XCTAssertEqualObjects(managed.stringObj[0], @"b");
-
- [managed.dataObj addObject:data(1)];
- [managed.dataObj replaceObjectAtIndex:0 withObject:data(2)];
- XCTAssertEqualObjects(managed.dataObj[0], data(2));
-
- [managed.dateObj addObject:date(1)];
- [managed.dateObj replaceObjectAtIndex:0 withObject:date(2)];
- XCTAssertEqualObjects(managed.dateObj[0], date(2));
-
- [optManaged.boolObj addObject:@NO];
- [optManaged.boolObj replaceObjectAtIndex:0 withObject:@YES];
- XCTAssertEqualObjects(optManaged.boolObj[0], @YES);
-
- [optManaged.intObj addObject:@2];
- [optManaged.intObj replaceObjectAtIndex:0 withObject:@3];
- XCTAssertEqualObjects(optManaged.intObj[0], @3);
-
- [optManaged.floatObj addObject:@2.2f];
- [optManaged.floatObj replaceObjectAtIndex:0 withObject:@3.3f];
- XCTAssertEqualObjects(optManaged.floatObj[0], @3.3f);
-
- [optManaged.doubleObj addObject:@2.2];
- [optManaged.doubleObj replaceObjectAtIndex:0 withObject:@3.3];
- XCTAssertEqualObjects(optManaged.doubleObj[0], @3.3);
-
- [optManaged.stringObj addObject:@"a"];
- [optManaged.stringObj replaceObjectAtIndex:0 withObject:@"b"];
- XCTAssertEqualObjects(optManaged.stringObj[0], @"b");
-
- [optManaged.dataObj addObject:data(1)];
- [optManaged.dataObj replaceObjectAtIndex:0 withObject:data(2)];
- XCTAssertEqualObjects(optManaged.dataObj[0], data(2));
-
- [optManaged.dateObj addObject:date(1)];
- [optManaged.dateObj replaceObjectAtIndex:0 withObject:date(2)];
- XCTAssertEqualObjects(optManaged.dateObj[0], date(2));
-
- [optUnmanaged.boolObj replaceObjectAtIndex:0 withObject:NSNull.null];
- XCTAssertEqualObjects(optUnmanaged.boolObj[0], NSNull.null);
- [optUnmanaged.intObj replaceObjectAtIndex:0 withObject:NSNull.null];
- XCTAssertEqualObjects(optUnmanaged.intObj[0], NSNull.null);
- [optUnmanaged.floatObj replaceObjectAtIndex:0 withObject:NSNull.null];
- XCTAssertEqualObjects(optUnmanaged.floatObj[0], NSNull.null);
- [optUnmanaged.doubleObj replaceObjectAtIndex:0 withObject:NSNull.null];
- XCTAssertEqualObjects(optUnmanaged.doubleObj[0], NSNull.null);
- [optUnmanaged.stringObj replaceObjectAtIndex:0 withObject:NSNull.null];
- XCTAssertEqualObjects(optUnmanaged.stringObj[0], NSNull.null);
- [optUnmanaged.dataObj replaceObjectAtIndex:0 withObject:NSNull.null];
- XCTAssertEqualObjects(optUnmanaged.dataObj[0], NSNull.null);
- [optUnmanaged.dateObj replaceObjectAtIndex:0 withObject:NSNull.null];
- XCTAssertEqualObjects(optUnmanaged.dateObj[0], NSNull.null);
- [optManaged.boolObj replaceObjectAtIndex:0 withObject:NSNull.null];
- XCTAssertEqualObjects(optManaged.boolObj[0], NSNull.null);
- [optManaged.intObj replaceObjectAtIndex:0 withObject:NSNull.null];
- XCTAssertEqualObjects(optManaged.intObj[0], NSNull.null);
- [optManaged.floatObj replaceObjectAtIndex:0 withObject:NSNull.null];
- XCTAssertEqualObjects(optManaged.floatObj[0], NSNull.null);
- [optManaged.doubleObj replaceObjectAtIndex:0 withObject:NSNull.null];
- XCTAssertEqualObjects(optManaged.doubleObj[0], NSNull.null);
- [optManaged.stringObj replaceObjectAtIndex:0 withObject:NSNull.null];
- XCTAssertEqualObjects(optManaged.stringObj[0], NSNull.null);
- [optManaged.dataObj replaceObjectAtIndex:0 withObject:NSNull.null];
- XCTAssertEqualObjects(optManaged.dataObj[0], NSNull.null);
- [optManaged.dateObj replaceObjectAtIndex:0 withObject:NSNull.null];
- XCTAssertEqualObjects(optManaged.dateObj[0], NSNull.null);
- RLMAssertThrowsWithReason([unmanaged.boolObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool'");
- RLMAssertThrowsWithReason([unmanaged.intObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int'");
- RLMAssertThrowsWithReason([unmanaged.floatObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float'");
- RLMAssertThrowsWithReason([unmanaged.doubleObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double'");
- RLMAssertThrowsWithReason([unmanaged.stringObj replaceObjectAtIndex:0 withObject:@2],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string'");
- RLMAssertThrowsWithReason([unmanaged.dataObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data'");
- RLMAssertThrowsWithReason([unmanaged.dateObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date'");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool?'");
- RLMAssertThrowsWithReason([optUnmanaged.intObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int?'");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float?'");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double?'");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj replaceObjectAtIndex:0 withObject:@2],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string?'");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data?'");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date?'");
- RLMAssertThrowsWithReason([managed.boolObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool'");
- RLMAssertThrowsWithReason([managed.intObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int'");
- RLMAssertThrowsWithReason([managed.floatObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float'");
- RLMAssertThrowsWithReason([managed.doubleObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double'");
- RLMAssertThrowsWithReason([managed.stringObj replaceObjectAtIndex:0 withObject:@2],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string'");
- RLMAssertThrowsWithReason([managed.dataObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data'");
- RLMAssertThrowsWithReason([managed.dateObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date'");
- RLMAssertThrowsWithReason([optManaged.boolObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool?'");
- RLMAssertThrowsWithReason([optManaged.intObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int?'");
- RLMAssertThrowsWithReason([optManaged.floatObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float?'");
- RLMAssertThrowsWithReason([optManaged.doubleObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double?'");
- RLMAssertThrowsWithReason([optManaged.stringObj replaceObjectAtIndex:0 withObject:@2],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string?'");
- RLMAssertThrowsWithReason([optManaged.dataObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data?'");
- RLMAssertThrowsWithReason([optManaged.dateObj replaceObjectAtIndex:0 withObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date?'");
- RLMAssertThrowsWithReason([unmanaged.boolObj replaceObjectAtIndex:0 withObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'bool'");
- RLMAssertThrowsWithReason([unmanaged.intObj replaceObjectAtIndex:0 withObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'int'");
- RLMAssertThrowsWithReason([unmanaged.floatObj replaceObjectAtIndex:0 withObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'float'");
- RLMAssertThrowsWithReason([unmanaged.doubleObj replaceObjectAtIndex:0 withObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'double'");
- RLMAssertThrowsWithReason([unmanaged.stringObj replaceObjectAtIndex:0 withObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'string'");
- RLMAssertThrowsWithReason([unmanaged.dataObj replaceObjectAtIndex:0 withObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'data'");
- RLMAssertThrowsWithReason([unmanaged.dateObj replaceObjectAtIndex:0 withObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'date'");
- RLMAssertThrowsWithReason([managed.boolObj replaceObjectAtIndex:0 withObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'bool'");
- RLMAssertThrowsWithReason([managed.intObj replaceObjectAtIndex:0 withObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'int'");
- RLMAssertThrowsWithReason([managed.floatObj replaceObjectAtIndex:0 withObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'float'");
- RLMAssertThrowsWithReason([managed.doubleObj replaceObjectAtIndex:0 withObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'double'");
- RLMAssertThrowsWithReason([managed.stringObj replaceObjectAtIndex:0 withObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'string'");
- RLMAssertThrowsWithReason([managed.dataObj replaceObjectAtIndex:0 withObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'data'");
- RLMAssertThrowsWithReason([managed.dateObj replaceObjectAtIndex:0 withObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'date'");
- }
- - (void)testMove {
- RLMAssertThrowsWithReason([unmanaged.boolObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.intObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.floatObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.doubleObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.stringObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.dataObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.dateObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.intObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.boolObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.intObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.floatObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.doubleObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.stringObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.dataObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.dateObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.boolObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.intObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.floatObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.doubleObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.stringObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.dataObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.dateObj moveObjectAtIndex:0 toIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.boolObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.intObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.floatObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.doubleObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.stringObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.dataObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.dateObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.intObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.boolObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.intObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.floatObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.doubleObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.stringObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.dataObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.dateObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.boolObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.intObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.floatObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.doubleObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.stringObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.dataObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.dateObj moveObjectAtIndex:1 toIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- [unmanaged.boolObj addObjects:@[@NO, @YES, @NO, @YES]];
- [unmanaged.intObj addObjects:@[@2, @3, @2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f, @2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3, @2.2, @3.3]];
- [unmanaged.stringObj addObjects:@[@"a", @"b", @"a", @"b"]];
- [unmanaged.dataObj addObjects:@[data(1), data(2), data(1), data(2)]];
- [unmanaged.dateObj addObjects:@[date(1), date(2), date(1), date(2)]];
- [optUnmanaged.boolObj addObjects:@[@NO, @YES, @NO, @YES]];
- [optUnmanaged.intObj addObjects:@[@2, @3, @2, @3]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, @2.2f, @3.3f]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, @2.2, @3.3]];
- [optUnmanaged.stringObj addObjects:@[@"a", @"b", @"a", @"b"]];
- [optUnmanaged.dataObj addObjects:@[data(1), data(2), data(1), data(2)]];
- [optUnmanaged.dateObj addObjects:@[date(1), date(2), date(1), date(2)]];
- [managed.boolObj addObjects:@[@NO, @YES, @NO, @YES]];
- [managed.intObj addObjects:@[@2, @3, @2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f, @2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3, @2.2, @3.3]];
- [managed.stringObj addObjects:@[@"a", @"b", @"a", @"b"]];
- [managed.dataObj addObjects:@[data(1), data(2), data(1), data(2)]];
- [managed.dateObj addObjects:@[date(1), date(2), date(1), date(2)]];
- [optManaged.boolObj addObjects:@[@NO, @YES, @NO, @YES]];
- [optManaged.intObj addObjects:@[@2, @3, @2, @3]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, @2.2f, @3.3f]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, @2.2, @3.3]];
- [optManaged.stringObj addObjects:@[@"a", @"b", @"a", @"b"]];
- [optManaged.dataObj addObjects:@[data(1), data(2), data(1), data(2)]];
- [optManaged.dateObj addObjects:@[date(1), date(2), date(1), date(2)]];
- [unmanaged.boolObj moveObjectAtIndex:2 toIndex:0];
- [unmanaged.intObj moveObjectAtIndex:2 toIndex:0];
- [unmanaged.floatObj moveObjectAtIndex:2 toIndex:0];
- [unmanaged.doubleObj moveObjectAtIndex:2 toIndex:0];
- [unmanaged.stringObj moveObjectAtIndex:2 toIndex:0];
- [unmanaged.dataObj moveObjectAtIndex:2 toIndex:0];
- [unmanaged.dateObj moveObjectAtIndex:2 toIndex:0];
- [optUnmanaged.boolObj moveObjectAtIndex:2 toIndex:0];
- [optUnmanaged.intObj moveObjectAtIndex:2 toIndex:0];
- [optUnmanaged.floatObj moveObjectAtIndex:2 toIndex:0];
- [optUnmanaged.doubleObj moveObjectAtIndex:2 toIndex:0];
- [optUnmanaged.stringObj moveObjectAtIndex:2 toIndex:0];
- [optUnmanaged.dataObj moveObjectAtIndex:2 toIndex:0];
- [optUnmanaged.dateObj moveObjectAtIndex:2 toIndex:0];
- [managed.boolObj moveObjectAtIndex:2 toIndex:0];
- [managed.intObj moveObjectAtIndex:2 toIndex:0];
- [managed.floatObj moveObjectAtIndex:2 toIndex:0];
- [managed.doubleObj moveObjectAtIndex:2 toIndex:0];
- [managed.stringObj moveObjectAtIndex:2 toIndex:0];
- [managed.dataObj moveObjectAtIndex:2 toIndex:0];
- [managed.dateObj moveObjectAtIndex:2 toIndex:0];
- [optManaged.boolObj moveObjectAtIndex:2 toIndex:0];
- [optManaged.intObj moveObjectAtIndex:2 toIndex:0];
- [optManaged.floatObj moveObjectAtIndex:2 toIndex:0];
- [optManaged.doubleObj moveObjectAtIndex:2 toIndex:0];
- [optManaged.stringObj moveObjectAtIndex:2 toIndex:0];
- [optManaged.dataObj moveObjectAtIndex:2 toIndex:0];
- [optManaged.dateObj moveObjectAtIndex:2 toIndex:0];
- XCTAssertEqualObjects([unmanaged.boolObj valueForKey:@"self"],
- (@[@NO, @NO, @YES, @YES]));
- XCTAssertEqualObjects([unmanaged.intObj valueForKey:@"self"],
- (@[@2, @2, @3, @3]));
- XCTAssertEqualObjects([unmanaged.floatObj valueForKey:@"self"],
- (@[@2.2f, @2.2f, @3.3f, @3.3f]));
- XCTAssertEqualObjects([unmanaged.doubleObj valueForKey:@"self"],
- (@[@2.2, @2.2, @3.3, @3.3]));
- XCTAssertEqualObjects([unmanaged.stringObj valueForKey:@"self"],
- (@[@"a", @"a", @"b", @"b"]));
- XCTAssertEqualObjects([unmanaged.dataObj valueForKey:@"self"],
- (@[data(1), data(1), data(2), data(2)]));
- XCTAssertEqualObjects([unmanaged.dateObj valueForKey:@"self"],
- (@[date(1), date(1), date(2), date(2)]));
- XCTAssertEqualObjects([optUnmanaged.boolObj valueForKey:@"self"],
- (@[@NO, @NO, @YES, @YES]));
- XCTAssertEqualObjects([optUnmanaged.intObj valueForKey:@"self"],
- (@[@2, @2, @3, @3]));
- XCTAssertEqualObjects([optUnmanaged.floatObj valueForKey:@"self"],
- (@[@2.2f, @2.2f, @3.3f, @3.3f]));
- XCTAssertEqualObjects([optUnmanaged.doubleObj valueForKey:@"self"],
- (@[@2.2, @2.2, @3.3, @3.3]));
- XCTAssertEqualObjects([optUnmanaged.stringObj valueForKey:@"self"],
- (@[@"a", @"a", @"b", @"b"]));
- XCTAssertEqualObjects([optUnmanaged.dataObj valueForKey:@"self"],
- (@[data(1), data(1), data(2), data(2)]));
- XCTAssertEqualObjects([optUnmanaged.dateObj valueForKey:@"self"],
- (@[date(1), date(1), date(2), date(2)]));
- XCTAssertEqualObjects([managed.boolObj valueForKey:@"self"],
- (@[@NO, @NO, @YES, @YES]));
- XCTAssertEqualObjects([managed.intObj valueForKey:@"self"],
- (@[@2, @2, @3, @3]));
- XCTAssertEqualObjects([managed.floatObj valueForKey:@"self"],
- (@[@2.2f, @2.2f, @3.3f, @3.3f]));
- XCTAssertEqualObjects([managed.doubleObj valueForKey:@"self"],
- (@[@2.2, @2.2, @3.3, @3.3]));
- XCTAssertEqualObjects([managed.stringObj valueForKey:@"self"],
- (@[@"a", @"a", @"b", @"b"]));
- XCTAssertEqualObjects([managed.dataObj valueForKey:@"self"],
- (@[data(1), data(1), data(2), data(2)]));
- XCTAssertEqualObjects([managed.dateObj valueForKey:@"self"],
- (@[date(1), date(1), date(2), date(2)]));
- XCTAssertEqualObjects([optManaged.boolObj valueForKey:@"self"],
- (@[@NO, @NO, @YES, @YES]));
- XCTAssertEqualObjects([optManaged.intObj valueForKey:@"self"],
- (@[@2, @2, @3, @3]));
- XCTAssertEqualObjects([optManaged.floatObj valueForKey:@"self"],
- (@[@2.2f, @2.2f, @3.3f, @3.3f]));
- XCTAssertEqualObjects([optManaged.doubleObj valueForKey:@"self"],
- (@[@2.2, @2.2, @3.3, @3.3]));
- XCTAssertEqualObjects([optManaged.stringObj valueForKey:@"self"],
- (@[@"a", @"a", @"b", @"b"]));
- XCTAssertEqualObjects([optManaged.dataObj valueForKey:@"self"],
- (@[data(1), data(1), data(2), data(2)]));
- XCTAssertEqualObjects([optManaged.dateObj valueForKey:@"self"],
- (@[date(1), date(1), date(2), date(2)]));
- }
- - (void)testExchange {
- RLMAssertThrowsWithReason([unmanaged.boolObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.intObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.floatObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.doubleObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.stringObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.dataObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.dateObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.intObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.boolObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.intObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.floatObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.doubleObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.stringObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.dataObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.dateObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.boolObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.intObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.floatObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.doubleObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.stringObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.dataObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.dateObj exchangeObjectAtIndex:0 withObjectAtIndex:1],
- @"Index 0 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.boolObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.intObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.floatObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.doubleObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.stringObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.dataObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([unmanaged.dateObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.intObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.boolObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.intObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.floatObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.doubleObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.stringObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.dataObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([managed.dateObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.boolObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.intObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.floatObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.doubleObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.stringObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.dataObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- RLMAssertThrowsWithReason([optManaged.dateObj exchangeObjectAtIndex:1 withObjectAtIndex:0],
- @"Index 1 is out of bounds (must be less than 0).");
- [unmanaged.boolObj addObjects:@[@NO, @YES, @NO, @YES]];
- [unmanaged.intObj addObjects:@[@2, @3, @2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f, @2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3, @2.2, @3.3]];
- [unmanaged.stringObj addObjects:@[@"a", @"b", @"a", @"b"]];
- [unmanaged.dataObj addObjects:@[data(1), data(2), data(1), data(2)]];
- [unmanaged.dateObj addObjects:@[date(1), date(2), date(1), date(2)]];
- [optUnmanaged.boolObj addObjects:@[@NO, @YES, @NO, @YES]];
- [optUnmanaged.intObj addObjects:@[@2, @3, @2, @3]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, @2.2f, @3.3f]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, @2.2, @3.3]];
- [optUnmanaged.stringObj addObjects:@[@"a", @"b", @"a", @"b"]];
- [optUnmanaged.dataObj addObjects:@[data(1), data(2), data(1), data(2)]];
- [optUnmanaged.dateObj addObjects:@[date(1), date(2), date(1), date(2)]];
- [managed.boolObj addObjects:@[@NO, @YES, @NO, @YES]];
- [managed.intObj addObjects:@[@2, @3, @2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f, @2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3, @2.2, @3.3]];
- [managed.stringObj addObjects:@[@"a", @"b", @"a", @"b"]];
- [managed.dataObj addObjects:@[data(1), data(2), data(1), data(2)]];
- [managed.dateObj addObjects:@[date(1), date(2), date(1), date(2)]];
- [optManaged.boolObj addObjects:@[@NO, @YES, @NO, @YES]];
- [optManaged.intObj addObjects:@[@2, @3, @2, @3]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, @2.2f, @3.3f]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, @2.2, @3.3]];
- [optManaged.stringObj addObjects:@[@"a", @"b", @"a", @"b"]];
- [optManaged.dataObj addObjects:@[data(1), data(2), data(1), data(2)]];
- [optManaged.dateObj addObjects:@[date(1), date(2), date(1), date(2)]];
- [unmanaged.boolObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [unmanaged.intObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [unmanaged.floatObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [unmanaged.doubleObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [unmanaged.stringObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [unmanaged.dataObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [unmanaged.dateObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [optUnmanaged.boolObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [optUnmanaged.intObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [optUnmanaged.floatObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [optUnmanaged.doubleObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [optUnmanaged.stringObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [optUnmanaged.dataObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [optUnmanaged.dateObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [managed.boolObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [managed.intObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [managed.floatObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [managed.doubleObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [managed.stringObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [managed.dataObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [managed.dateObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [optManaged.boolObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [optManaged.intObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [optManaged.floatObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [optManaged.doubleObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [optManaged.stringObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [optManaged.dataObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- [optManaged.dateObj exchangeObjectAtIndex:2 withObjectAtIndex:1];
- XCTAssertEqualObjects([unmanaged.boolObj valueForKey:@"self"],
- (@[@NO, @NO, @YES, @YES]));
- XCTAssertEqualObjects([unmanaged.intObj valueForKey:@"self"],
- (@[@2, @2, @3, @3]));
- XCTAssertEqualObjects([unmanaged.floatObj valueForKey:@"self"],
- (@[@2.2f, @2.2f, @3.3f, @3.3f]));
- XCTAssertEqualObjects([unmanaged.doubleObj valueForKey:@"self"],
- (@[@2.2, @2.2, @3.3, @3.3]));
- XCTAssertEqualObjects([unmanaged.stringObj valueForKey:@"self"],
- (@[@"a", @"a", @"b", @"b"]));
- XCTAssertEqualObjects([unmanaged.dataObj valueForKey:@"self"],
- (@[data(1), data(1), data(2), data(2)]));
- XCTAssertEqualObjects([unmanaged.dateObj valueForKey:@"self"],
- (@[date(1), date(1), date(2), date(2)]));
- XCTAssertEqualObjects([optUnmanaged.boolObj valueForKey:@"self"],
- (@[@NO, @NO, @YES, @YES]));
- XCTAssertEqualObjects([optUnmanaged.intObj valueForKey:@"self"],
- (@[@2, @2, @3, @3]));
- XCTAssertEqualObjects([optUnmanaged.floatObj valueForKey:@"self"],
- (@[@2.2f, @2.2f, @3.3f, @3.3f]));
- XCTAssertEqualObjects([optUnmanaged.doubleObj valueForKey:@"self"],
- (@[@2.2, @2.2, @3.3, @3.3]));
- XCTAssertEqualObjects([optUnmanaged.stringObj valueForKey:@"self"],
- (@[@"a", @"a", @"b", @"b"]));
- XCTAssertEqualObjects([optUnmanaged.dataObj valueForKey:@"self"],
- (@[data(1), data(1), data(2), data(2)]));
- XCTAssertEqualObjects([optUnmanaged.dateObj valueForKey:@"self"],
- (@[date(1), date(1), date(2), date(2)]));
- XCTAssertEqualObjects([managed.boolObj valueForKey:@"self"],
- (@[@NO, @NO, @YES, @YES]));
- XCTAssertEqualObjects([managed.intObj valueForKey:@"self"],
- (@[@2, @2, @3, @3]));
- XCTAssertEqualObjects([managed.floatObj valueForKey:@"self"],
- (@[@2.2f, @2.2f, @3.3f, @3.3f]));
- XCTAssertEqualObjects([managed.doubleObj valueForKey:@"self"],
- (@[@2.2, @2.2, @3.3, @3.3]));
- XCTAssertEqualObjects([managed.stringObj valueForKey:@"self"],
- (@[@"a", @"a", @"b", @"b"]));
- XCTAssertEqualObjects([managed.dataObj valueForKey:@"self"],
- (@[data(1), data(1), data(2), data(2)]));
- XCTAssertEqualObjects([managed.dateObj valueForKey:@"self"],
- (@[date(1), date(1), date(2), date(2)]));
- XCTAssertEqualObjects([optManaged.boolObj valueForKey:@"self"],
- (@[@NO, @NO, @YES, @YES]));
- XCTAssertEqualObjects([optManaged.intObj valueForKey:@"self"],
- (@[@2, @2, @3, @3]));
- XCTAssertEqualObjects([optManaged.floatObj valueForKey:@"self"],
- (@[@2.2f, @2.2f, @3.3f, @3.3f]));
- XCTAssertEqualObjects([optManaged.doubleObj valueForKey:@"self"],
- (@[@2.2, @2.2, @3.3, @3.3]));
- XCTAssertEqualObjects([optManaged.stringObj valueForKey:@"self"],
- (@[@"a", @"a", @"b", @"b"]));
- XCTAssertEqualObjects([optManaged.dataObj valueForKey:@"self"],
- (@[data(1), data(1), data(2), data(2)]));
- XCTAssertEqualObjects([optManaged.dateObj valueForKey:@"self"],
- (@[date(1), date(1), date(2), date(2)]));
- }
- - (void)testIndexOfObject {
- XCTAssertEqual(NSNotFound, [unmanaged.boolObj indexOfObject:@NO]);
- XCTAssertEqual(NSNotFound, [unmanaged.intObj indexOfObject:@2]);
- XCTAssertEqual(NSNotFound, [unmanaged.floatObj indexOfObject:@2.2f]);
- XCTAssertEqual(NSNotFound, [unmanaged.doubleObj indexOfObject:@2.2]);
- XCTAssertEqual(NSNotFound, [unmanaged.stringObj indexOfObject:@"a"]);
- XCTAssertEqual(NSNotFound, [unmanaged.dataObj indexOfObject:data(1)]);
- XCTAssertEqual(NSNotFound, [unmanaged.dateObj indexOfObject:date(1)]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.boolObj indexOfObject:@NO]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.intObj indexOfObject:@2]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.floatObj indexOfObject:@2.2f]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.doubleObj indexOfObject:@2.2]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.stringObj indexOfObject:@"a"]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.dataObj indexOfObject:data(1)]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.dateObj indexOfObject:date(1)]);
- XCTAssertEqual(NSNotFound, [managed.boolObj indexOfObject:@NO]);
- XCTAssertEqual(NSNotFound, [managed.intObj indexOfObject:@2]);
- XCTAssertEqual(NSNotFound, [managed.floatObj indexOfObject:@2.2f]);
- XCTAssertEqual(NSNotFound, [managed.doubleObj indexOfObject:@2.2]);
- XCTAssertEqual(NSNotFound, [managed.stringObj indexOfObject:@"a"]);
- XCTAssertEqual(NSNotFound, [managed.dataObj indexOfObject:data(1)]);
- XCTAssertEqual(NSNotFound, [managed.dateObj indexOfObject:date(1)]);
- XCTAssertEqual(NSNotFound, [optManaged.boolObj indexOfObject:@NO]);
- XCTAssertEqual(NSNotFound, [optManaged.intObj indexOfObject:@2]);
- XCTAssertEqual(NSNotFound, [optManaged.floatObj indexOfObject:@2.2f]);
- XCTAssertEqual(NSNotFound, [optManaged.doubleObj indexOfObject:@2.2]);
- XCTAssertEqual(NSNotFound, [optManaged.stringObj indexOfObject:@"a"]);
- XCTAssertEqual(NSNotFound, [optManaged.dataObj indexOfObject:data(1)]);
- XCTAssertEqual(NSNotFound, [optManaged.dateObj indexOfObject:date(1)]);
- RLMAssertThrowsWithReason([unmanaged.boolObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool'");
- RLMAssertThrowsWithReason([unmanaged.intObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int'");
- RLMAssertThrowsWithReason([unmanaged.floatObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float'");
- RLMAssertThrowsWithReason([unmanaged.doubleObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double'");
- RLMAssertThrowsWithReason([unmanaged.stringObj indexOfObject:@2],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string'");
- RLMAssertThrowsWithReason([unmanaged.dataObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data'");
- RLMAssertThrowsWithReason([unmanaged.dateObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date'");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool?'");
- RLMAssertThrowsWithReason([optUnmanaged.intObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int?'");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float?'");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double?'");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj indexOfObject:@2],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string?'");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data?'");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date?'");
- RLMAssertThrowsWithReason([managed.boolObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool'");
- RLMAssertThrowsWithReason([managed.intObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int'");
- RLMAssertThrowsWithReason([managed.floatObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float'");
- RLMAssertThrowsWithReason([managed.doubleObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double'");
- RLMAssertThrowsWithReason([managed.stringObj indexOfObject:@2],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string'");
- RLMAssertThrowsWithReason([managed.dataObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data'");
- RLMAssertThrowsWithReason([managed.dateObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date'");
- RLMAssertThrowsWithReason([optManaged.boolObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool?'");
- RLMAssertThrowsWithReason([optManaged.intObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int?'");
- RLMAssertThrowsWithReason([optManaged.floatObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float?'");
- RLMAssertThrowsWithReason([optManaged.doubleObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double?'");
- RLMAssertThrowsWithReason([optManaged.stringObj indexOfObject:@2],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string?'");
- RLMAssertThrowsWithReason([optManaged.dataObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data?'");
- RLMAssertThrowsWithReason([optManaged.dateObj indexOfObject:@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date?'");
- RLMAssertThrowsWithReason([unmanaged.boolObj indexOfObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'bool'");
- RLMAssertThrowsWithReason([unmanaged.intObj indexOfObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'int'");
- RLMAssertThrowsWithReason([unmanaged.floatObj indexOfObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'float'");
- RLMAssertThrowsWithReason([unmanaged.doubleObj indexOfObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'double'");
- RLMAssertThrowsWithReason([unmanaged.stringObj indexOfObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'string'");
- RLMAssertThrowsWithReason([unmanaged.dataObj indexOfObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'data'");
- RLMAssertThrowsWithReason([unmanaged.dateObj indexOfObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'date'");
- RLMAssertThrowsWithReason([managed.boolObj indexOfObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'bool'");
- RLMAssertThrowsWithReason([managed.intObj indexOfObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'int'");
- RLMAssertThrowsWithReason([managed.floatObj indexOfObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'float'");
- RLMAssertThrowsWithReason([managed.doubleObj indexOfObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'double'");
- RLMAssertThrowsWithReason([managed.stringObj indexOfObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'string'");
- RLMAssertThrowsWithReason([managed.dataObj indexOfObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'data'");
- RLMAssertThrowsWithReason([managed.dateObj indexOfObject:NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'date'");
- XCTAssertEqual(NSNotFound, [optUnmanaged.boolObj indexOfObject:NSNull.null]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.intObj indexOfObject:NSNull.null]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.floatObj indexOfObject:NSNull.null]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.doubleObj indexOfObject:NSNull.null]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.stringObj indexOfObject:NSNull.null]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.dataObj indexOfObject:NSNull.null]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.dateObj indexOfObject:NSNull.null]);
- XCTAssertEqual(NSNotFound, [optManaged.boolObj indexOfObject:NSNull.null]);
- XCTAssertEqual(NSNotFound, [optManaged.intObj indexOfObject:NSNull.null]);
- XCTAssertEqual(NSNotFound, [optManaged.floatObj indexOfObject:NSNull.null]);
- XCTAssertEqual(NSNotFound, [optManaged.doubleObj indexOfObject:NSNull.null]);
- XCTAssertEqual(NSNotFound, [optManaged.stringObj indexOfObject:NSNull.null]);
- XCTAssertEqual(NSNotFound, [optManaged.dataObj indexOfObject:NSNull.null]);
- XCTAssertEqual(NSNotFound, [optManaged.dateObj indexOfObject:NSNull.null]);
- [unmanaged.boolObj addObjects:@[@NO, @YES]];
- [unmanaged.intObj addObjects:@[@2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3]];
- [unmanaged.stringObj addObjects:@[@"a", @"b"]];
- [unmanaged.dataObj addObjects:@[data(1), data(2)]];
- [unmanaged.dateObj addObjects:@[date(1), date(2)]];
- [optUnmanaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optUnmanaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optUnmanaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optUnmanaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optUnmanaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- [managed.boolObj addObjects:@[@NO, @YES]];
- [managed.intObj addObjects:@[@2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3]];
- [managed.stringObj addObjects:@[@"a", @"b"]];
- [managed.dataObj addObjects:@[data(1), data(2)]];
- [managed.dateObj addObjects:@[date(1), date(2)]];
- [optManaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optManaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optManaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optManaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optManaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- XCTAssertEqual(1U, [unmanaged.boolObj indexOfObject:@YES]);
- XCTAssertEqual(1U, [unmanaged.intObj indexOfObject:@3]);
- XCTAssertEqual(1U, [unmanaged.floatObj indexOfObject:@3.3f]);
- XCTAssertEqual(1U, [unmanaged.doubleObj indexOfObject:@3.3]);
- XCTAssertEqual(1U, [unmanaged.stringObj indexOfObject:@"b"]);
- XCTAssertEqual(1U, [unmanaged.dataObj indexOfObject:data(2)]);
- XCTAssertEqual(1U, [unmanaged.dateObj indexOfObject:date(2)]);
- XCTAssertEqual(1U, [optUnmanaged.boolObj indexOfObject:@YES]);
- XCTAssertEqual(1U, [optUnmanaged.intObj indexOfObject:@3]);
- XCTAssertEqual(1U, [optUnmanaged.floatObj indexOfObject:@3.3f]);
- XCTAssertEqual(1U, [optUnmanaged.doubleObj indexOfObject:@3.3]);
- XCTAssertEqual(1U, [optUnmanaged.stringObj indexOfObject:@"b"]);
- XCTAssertEqual(1U, [optUnmanaged.dataObj indexOfObject:data(2)]);
- XCTAssertEqual(1U, [optUnmanaged.dateObj indexOfObject:date(2)]);
- XCTAssertEqual(1U, [managed.boolObj indexOfObject:@YES]);
- XCTAssertEqual(1U, [managed.intObj indexOfObject:@3]);
- XCTAssertEqual(1U, [managed.floatObj indexOfObject:@3.3f]);
- XCTAssertEqual(1U, [managed.doubleObj indexOfObject:@3.3]);
- XCTAssertEqual(1U, [managed.stringObj indexOfObject:@"b"]);
- XCTAssertEqual(1U, [managed.dataObj indexOfObject:data(2)]);
- XCTAssertEqual(1U, [managed.dateObj indexOfObject:date(2)]);
- XCTAssertEqual(1U, [optManaged.boolObj indexOfObject:@YES]);
- XCTAssertEqual(1U, [optManaged.intObj indexOfObject:@3]);
- XCTAssertEqual(1U, [optManaged.floatObj indexOfObject:@3.3f]);
- XCTAssertEqual(1U, [optManaged.doubleObj indexOfObject:@3.3]);
- XCTAssertEqual(1U, [optManaged.stringObj indexOfObject:@"b"]);
- XCTAssertEqual(1U, [optManaged.dataObj indexOfObject:data(2)]);
- XCTAssertEqual(1U, [optManaged.dateObj indexOfObject:date(2)]);
- }
- - (void)testIndexOfObjectSorted {
- [managed.boolObj addObjects:@[@NO, @YES, @NO, @YES]];
- [managed.intObj addObjects:@[@2, @3, @2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f, @2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3, @2.2, @3.3]];
- [managed.stringObj addObjects:@[@"a", @"b", @"a", @"b"]];
- [managed.dataObj addObjects:@[data(1), data(2), data(1), data(2)]];
- [managed.dateObj addObjects:@[date(1), date(2), date(1), date(2)]];
- [optManaged.boolObj addObjects:@[@NO, @YES, NSNull.null, @YES, @NO]];
- [optManaged.intObj addObjects:@[@2, @3, NSNull.null, @3, @2]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null, @3.3f, @2.2f]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null, @3.3, @2.2]];
- [optManaged.stringObj addObjects:@[@"a", @"b", NSNull.null, @"b", @"a"]];
- [optManaged.dataObj addObjects:@[data(1), data(2), NSNull.null, data(2), data(1)]];
- [optManaged.dateObj addObjects:@[date(1), date(2), NSNull.null, date(2), date(1)]];
- XCTAssertEqual(0U, [[managed.boolObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@YES]);
- XCTAssertEqual(0U, [[managed.intObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@3]);
- XCTAssertEqual(0U, [[managed.floatObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@3.3f]);
- XCTAssertEqual(0U, [[managed.doubleObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@3.3]);
- XCTAssertEqual(0U, [[managed.stringObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@"b"]);
- XCTAssertEqual(0U, [[managed.dataObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:data(2)]);
- XCTAssertEqual(0U, [[managed.dateObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:date(2)]);
- XCTAssertEqual(2U, [[managed.boolObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@NO]);
- XCTAssertEqual(2U, [[managed.intObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@2]);
- XCTAssertEqual(2U, [[managed.floatObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@2.2f]);
- XCTAssertEqual(2U, [[managed.doubleObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@2.2]);
- XCTAssertEqual(2U, [[managed.stringObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@"a"]);
- XCTAssertEqual(2U, [[managed.dataObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:data(1)]);
- XCTAssertEqual(2U, [[managed.dateObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:date(1)]);
- XCTAssertEqual(0U, [[optManaged.boolObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@YES]);
- XCTAssertEqual(0U, [[optManaged.intObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@3]);
- XCTAssertEqual(0U, [[optManaged.floatObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@3.3f]);
- XCTAssertEqual(0U, [[optManaged.doubleObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@3.3]);
- XCTAssertEqual(0U, [[optManaged.stringObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@"b"]);
- XCTAssertEqual(0U, [[optManaged.dataObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:data(2)]);
- XCTAssertEqual(0U, [[optManaged.dateObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:date(2)]);
- XCTAssertEqual(2U, [[optManaged.boolObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@NO]);
- XCTAssertEqual(2U, [[optManaged.intObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@2]);
- XCTAssertEqual(2U, [[optManaged.floatObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@2.2f]);
- XCTAssertEqual(2U, [[optManaged.doubleObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@2.2]);
- XCTAssertEqual(2U, [[optManaged.stringObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:@"a"]);
- XCTAssertEqual(2U, [[optManaged.dataObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:data(1)]);
- XCTAssertEqual(2U, [[optManaged.dateObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:date(1)]);
- XCTAssertEqual(4U, [[optManaged.boolObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:NSNull.null]);
- XCTAssertEqual(4U, [[optManaged.intObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:NSNull.null]);
- XCTAssertEqual(4U, [[optManaged.floatObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:NSNull.null]);
- XCTAssertEqual(4U, [[optManaged.doubleObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:NSNull.null]);
- XCTAssertEqual(4U, [[optManaged.stringObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:NSNull.null]);
- XCTAssertEqual(4U, [[optManaged.dataObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:NSNull.null]);
- XCTAssertEqual(4U, [[optManaged.dateObj sortedResultsUsingKeyPath:@"self" ascending:NO] indexOfObject:NSNull.null]);
- }
- - (void)testIndexOfObjectDistinct {
- [managed.boolObj addObjects:@[@NO, @NO, @YES]];
- [managed.intObj addObjects:@[@2, @2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @2.2, @3.3]];
- [managed.stringObj addObjects:@[@"a", @"a", @"b"]];
- [managed.dataObj addObjects:@[data(1), data(1), data(2)]];
- [managed.dateObj addObjects:@[date(1), date(1), date(2)]];
- [optManaged.boolObj addObjects:@[@NO, @NO, NSNull.null, @YES, @NO]];
- [optManaged.intObj addObjects:@[@2, @2, NSNull.null, @3, @2]];
- [optManaged.floatObj addObjects:@[@2.2f, @2.2f, NSNull.null, @3.3f, @2.2f]];
- [optManaged.doubleObj addObjects:@[@2.2, @2.2, NSNull.null, @3.3, @2.2]];
- [optManaged.stringObj addObjects:@[@"a", @"a", NSNull.null, @"b", @"a"]];
- [optManaged.dataObj addObjects:@[data(1), data(1), NSNull.null, data(2), data(1)]];
- [optManaged.dateObj addObjects:@[date(1), date(1), NSNull.null, date(2), date(1)]];
- XCTAssertEqual(0U, [[managed.boolObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@NO]);
- XCTAssertEqual(0U, [[managed.intObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@2]);
- XCTAssertEqual(0U, [[managed.floatObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@2.2f]);
- XCTAssertEqual(0U, [[managed.doubleObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@2.2]);
- XCTAssertEqual(0U, [[managed.stringObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@"a"]);
- XCTAssertEqual(0U, [[managed.dataObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:data(1)]);
- XCTAssertEqual(0U, [[managed.dateObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:date(1)]);
- XCTAssertEqual(1U, [[managed.boolObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@YES]);
- XCTAssertEqual(1U, [[managed.intObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@3]);
- XCTAssertEqual(1U, [[managed.floatObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@3.3f]);
- XCTAssertEqual(1U, [[managed.doubleObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@3.3]);
- XCTAssertEqual(1U, [[managed.stringObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@"b"]);
- XCTAssertEqual(1U, [[managed.dataObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:data(2)]);
- XCTAssertEqual(1U, [[managed.dateObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:date(2)]);
- XCTAssertEqual(0U, [[optManaged.boolObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@NO]);
- XCTAssertEqual(0U, [[optManaged.intObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@2]);
- XCTAssertEqual(0U, [[optManaged.floatObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@2.2f]);
- XCTAssertEqual(0U, [[optManaged.doubleObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@2.2]);
- XCTAssertEqual(0U, [[optManaged.stringObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@"a"]);
- XCTAssertEqual(0U, [[optManaged.dataObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:data(1)]);
- XCTAssertEqual(0U, [[optManaged.dateObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:date(1)]);
- XCTAssertEqual(2U, [[optManaged.boolObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@YES]);
- XCTAssertEqual(2U, [[optManaged.intObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@3]);
- XCTAssertEqual(2U, [[optManaged.floatObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@3.3f]);
- XCTAssertEqual(2U, [[optManaged.doubleObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@3.3]);
- XCTAssertEqual(2U, [[optManaged.stringObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:@"b"]);
- XCTAssertEqual(2U, [[optManaged.dataObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:data(2)]);
- XCTAssertEqual(2U, [[optManaged.dateObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:date(2)]);
- XCTAssertEqual(1U, [[optManaged.boolObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:NSNull.null]);
- XCTAssertEqual(1U, [[optManaged.intObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:NSNull.null]);
- XCTAssertEqual(1U, [[optManaged.floatObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:NSNull.null]);
- XCTAssertEqual(1U, [[optManaged.doubleObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:NSNull.null]);
- XCTAssertEqual(1U, [[optManaged.stringObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:NSNull.null]);
- XCTAssertEqual(1U, [[optManaged.dataObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:NSNull.null]);
- XCTAssertEqual(1U, [[optManaged.dateObj distinctResultsUsingKeyPaths:@[@"self"]] indexOfObject:NSNull.null]);
- }
- - (void)testIndexOfObjectWhere {
- RLMAssertThrowsWithReason([managed.boolObj indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([managed.intObj indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([managed.floatObj indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([managed.doubleObj indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([managed.stringObj indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([managed.dataObj indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([managed.dateObj indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([optManaged.boolObj indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([optManaged.intObj indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([optManaged.floatObj indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([optManaged.doubleObj indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([optManaged.stringObj indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([optManaged.dataObj indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([optManaged.dateObj indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[managed.boolObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[managed.intObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[managed.floatObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[managed.doubleObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[managed.stringObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[managed.dataObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[managed.dateObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.boolObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.intObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.floatObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.doubleObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.stringObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.dataObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.dateObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWhere:@"TRUEPREDICATE"], @"implemented");
- XCTAssertEqual(NSNotFound, [unmanaged.boolObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [unmanaged.intObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [unmanaged.floatObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [unmanaged.doubleObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [unmanaged.stringObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [unmanaged.dataObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [unmanaged.dateObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.boolObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.intObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.floatObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.doubleObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.stringObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.dataObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.dateObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- [unmanaged.boolObj addObjects:@[@NO, @YES]];
- [unmanaged.intObj addObjects:@[@2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3]];
- [unmanaged.stringObj addObjects:@[@"a", @"b"]];
- [unmanaged.dataObj addObjects:@[data(1), data(2)]];
- [unmanaged.dateObj addObjects:@[date(1), date(2)]];
- [optUnmanaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optUnmanaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optUnmanaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optUnmanaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optUnmanaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- XCTAssertEqual(0U, [unmanaged.boolObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(0U, [unmanaged.intObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(0U, [unmanaged.floatObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(0U, [unmanaged.doubleObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(0U, [unmanaged.stringObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(0U, [unmanaged.dataObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(0U, [unmanaged.dateObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(0U, [optUnmanaged.boolObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(0U, [optUnmanaged.intObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(0U, [optUnmanaged.floatObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(0U, [optUnmanaged.doubleObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(0U, [optUnmanaged.stringObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(0U, [optUnmanaged.dataObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(0U, [optUnmanaged.dateObj indexOfObjectWhere:@"TRUEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [unmanaged.boolObj indexOfObjectWhere:@"FALSEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [unmanaged.intObj indexOfObjectWhere:@"FALSEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [unmanaged.floatObj indexOfObjectWhere:@"FALSEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [unmanaged.doubleObj indexOfObjectWhere:@"FALSEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [unmanaged.stringObj indexOfObjectWhere:@"FALSEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [unmanaged.dataObj indexOfObjectWhere:@"FALSEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [unmanaged.dateObj indexOfObjectWhere:@"FALSEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.boolObj indexOfObjectWhere:@"FALSEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.intObj indexOfObjectWhere:@"FALSEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.floatObj indexOfObjectWhere:@"FALSEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.doubleObj indexOfObjectWhere:@"FALSEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.stringObj indexOfObjectWhere:@"FALSEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.dataObj indexOfObjectWhere:@"FALSEPREDICATE"]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.dateObj indexOfObjectWhere:@"FALSEPREDICATE"]);
- }
- - (void)testIndexOfObjectWithPredicate {
- RLMAssertThrowsWithReason([managed.boolObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([managed.intObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([managed.floatObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([managed.doubleObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([managed.stringObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([managed.dataObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([managed.dateObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([optManaged.boolObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([optManaged.intObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([optManaged.floatObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([optManaged.doubleObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([optManaged.stringObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([optManaged.dataObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([optManaged.dateObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[managed.boolObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[managed.intObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[managed.floatObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[managed.doubleObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[managed.stringObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[managed.dataObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[managed.dateObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.boolObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.intObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.floatObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.doubleObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.stringObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.dataObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.dateObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- XCTAssertEqual(NSNotFound, [unmanaged.boolObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(NSNotFound, [unmanaged.intObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(NSNotFound, [unmanaged.floatObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(NSNotFound, [unmanaged.doubleObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(NSNotFound, [unmanaged.stringObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(NSNotFound, [unmanaged.dataObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(NSNotFound, [unmanaged.dateObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.boolObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.intObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.floatObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.doubleObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.stringObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.dataObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.dateObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- [unmanaged.boolObj addObjects:@[@NO, @YES]];
- [unmanaged.intObj addObjects:@[@2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3]];
- [unmanaged.stringObj addObjects:@[@"a", @"b"]];
- [unmanaged.dataObj addObjects:@[data(1), data(2)]];
- [unmanaged.dateObj addObjects:@[date(1), date(2)]];
- [optUnmanaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optUnmanaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optUnmanaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optUnmanaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optUnmanaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- XCTAssertEqual(0U, [unmanaged.boolObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(0U, [unmanaged.intObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(0U, [unmanaged.floatObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(0U, [unmanaged.doubleObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(0U, [unmanaged.stringObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(0U, [unmanaged.dataObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(0U, [unmanaged.dateObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(0U, [optUnmanaged.boolObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(0U, [optUnmanaged.intObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(0U, [optUnmanaged.floatObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(0U, [optUnmanaged.doubleObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(0U, [optUnmanaged.stringObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(0U, [optUnmanaged.dataObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(0U, [optUnmanaged.dateObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]);
- XCTAssertEqual(NSNotFound, [unmanaged.boolObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:NO]]);
- XCTAssertEqual(NSNotFound, [unmanaged.intObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:NO]]);
- XCTAssertEqual(NSNotFound, [unmanaged.floatObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:NO]]);
- XCTAssertEqual(NSNotFound, [unmanaged.doubleObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:NO]]);
- XCTAssertEqual(NSNotFound, [unmanaged.stringObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:NO]]);
- XCTAssertEqual(NSNotFound, [unmanaged.dataObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:NO]]);
- XCTAssertEqual(NSNotFound, [unmanaged.dateObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:NO]]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.boolObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:NO]]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.intObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:NO]]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.floatObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:NO]]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.doubleObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:NO]]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.stringObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:NO]]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.dataObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:NO]]);
- XCTAssertEqual(NSNotFound, [optUnmanaged.dateObj indexOfObjectWithPredicate:[NSPredicate predicateWithValue:NO]]);
- }
- - (void)testSort {
- RLMAssertThrowsWithReason([unmanaged.boolObj sortedResultsUsingKeyPath:@"self" ascending:NO],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.intObj sortedResultsUsingKeyPath:@"self" ascending:NO],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.floatObj sortedResultsUsingKeyPath:@"self" ascending:NO],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.doubleObj sortedResultsUsingKeyPath:@"self" ascending:NO],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.stringObj sortedResultsUsingKeyPath:@"self" ascending:NO],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.dataObj sortedResultsUsingKeyPath:@"self" ascending:NO],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.dateObj sortedResultsUsingKeyPath:@"self" ascending:NO],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj sortedResultsUsingKeyPath:@"self" ascending:NO],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.intObj sortedResultsUsingKeyPath:@"self" ascending:NO],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj sortedResultsUsingKeyPath:@"self" ascending:NO],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj sortedResultsUsingKeyPath:@"self" ascending:NO],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj sortedResultsUsingKeyPath:@"self" ascending:NO],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj sortedResultsUsingKeyPath:@"self" ascending:NO],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj sortedResultsUsingKeyPath:@"self" ascending:NO],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.boolObj sortedResultsUsingDescriptors:@[]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.intObj sortedResultsUsingDescriptors:@[]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.floatObj sortedResultsUsingDescriptors:@[]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.doubleObj sortedResultsUsingDescriptors:@[]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.stringObj sortedResultsUsingDescriptors:@[]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.dataObj sortedResultsUsingDescriptors:@[]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.dateObj sortedResultsUsingDescriptors:@[]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj sortedResultsUsingDescriptors:@[]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.intObj sortedResultsUsingDescriptors:@[]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj sortedResultsUsingDescriptors:@[]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj sortedResultsUsingDescriptors:@[]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj sortedResultsUsingDescriptors:@[]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj sortedResultsUsingDescriptors:@[]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj sortedResultsUsingDescriptors:@[]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([managed.boolObj sortedResultsUsingKeyPath:@"not self" ascending:NO],
- @"can only be sorted on 'self'");
- RLMAssertThrowsWithReason([managed.intObj sortedResultsUsingKeyPath:@"not self" ascending:NO],
- @"can only be sorted on 'self'");
- RLMAssertThrowsWithReason([managed.floatObj sortedResultsUsingKeyPath:@"not self" ascending:NO],
- @"can only be sorted on 'self'");
- RLMAssertThrowsWithReason([managed.doubleObj sortedResultsUsingKeyPath:@"not self" ascending:NO],
- @"can only be sorted on 'self'");
- RLMAssertThrowsWithReason([managed.stringObj sortedResultsUsingKeyPath:@"not self" ascending:NO],
- @"can only be sorted on 'self'");
- RLMAssertThrowsWithReason([managed.dataObj sortedResultsUsingKeyPath:@"not self" ascending:NO],
- @"can only be sorted on 'self'");
- RLMAssertThrowsWithReason([managed.dateObj sortedResultsUsingKeyPath:@"not self" ascending:NO],
- @"can only be sorted on 'self'");
- RLMAssertThrowsWithReason([optManaged.boolObj sortedResultsUsingKeyPath:@"not self" ascending:NO],
- @"can only be sorted on 'self'");
- RLMAssertThrowsWithReason([optManaged.intObj sortedResultsUsingKeyPath:@"not self" ascending:NO],
- @"can only be sorted on 'self'");
- RLMAssertThrowsWithReason([optManaged.floatObj sortedResultsUsingKeyPath:@"not self" ascending:NO],
- @"can only be sorted on 'self'");
- RLMAssertThrowsWithReason([optManaged.doubleObj sortedResultsUsingKeyPath:@"not self" ascending:NO],
- @"can only be sorted on 'self'");
- RLMAssertThrowsWithReason([optManaged.stringObj sortedResultsUsingKeyPath:@"not self" ascending:NO],
- @"can only be sorted on 'self'");
- RLMAssertThrowsWithReason([optManaged.dataObj sortedResultsUsingKeyPath:@"not self" ascending:NO],
- @"can only be sorted on 'self'");
- RLMAssertThrowsWithReason([optManaged.dateObj sortedResultsUsingKeyPath:@"not self" ascending:NO],
- @"can only be sorted on 'self'");
- [managed.boolObj addObjects:@[@NO, @YES, @NO]];
- [managed.intObj addObjects:@[@2, @3, @2]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f, @2.2f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3, @2.2]];
- [managed.stringObj addObjects:@[@"a", @"b", @"a"]];
- [managed.dataObj addObjects:@[data(1), data(2), data(1)]];
- [managed.dateObj addObjects:@[date(1), date(2), date(1)]];
- [optManaged.boolObj addObjects:@[@NO, @YES, NSNull.null, @YES, @NO]];
- [optManaged.intObj addObjects:@[@2, @3, NSNull.null, @3, @2]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null, @3.3f, @2.2f]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null, @3.3, @2.2]];
- [optManaged.stringObj addObjects:@[@"a", @"b", NSNull.null, @"b", @"a"]];
- [optManaged.dataObj addObjects:@[data(1), data(2), NSNull.null, data(2), data(1)]];
- [optManaged.dateObj addObjects:@[date(1), date(2), NSNull.null, date(2), date(1)]];
- XCTAssertEqualObjects([[managed.boolObj sortedResultsUsingDescriptors:@[]] valueForKey:@"self"],
- (@[@NO, @YES, @NO]));
- XCTAssertEqualObjects([[managed.intObj sortedResultsUsingDescriptors:@[]] valueForKey:@"self"],
- (@[@2, @3, @2]));
- XCTAssertEqualObjects([[managed.floatObj sortedResultsUsingDescriptors:@[]] valueForKey:@"self"],
- (@[@2.2f, @3.3f, @2.2f]));
- XCTAssertEqualObjects([[managed.doubleObj sortedResultsUsingDescriptors:@[]] valueForKey:@"self"],
- (@[@2.2, @3.3, @2.2]));
- XCTAssertEqualObjects([[managed.stringObj sortedResultsUsingDescriptors:@[]] valueForKey:@"self"],
- (@[@"a", @"b", @"a"]));
- XCTAssertEqualObjects([[managed.dataObj sortedResultsUsingDescriptors:@[]] valueForKey:@"self"],
- (@[data(1), data(2), data(1)]));
- XCTAssertEqualObjects([[managed.dateObj sortedResultsUsingDescriptors:@[]] valueForKey:@"self"],
- (@[date(1), date(2), date(1)]));
- XCTAssertEqualObjects([[optManaged.boolObj sortedResultsUsingDescriptors:@[]] valueForKey:@"self"],
- (@[@NO, @YES, NSNull.null, @YES, @NO]));
- XCTAssertEqualObjects([[optManaged.intObj sortedResultsUsingDescriptors:@[]] valueForKey:@"self"],
- (@[@2, @3, NSNull.null, @3, @2]));
- XCTAssertEqualObjects([[optManaged.floatObj sortedResultsUsingDescriptors:@[]] valueForKey:@"self"],
- (@[@2.2f, @3.3f, NSNull.null, @3.3f, @2.2f]));
- XCTAssertEqualObjects([[optManaged.doubleObj sortedResultsUsingDescriptors:@[]] valueForKey:@"self"],
- (@[@2.2, @3.3, NSNull.null, @3.3, @2.2]));
- XCTAssertEqualObjects([[optManaged.stringObj sortedResultsUsingDescriptors:@[]] valueForKey:@"self"],
- (@[@"a", @"b", NSNull.null, @"b", @"a"]));
- XCTAssertEqualObjects([[optManaged.dataObj sortedResultsUsingDescriptors:@[]] valueForKey:@"self"],
- (@[data(1), data(2), NSNull.null, data(2), data(1)]));
- XCTAssertEqualObjects([[optManaged.dateObj sortedResultsUsingDescriptors:@[]] valueForKey:@"self"],
- (@[date(1), date(2), NSNull.null, date(2), date(1)]));
- XCTAssertEqualObjects([[managed.boolObj sortedResultsUsingKeyPath:@"self" ascending:NO] valueForKey:@"self"],
- (@[@YES, @NO, @NO]));
- XCTAssertEqualObjects([[managed.intObj sortedResultsUsingKeyPath:@"self" ascending:NO] valueForKey:@"self"],
- (@[@3, @2, @2]));
- XCTAssertEqualObjects([[managed.floatObj sortedResultsUsingKeyPath:@"self" ascending:NO] valueForKey:@"self"],
- (@[@3.3f, @2.2f, @2.2f]));
- XCTAssertEqualObjects([[managed.doubleObj sortedResultsUsingKeyPath:@"self" ascending:NO] valueForKey:@"self"],
- (@[@3.3, @2.2, @2.2]));
- XCTAssertEqualObjects([[managed.stringObj sortedResultsUsingKeyPath:@"self" ascending:NO] valueForKey:@"self"],
- (@[@"b", @"a", @"a"]));
- XCTAssertEqualObjects([[managed.dataObj sortedResultsUsingKeyPath:@"self" ascending:NO] valueForKey:@"self"],
- (@[data(2), data(1), data(1)]));
- XCTAssertEqualObjects([[managed.dateObj sortedResultsUsingKeyPath:@"self" ascending:NO] valueForKey:@"self"],
- (@[date(2), date(1), date(1)]));
- XCTAssertEqualObjects([[optManaged.boolObj sortedResultsUsingKeyPath:@"self" ascending:NO] valueForKey:@"self"],
- (@[@YES, @YES, @NO, @NO, NSNull.null]));
- XCTAssertEqualObjects([[optManaged.intObj sortedResultsUsingKeyPath:@"self" ascending:NO] valueForKey:@"self"],
- (@[@3, @3, @2, @2, NSNull.null]));
- XCTAssertEqualObjects([[optManaged.floatObj sortedResultsUsingKeyPath:@"self" ascending:NO] valueForKey:@"self"],
- (@[@3.3f, @3.3f, @2.2f, @2.2f, NSNull.null]));
- XCTAssertEqualObjects([[optManaged.doubleObj sortedResultsUsingKeyPath:@"self" ascending:NO] valueForKey:@"self"],
- (@[@3.3, @3.3, @2.2, @2.2, NSNull.null]));
- XCTAssertEqualObjects([[optManaged.stringObj sortedResultsUsingKeyPath:@"self" ascending:NO] valueForKey:@"self"],
- (@[@"b", @"b", @"a", @"a", NSNull.null]));
- XCTAssertEqualObjects([[optManaged.dataObj sortedResultsUsingKeyPath:@"self" ascending:NO] valueForKey:@"self"],
- (@[data(2), data(2), data(1), data(1), NSNull.null]));
- XCTAssertEqualObjects([[optManaged.dateObj sortedResultsUsingKeyPath:@"self" ascending:NO] valueForKey:@"self"],
- (@[date(2), date(2), date(1), date(1), NSNull.null]));
- XCTAssertEqualObjects([[managed.boolObj sortedResultsUsingKeyPath:@"self" ascending:YES] valueForKey:@"self"],
- (@[@NO, @NO, @YES]));
- XCTAssertEqualObjects([[managed.intObj sortedResultsUsingKeyPath:@"self" ascending:YES] valueForKey:@"self"],
- (@[@2, @2, @3]));
- XCTAssertEqualObjects([[managed.floatObj sortedResultsUsingKeyPath:@"self" ascending:YES] valueForKey:@"self"],
- (@[@2.2f, @2.2f, @3.3f]));
- XCTAssertEqualObjects([[managed.doubleObj sortedResultsUsingKeyPath:@"self" ascending:YES] valueForKey:@"self"],
- (@[@2.2, @2.2, @3.3]));
- XCTAssertEqualObjects([[managed.stringObj sortedResultsUsingKeyPath:@"self" ascending:YES] valueForKey:@"self"],
- (@[@"a", @"a", @"b"]));
- XCTAssertEqualObjects([[managed.dataObj sortedResultsUsingKeyPath:@"self" ascending:YES] valueForKey:@"self"],
- (@[data(1), data(1), data(2)]));
- XCTAssertEqualObjects([[managed.dateObj sortedResultsUsingKeyPath:@"self" ascending:YES] valueForKey:@"self"],
- (@[date(1), date(1), date(2)]));
- XCTAssertEqualObjects([[optManaged.boolObj sortedResultsUsingKeyPath:@"self" ascending:YES] valueForKey:@"self"],
- (@[NSNull.null, @NO, @NO, @YES, @YES]));
- XCTAssertEqualObjects([[optManaged.intObj sortedResultsUsingKeyPath:@"self" ascending:YES] valueForKey:@"self"],
- (@[NSNull.null, @2, @2, @3, @3]));
- XCTAssertEqualObjects([[optManaged.floatObj sortedResultsUsingKeyPath:@"self" ascending:YES] valueForKey:@"self"],
- (@[NSNull.null, @2.2f, @2.2f, @3.3f, @3.3f]));
- XCTAssertEqualObjects([[optManaged.doubleObj sortedResultsUsingKeyPath:@"self" ascending:YES] valueForKey:@"self"],
- (@[NSNull.null, @2.2, @2.2, @3.3, @3.3]));
- XCTAssertEqualObjects([[optManaged.stringObj sortedResultsUsingKeyPath:@"self" ascending:YES] valueForKey:@"self"],
- (@[NSNull.null, @"a", @"a", @"b", @"b"]));
- XCTAssertEqualObjects([[optManaged.dataObj sortedResultsUsingKeyPath:@"self" ascending:YES] valueForKey:@"self"],
- (@[NSNull.null, data(1), data(1), data(2), data(2)]));
- XCTAssertEqualObjects([[optManaged.dateObj sortedResultsUsingKeyPath:@"self" ascending:YES] valueForKey:@"self"],
- (@[NSNull.null, date(1), date(1), date(2), date(2)]));
- }
- - (void)testFilter {
- RLMAssertThrowsWithReason([unmanaged.boolObj objectsWhere:@"TRUEPREDICATE"],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.intObj objectsWhere:@"TRUEPREDICATE"],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.floatObj objectsWhere:@"TRUEPREDICATE"],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.doubleObj objectsWhere:@"TRUEPREDICATE"],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.stringObj objectsWhere:@"TRUEPREDICATE"],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.dataObj objectsWhere:@"TRUEPREDICATE"],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.dateObj objectsWhere:@"TRUEPREDICATE"],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj objectsWhere:@"TRUEPREDICATE"],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.intObj objectsWhere:@"TRUEPREDICATE"],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj objectsWhere:@"TRUEPREDICATE"],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj objectsWhere:@"TRUEPREDICATE"],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj objectsWhere:@"TRUEPREDICATE"],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj objectsWhere:@"TRUEPREDICATE"],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj objectsWhere:@"TRUEPREDICATE"],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.boolObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.intObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.floatObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.doubleObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.stringObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.dataObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.dateObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.intObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([managed.boolObj objectsWhere:@"TRUEPREDICATE"],
- @"implemented");
- RLMAssertThrowsWithReason([managed.intObj objectsWhere:@"TRUEPREDICATE"],
- @"implemented");
- RLMAssertThrowsWithReason([managed.floatObj objectsWhere:@"TRUEPREDICATE"],
- @"implemented");
- RLMAssertThrowsWithReason([managed.doubleObj objectsWhere:@"TRUEPREDICATE"],
- @"implemented");
- RLMAssertThrowsWithReason([managed.stringObj objectsWhere:@"TRUEPREDICATE"],
- @"implemented");
- RLMAssertThrowsWithReason([managed.dataObj objectsWhere:@"TRUEPREDICATE"],
- @"implemented");
- RLMAssertThrowsWithReason([managed.dateObj objectsWhere:@"TRUEPREDICATE"],
- @"implemented");
- RLMAssertThrowsWithReason([optManaged.boolObj objectsWhere:@"TRUEPREDICATE"],
- @"implemented");
- RLMAssertThrowsWithReason([optManaged.intObj objectsWhere:@"TRUEPREDICATE"],
- @"implemented");
- RLMAssertThrowsWithReason([optManaged.floatObj objectsWhere:@"TRUEPREDICATE"],
- @"implemented");
- RLMAssertThrowsWithReason([optManaged.doubleObj objectsWhere:@"TRUEPREDICATE"],
- @"implemented");
- RLMAssertThrowsWithReason([optManaged.stringObj objectsWhere:@"TRUEPREDICATE"],
- @"implemented");
- RLMAssertThrowsWithReason([optManaged.dataObj objectsWhere:@"TRUEPREDICATE"],
- @"implemented");
- RLMAssertThrowsWithReason([optManaged.dateObj objectsWhere:@"TRUEPREDICATE"],
- @"implemented");
- RLMAssertThrowsWithReason([managed.boolObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"implemented");
- RLMAssertThrowsWithReason([managed.intObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"implemented");
- RLMAssertThrowsWithReason([managed.floatObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"implemented");
- RLMAssertThrowsWithReason([managed.doubleObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"implemented");
- RLMAssertThrowsWithReason([managed.stringObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"implemented");
- RLMAssertThrowsWithReason([managed.dataObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"implemented");
- RLMAssertThrowsWithReason([managed.dateObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"implemented");
- RLMAssertThrowsWithReason([optManaged.boolObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"implemented");
- RLMAssertThrowsWithReason([optManaged.intObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"implemented");
- RLMAssertThrowsWithReason([optManaged.floatObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"implemented");
- RLMAssertThrowsWithReason([optManaged.doubleObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"implemented");
- RLMAssertThrowsWithReason([optManaged.stringObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"implemented");
- RLMAssertThrowsWithReason([optManaged.dataObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"implemented");
- RLMAssertThrowsWithReason([optManaged.dateObj objectsWithPredicate:[NSPredicate predicateWithValue:YES]],
- @"implemented");
- RLMAssertThrowsWithReason([[managed.boolObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[managed.intObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[managed.floatObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[managed.doubleObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[managed.stringObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[managed.dataObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[managed.dateObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.boolObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.intObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.floatObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.doubleObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.stringObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.dataObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.dateObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWhere:@"TRUEPREDICATE"], @"implemented");
- RLMAssertThrowsWithReason([[managed.boolObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[managed.intObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[managed.floatObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[managed.doubleObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[managed.stringObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[managed.dataObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[managed.dateObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.boolObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.intObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.floatObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.doubleObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.stringObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.dataObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- RLMAssertThrowsWithReason([[optManaged.dateObj sortedResultsUsingKeyPath:@"self" ascending:NO]
- objectsWithPredicate:[NSPredicate predicateWithValue:YES]], @"implemented");
- }
- - (void)testNotifications {
- RLMAssertThrowsWithReason([unmanaged.boolObj addNotificationBlock:^(__unused id a, __unused id c, __unused id e) { }],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.intObj addNotificationBlock:^(__unused id a, __unused id c, __unused id e) { }],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.floatObj addNotificationBlock:^(__unused id a, __unused id c, __unused id e) { }],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.doubleObj addNotificationBlock:^(__unused id a, __unused id c, __unused id e) { }],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.stringObj addNotificationBlock:^(__unused id a, __unused id c, __unused id e) { }],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.dataObj addNotificationBlock:^(__unused id a, __unused id c, __unused id e) { }],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([unmanaged.dateObj addNotificationBlock:^(__unused id a, __unused id c, __unused id e) { }],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj addNotificationBlock:^(__unused id a, __unused id c, __unused id e) { }],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.intObj addNotificationBlock:^(__unused id a, __unused id c, __unused id e) { }],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj addNotificationBlock:^(__unused id a, __unused id c, __unused id e) { }],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj addNotificationBlock:^(__unused id a, __unused id c, __unused id e) { }],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj addNotificationBlock:^(__unused id a, __unused id c, __unused id e) { }],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj addNotificationBlock:^(__unused id a, __unused id c, __unused id e) { }],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj addNotificationBlock:^(__unused id a, __unused id c, __unused id e) { }],
- @"This method may only be called on RLMArray instances retrieved from an RLMRealm");
- }
- - (void)testMin {
- RLMAssertThrowsWithReason([unmanaged.boolObj minOfProperty:@"self"],
- @"minOfProperty: is not supported for bool array");
- RLMAssertThrowsWithReason([unmanaged.stringObj minOfProperty:@"self"],
- @"minOfProperty: is not supported for string array");
- RLMAssertThrowsWithReason([unmanaged.dataObj minOfProperty:@"self"],
- @"minOfProperty: is not supported for data array");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj minOfProperty:@"self"],
- @"minOfProperty: is not supported for bool? array");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj minOfProperty:@"self"],
- @"minOfProperty: is not supported for string? array");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj minOfProperty:@"self"],
- @"minOfProperty: is not supported for data? array");
- RLMAssertThrowsWithReason([managed.boolObj minOfProperty:@"self"],
- @"minOfProperty: is not supported for bool array 'AllPrimitiveArrays.boolObj'");
- RLMAssertThrowsWithReason([managed.stringObj minOfProperty:@"self"],
- @"minOfProperty: is not supported for string array 'AllPrimitiveArrays.stringObj'");
- RLMAssertThrowsWithReason([managed.dataObj minOfProperty:@"self"],
- @"minOfProperty: is not supported for data array 'AllPrimitiveArrays.dataObj'");
- RLMAssertThrowsWithReason([optManaged.boolObj minOfProperty:@"self"],
- @"minOfProperty: is not supported for bool? array 'AllOptionalPrimitiveArrays.boolObj'");
- RLMAssertThrowsWithReason([optManaged.stringObj minOfProperty:@"self"],
- @"minOfProperty: is not supported for string? array 'AllOptionalPrimitiveArrays.stringObj'");
- RLMAssertThrowsWithReason([optManaged.dataObj minOfProperty:@"self"],
- @"minOfProperty: is not supported for data? array 'AllOptionalPrimitiveArrays.dataObj'");
- XCTAssertNil([unmanaged.intObj minOfProperty:@"self"]);
- XCTAssertNil([unmanaged.floatObj minOfProperty:@"self"]);
- XCTAssertNil([unmanaged.doubleObj minOfProperty:@"self"]);
- XCTAssertNil([unmanaged.dateObj minOfProperty:@"self"]);
- XCTAssertNil([optUnmanaged.intObj minOfProperty:@"self"]);
- XCTAssertNil([optUnmanaged.floatObj minOfProperty:@"self"]);
- XCTAssertNil([optUnmanaged.doubleObj minOfProperty:@"self"]);
- XCTAssertNil([optUnmanaged.dateObj minOfProperty:@"self"]);
- XCTAssertNil([managed.intObj minOfProperty:@"self"]);
- XCTAssertNil([managed.floatObj minOfProperty:@"self"]);
- XCTAssertNil([managed.doubleObj minOfProperty:@"self"]);
- XCTAssertNil([managed.dateObj minOfProperty:@"self"]);
- XCTAssertNil([optManaged.intObj minOfProperty:@"self"]);
- XCTAssertNil([optManaged.floatObj minOfProperty:@"self"]);
- XCTAssertNil([optManaged.doubleObj minOfProperty:@"self"]);
- XCTAssertNil([optManaged.dateObj minOfProperty:@"self"]);
- [unmanaged.intObj addObjects:@[@2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3]];
- [unmanaged.dateObj addObjects:@[date(1), date(2)]];
- [optUnmanaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optUnmanaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- [managed.intObj addObjects:@[@2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3]];
- [managed.dateObj addObjects:@[date(1), date(2)]];
- [optManaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optManaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- XCTAssertEqualObjects([unmanaged.intObj minOfProperty:@"self"], @2);
- XCTAssertEqualObjects([unmanaged.floatObj minOfProperty:@"self"], @2.2f);
- XCTAssertEqualObjects([unmanaged.doubleObj minOfProperty:@"self"], @2.2);
- XCTAssertEqualObjects([unmanaged.dateObj minOfProperty:@"self"], date(1));
- XCTAssertEqualObjects([optUnmanaged.intObj minOfProperty:@"self"], @2);
- XCTAssertEqualObjects([optUnmanaged.floatObj minOfProperty:@"self"], @2.2f);
- XCTAssertEqualObjects([optUnmanaged.doubleObj minOfProperty:@"self"], @2.2);
- XCTAssertEqualObjects([optUnmanaged.dateObj minOfProperty:@"self"], date(1));
- XCTAssertEqualObjects([managed.intObj minOfProperty:@"self"], @2);
- XCTAssertEqualObjects([managed.floatObj minOfProperty:@"self"], @2.2f);
- XCTAssertEqualObjects([managed.doubleObj minOfProperty:@"self"], @2.2);
- XCTAssertEqualObjects([managed.dateObj minOfProperty:@"self"], date(1));
- XCTAssertEqualObjects([optManaged.intObj minOfProperty:@"self"], @2);
- XCTAssertEqualObjects([optManaged.floatObj minOfProperty:@"self"], @2.2f);
- XCTAssertEqualObjects([optManaged.doubleObj minOfProperty:@"self"], @2.2);
- XCTAssertEqualObjects([optManaged.dateObj minOfProperty:@"self"], date(1));
- }
- - (void)testMax {
- RLMAssertThrowsWithReason([unmanaged.boolObj maxOfProperty:@"self"],
- @"maxOfProperty: is not supported for bool array");
- RLMAssertThrowsWithReason([unmanaged.stringObj maxOfProperty:@"self"],
- @"maxOfProperty: is not supported for string array");
- RLMAssertThrowsWithReason([unmanaged.dataObj maxOfProperty:@"self"],
- @"maxOfProperty: is not supported for data array");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj maxOfProperty:@"self"],
- @"maxOfProperty: is not supported for bool? array");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj maxOfProperty:@"self"],
- @"maxOfProperty: is not supported for string? array");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj maxOfProperty:@"self"],
- @"maxOfProperty: is not supported for data? array");
- RLMAssertThrowsWithReason([managed.boolObj maxOfProperty:@"self"],
- @"maxOfProperty: is not supported for bool array 'AllPrimitiveArrays.boolObj'");
- RLMAssertThrowsWithReason([managed.stringObj maxOfProperty:@"self"],
- @"maxOfProperty: is not supported for string array 'AllPrimitiveArrays.stringObj'");
- RLMAssertThrowsWithReason([managed.dataObj maxOfProperty:@"self"],
- @"maxOfProperty: is not supported for data array 'AllPrimitiveArrays.dataObj'");
- RLMAssertThrowsWithReason([optManaged.boolObj maxOfProperty:@"self"],
- @"maxOfProperty: is not supported for bool? array 'AllOptionalPrimitiveArrays.boolObj'");
- RLMAssertThrowsWithReason([optManaged.stringObj maxOfProperty:@"self"],
- @"maxOfProperty: is not supported for string? array 'AllOptionalPrimitiveArrays.stringObj'");
- RLMAssertThrowsWithReason([optManaged.dataObj maxOfProperty:@"self"],
- @"maxOfProperty: is not supported for data? array 'AllOptionalPrimitiveArrays.dataObj'");
- XCTAssertNil([unmanaged.intObj maxOfProperty:@"self"]);
- XCTAssertNil([unmanaged.floatObj maxOfProperty:@"self"]);
- XCTAssertNil([unmanaged.doubleObj maxOfProperty:@"self"]);
- XCTAssertNil([unmanaged.dateObj maxOfProperty:@"self"]);
- XCTAssertNil([optUnmanaged.intObj maxOfProperty:@"self"]);
- XCTAssertNil([optUnmanaged.floatObj maxOfProperty:@"self"]);
- XCTAssertNil([optUnmanaged.doubleObj maxOfProperty:@"self"]);
- XCTAssertNil([optUnmanaged.dateObj maxOfProperty:@"self"]);
- XCTAssertNil([managed.intObj maxOfProperty:@"self"]);
- XCTAssertNil([managed.floatObj maxOfProperty:@"self"]);
- XCTAssertNil([managed.doubleObj maxOfProperty:@"self"]);
- XCTAssertNil([managed.dateObj maxOfProperty:@"self"]);
- XCTAssertNil([optManaged.intObj maxOfProperty:@"self"]);
- XCTAssertNil([optManaged.floatObj maxOfProperty:@"self"]);
- XCTAssertNil([optManaged.doubleObj maxOfProperty:@"self"]);
- XCTAssertNil([optManaged.dateObj maxOfProperty:@"self"]);
- [unmanaged.intObj addObjects:@[@2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3]];
- [unmanaged.dateObj addObjects:@[date(1), date(2)]];
- [optUnmanaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optUnmanaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- [managed.intObj addObjects:@[@2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3]];
- [managed.dateObj addObjects:@[date(1), date(2)]];
- [optManaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optManaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- XCTAssertEqualObjects([unmanaged.intObj maxOfProperty:@"self"], @3);
- XCTAssertEqualObjects([unmanaged.floatObj maxOfProperty:@"self"], @3.3f);
- XCTAssertEqualObjects([unmanaged.doubleObj maxOfProperty:@"self"], @3.3);
- XCTAssertEqualObjects([unmanaged.dateObj maxOfProperty:@"self"], date(2));
- XCTAssertEqualObjects([optUnmanaged.intObj maxOfProperty:@"self"], @3);
- XCTAssertEqualObjects([optUnmanaged.floatObj maxOfProperty:@"self"], @3.3f);
- XCTAssertEqualObjects([optUnmanaged.doubleObj maxOfProperty:@"self"], @3.3);
- XCTAssertEqualObjects([optUnmanaged.dateObj maxOfProperty:@"self"], date(2));
- XCTAssertEqualObjects([managed.intObj maxOfProperty:@"self"], @3);
- XCTAssertEqualObjects([managed.floatObj maxOfProperty:@"self"], @3.3f);
- XCTAssertEqualObjects([managed.doubleObj maxOfProperty:@"self"], @3.3);
- XCTAssertEqualObjects([managed.dateObj maxOfProperty:@"self"], date(2));
- XCTAssertEqualObjects([optManaged.intObj maxOfProperty:@"self"], @3);
- XCTAssertEqualObjects([optManaged.floatObj maxOfProperty:@"self"], @3.3f);
- XCTAssertEqualObjects([optManaged.doubleObj maxOfProperty:@"self"], @3.3);
- XCTAssertEqualObjects([optManaged.dateObj maxOfProperty:@"self"], date(2));
- }
- - (void)testSum {
- RLMAssertThrowsWithReason([unmanaged.boolObj sumOfProperty:@"self"],
- @"sumOfProperty: is not supported for bool array");
- RLMAssertThrowsWithReason([unmanaged.stringObj sumOfProperty:@"self"],
- @"sumOfProperty: is not supported for string array");
- RLMAssertThrowsWithReason([unmanaged.dataObj sumOfProperty:@"self"],
- @"sumOfProperty: is not supported for data array");
- RLMAssertThrowsWithReason([unmanaged.dateObj sumOfProperty:@"self"],
- @"sumOfProperty: is not supported for date array");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj sumOfProperty:@"self"],
- @"sumOfProperty: is not supported for bool? array");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj sumOfProperty:@"self"],
- @"sumOfProperty: is not supported for string? array");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj sumOfProperty:@"self"],
- @"sumOfProperty: is not supported for data? array");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj sumOfProperty:@"self"],
- @"sumOfProperty: is not supported for date? array");
- RLMAssertThrowsWithReason([managed.boolObj sumOfProperty:@"self"],
- @"sumOfProperty: is not supported for bool array 'AllPrimitiveArrays.boolObj'");
- RLMAssertThrowsWithReason([managed.stringObj sumOfProperty:@"self"],
- @"sumOfProperty: is not supported for string array 'AllPrimitiveArrays.stringObj'");
- RLMAssertThrowsWithReason([managed.dataObj sumOfProperty:@"self"],
- @"sumOfProperty: is not supported for data array 'AllPrimitiveArrays.dataObj'");
- RLMAssertThrowsWithReason([managed.dateObj sumOfProperty:@"self"],
- @"sumOfProperty: is not supported for date array 'AllPrimitiveArrays.dateObj'");
- RLMAssertThrowsWithReason([optManaged.boolObj sumOfProperty:@"self"],
- @"sumOfProperty: is not supported for bool? array 'AllOptionalPrimitiveArrays.boolObj'");
- RLMAssertThrowsWithReason([optManaged.stringObj sumOfProperty:@"self"],
- @"sumOfProperty: is not supported for string? array 'AllOptionalPrimitiveArrays.stringObj'");
- RLMAssertThrowsWithReason([optManaged.dataObj sumOfProperty:@"self"],
- @"sumOfProperty: is not supported for data? array 'AllOptionalPrimitiveArrays.dataObj'");
- RLMAssertThrowsWithReason([optManaged.dateObj sumOfProperty:@"self"],
- @"sumOfProperty: is not supported for date? array 'AllOptionalPrimitiveArrays.dateObj'");
- XCTAssertEqualObjects([unmanaged.intObj sumOfProperty:@"self"], @0);
- XCTAssertEqualObjects([unmanaged.floatObj sumOfProperty:@"self"], @0);
- XCTAssertEqualObjects([unmanaged.doubleObj sumOfProperty:@"self"], @0);
- XCTAssertEqualObjects([optUnmanaged.intObj sumOfProperty:@"self"], @0);
- XCTAssertEqualObjects([optUnmanaged.floatObj sumOfProperty:@"self"], @0);
- XCTAssertEqualObjects([optUnmanaged.doubleObj sumOfProperty:@"self"], @0);
- XCTAssertEqualObjects([managed.intObj sumOfProperty:@"self"], @0);
- XCTAssertEqualObjects([managed.floatObj sumOfProperty:@"self"], @0);
- XCTAssertEqualObjects([managed.doubleObj sumOfProperty:@"self"], @0);
- XCTAssertEqualObjects([optManaged.intObj sumOfProperty:@"self"], @0);
- XCTAssertEqualObjects([optManaged.floatObj sumOfProperty:@"self"], @0);
- XCTAssertEqualObjects([optManaged.doubleObj sumOfProperty:@"self"], @0);
- [unmanaged.intObj addObjects:@[@2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3]];
- [optUnmanaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [managed.intObj addObjects:@[@2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3]];
- [optManaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- XCTAssertEqualObjects([unmanaged.intObj sumOfProperty:@"self"], @(2 + 3));
- XCTAssertEqualObjects([unmanaged.floatObj sumOfProperty:@"self"], @(2.2f + 3.3f));
- XCTAssertEqualObjects([unmanaged.doubleObj sumOfProperty:@"self"], @(2.2 + 3.3));
- XCTAssertEqualObjects([optUnmanaged.intObj sumOfProperty:@"self"], @(2 + 3));
- XCTAssertEqualObjects([optUnmanaged.floatObj sumOfProperty:@"self"], @(2.2f + 3.3f));
- XCTAssertEqualObjects([optUnmanaged.doubleObj sumOfProperty:@"self"], @(2.2 + 3.3));
- XCTAssertEqualObjects([managed.intObj sumOfProperty:@"self"], @(2 + 3));
- XCTAssertEqualObjects([managed.floatObj sumOfProperty:@"self"], @(2.2f + 3.3f));
- XCTAssertEqualObjects([managed.doubleObj sumOfProperty:@"self"], @(2.2 + 3.3));
- XCTAssertEqualObjects([optManaged.intObj sumOfProperty:@"self"], @(2 + 3));
- XCTAssertEqualObjects([optManaged.floatObj sumOfProperty:@"self"], @(2.2f + 3.3f));
- XCTAssertEqualObjects([optManaged.doubleObj sumOfProperty:@"self"], @(2.2 + 3.3));
- }
- - (void)testAverage {
- RLMAssertThrowsWithReason([unmanaged.boolObj averageOfProperty:@"self"],
- @"averageOfProperty: is not supported for bool array");
- RLMAssertThrowsWithReason([unmanaged.stringObj averageOfProperty:@"self"],
- @"averageOfProperty: is not supported for string array");
- RLMAssertThrowsWithReason([unmanaged.dataObj averageOfProperty:@"self"],
- @"averageOfProperty: is not supported for data array");
- RLMAssertThrowsWithReason([unmanaged.dateObj averageOfProperty:@"self"],
- @"averageOfProperty: is not supported for date array");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj averageOfProperty:@"self"],
- @"averageOfProperty: is not supported for bool? array");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj averageOfProperty:@"self"],
- @"averageOfProperty: is not supported for string? array");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj averageOfProperty:@"self"],
- @"averageOfProperty: is not supported for data? array");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj averageOfProperty:@"self"],
- @"averageOfProperty: is not supported for date? array");
- RLMAssertThrowsWithReason([managed.boolObj averageOfProperty:@"self"],
- @"averageOfProperty: is not supported for bool array 'AllPrimitiveArrays.boolObj'");
- RLMAssertThrowsWithReason([managed.stringObj averageOfProperty:@"self"],
- @"averageOfProperty: is not supported for string array 'AllPrimitiveArrays.stringObj'");
- RLMAssertThrowsWithReason([managed.dataObj averageOfProperty:@"self"],
- @"averageOfProperty: is not supported for data array 'AllPrimitiveArrays.dataObj'");
- RLMAssertThrowsWithReason([managed.dateObj averageOfProperty:@"self"],
- @"averageOfProperty: is not supported for date array 'AllPrimitiveArrays.dateObj'");
- RLMAssertThrowsWithReason([optManaged.boolObj averageOfProperty:@"self"],
- @"averageOfProperty: is not supported for bool? array 'AllOptionalPrimitiveArrays.boolObj'");
- RLMAssertThrowsWithReason([optManaged.stringObj averageOfProperty:@"self"],
- @"averageOfProperty: is not supported for string? array 'AllOptionalPrimitiveArrays.stringObj'");
- RLMAssertThrowsWithReason([optManaged.dataObj averageOfProperty:@"self"],
- @"averageOfProperty: is not supported for data? array 'AllOptionalPrimitiveArrays.dataObj'");
- RLMAssertThrowsWithReason([optManaged.dateObj averageOfProperty:@"self"],
- @"averageOfProperty: is not supported for date? array 'AllOptionalPrimitiveArrays.dateObj'");
- XCTAssertNil([unmanaged.intObj averageOfProperty:@"self"]);
- XCTAssertNil([unmanaged.floatObj averageOfProperty:@"self"]);
- XCTAssertNil([unmanaged.doubleObj averageOfProperty:@"self"]);
- XCTAssertNil([optUnmanaged.intObj averageOfProperty:@"self"]);
- XCTAssertNil([optUnmanaged.floatObj averageOfProperty:@"self"]);
- XCTAssertNil([optUnmanaged.doubleObj averageOfProperty:@"self"]);
- XCTAssertNil([managed.intObj averageOfProperty:@"self"]);
- XCTAssertNil([managed.floatObj averageOfProperty:@"self"]);
- XCTAssertNil([managed.doubleObj averageOfProperty:@"self"]);
- XCTAssertNil([optManaged.intObj averageOfProperty:@"self"]);
- XCTAssertNil([optManaged.floatObj averageOfProperty:@"self"]);
- XCTAssertNil([optManaged.doubleObj averageOfProperty:@"self"]);
- [unmanaged.intObj addObjects:@[@2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3]];
- [optUnmanaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [managed.intObj addObjects:@[@2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3]];
- [optManaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- XCTAssertEqualWithAccuracy([unmanaged.intObj averageOfProperty:@"self"].doubleValue, (2 + 3) / 2.0, .001);
- XCTAssertEqualWithAccuracy([unmanaged.floatObj averageOfProperty:@"self"].doubleValue, (2.2f + 3.3f) / 2.0, .001);
- XCTAssertEqualWithAccuracy([unmanaged.doubleObj averageOfProperty:@"self"].doubleValue, (2.2 + 3.3) / 2.0, .001);
- XCTAssertEqualWithAccuracy([optUnmanaged.intObj averageOfProperty:@"self"].doubleValue, (2 + 3) / 2.0, .001);
- XCTAssertEqualWithAccuracy([optUnmanaged.floatObj averageOfProperty:@"self"].doubleValue, (2.2f + 3.3f) / 2.0, .001);
- XCTAssertEqualWithAccuracy([optUnmanaged.doubleObj averageOfProperty:@"self"].doubleValue, (2.2 + 3.3) / 2.0, .001);
- XCTAssertEqualWithAccuracy([managed.intObj averageOfProperty:@"self"].doubleValue, (2 + 3) / 2.0, .001);
- XCTAssertEqualWithAccuracy([managed.floatObj averageOfProperty:@"self"].doubleValue, (2.2f + 3.3f) / 2.0, .001);
- XCTAssertEqualWithAccuracy([managed.doubleObj averageOfProperty:@"self"].doubleValue, (2.2 + 3.3) / 2.0, .001);
- XCTAssertEqualWithAccuracy([optManaged.intObj averageOfProperty:@"self"].doubleValue, (2 + 3) / 2.0, .001);
- XCTAssertEqualWithAccuracy([optManaged.floatObj averageOfProperty:@"self"].doubleValue, (2.2f + 3.3f) / 2.0, .001);
- XCTAssertEqualWithAccuracy([optManaged.doubleObj averageOfProperty:@"self"].doubleValue, (2.2 + 3.3) / 2.0, .001);
- }
- - (void)testFastEnumeration {
- for (int i = 0; i < 10; ++i) {
- [unmanaged.boolObj addObjects:@[@NO, @YES]];
- [unmanaged.intObj addObjects:@[@2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3]];
- [unmanaged.stringObj addObjects:@[@"a", @"b"]];
- [unmanaged.dataObj addObjects:@[data(1), data(2)]];
- [unmanaged.dateObj addObjects:@[date(1), date(2)]];
- [optUnmanaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optUnmanaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optUnmanaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optUnmanaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optUnmanaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- [managed.boolObj addObjects:@[@NO, @YES]];
- [managed.intObj addObjects:@[@2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3]];
- [managed.stringObj addObjects:@[@"a", @"b"]];
- [managed.dataObj addObjects:@[data(1), data(2)]];
- [managed.dateObj addObjects:@[date(1), date(2)]];
- [optManaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optManaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optManaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optManaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optManaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- }
- {
- NSUInteger i = 0;
- NSArray *values = @[@NO, @YES];
- for (id value in unmanaged.boolObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, unmanaged.boolObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@2, @3];
- for (id value in unmanaged.intObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, unmanaged.intObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@2.2f, @3.3f];
- for (id value in unmanaged.floatObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, unmanaged.floatObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@2.2, @3.3];
- for (id value in unmanaged.doubleObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, unmanaged.doubleObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@"a", @"b"];
- for (id value in unmanaged.stringObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, unmanaged.stringObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[data(1), data(2)];
- for (id value in unmanaged.dataObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, unmanaged.dataObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[date(1), date(2)];
- for (id value in unmanaged.dateObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, unmanaged.dateObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@NO, @YES, NSNull.null];
- for (id value in optUnmanaged.boolObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, optUnmanaged.boolObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@2, @3, NSNull.null];
- for (id value in optUnmanaged.intObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, optUnmanaged.intObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@2.2f, @3.3f, NSNull.null];
- for (id value in optUnmanaged.floatObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, optUnmanaged.floatObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@2.2, @3.3, NSNull.null];
- for (id value in optUnmanaged.doubleObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, optUnmanaged.doubleObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@"a", @"b", NSNull.null];
- for (id value in optUnmanaged.stringObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, optUnmanaged.stringObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[data(1), data(2), NSNull.null];
- for (id value in optUnmanaged.dataObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, optUnmanaged.dataObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[date(1), date(2), NSNull.null];
- for (id value in optUnmanaged.dateObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, optUnmanaged.dateObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@NO, @YES];
- for (id value in managed.boolObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, managed.boolObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@2, @3];
- for (id value in managed.intObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, managed.intObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@2.2f, @3.3f];
- for (id value in managed.floatObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, managed.floatObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@2.2, @3.3];
- for (id value in managed.doubleObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, managed.doubleObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@"a", @"b"];
- for (id value in managed.stringObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, managed.stringObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[data(1), data(2)];
- for (id value in managed.dataObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, managed.dataObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[date(1), date(2)];
- for (id value in managed.dateObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, managed.dateObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@NO, @YES, NSNull.null];
- for (id value in optManaged.boolObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, optManaged.boolObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@2, @3, NSNull.null];
- for (id value in optManaged.intObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, optManaged.intObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@2.2f, @3.3f, NSNull.null];
- for (id value in optManaged.floatObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, optManaged.floatObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@2.2, @3.3, NSNull.null];
- for (id value in optManaged.doubleObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, optManaged.doubleObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[@"a", @"b", NSNull.null];
- for (id value in optManaged.stringObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, optManaged.stringObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[data(1), data(2), NSNull.null];
- for (id value in optManaged.dataObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, optManaged.dataObj.count);
- }
-
- {
- NSUInteger i = 0;
- NSArray *values = @[date(1), date(2), NSNull.null];
- for (id value in optManaged.dateObj) {
- XCTAssertEqualObjects(values[i++ % values.count], value);
- }
- XCTAssertEqual(i, optManaged.dateObj.count);
- }
-
- }
- - (void)testValueForKeySelf {
- XCTAssertEqualObjects([unmanaged.boolObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([unmanaged.intObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([unmanaged.floatObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([unmanaged.doubleObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([unmanaged.stringObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([unmanaged.dataObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([unmanaged.dateObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.boolObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.intObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.floatObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.doubleObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.stringObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.dataObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.dateObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([managed.boolObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([managed.intObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([managed.floatObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([managed.doubleObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([managed.stringObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([managed.dataObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([managed.dateObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([optManaged.boolObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([optManaged.intObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([optManaged.floatObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([optManaged.doubleObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([optManaged.stringObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([optManaged.dataObj valueForKey:@"self"], @[]);
- XCTAssertEqualObjects([optManaged.dateObj valueForKey:@"self"], @[]);
- [unmanaged.boolObj addObjects:@[@NO, @YES]];
- [unmanaged.intObj addObjects:@[@2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3]];
- [unmanaged.stringObj addObjects:@[@"a", @"b"]];
- [unmanaged.dataObj addObjects:@[data(1), data(2)]];
- [unmanaged.dateObj addObjects:@[date(1), date(2)]];
- [optUnmanaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optUnmanaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optUnmanaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optUnmanaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optUnmanaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- [managed.boolObj addObjects:@[@NO, @YES]];
- [managed.intObj addObjects:@[@2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3]];
- [managed.stringObj addObjects:@[@"a", @"b"]];
- [managed.dataObj addObjects:@[data(1), data(2)]];
- [managed.dateObj addObjects:@[date(1), date(2)]];
- [optManaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optManaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optManaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optManaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optManaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- XCTAssertEqualObjects([unmanaged.boolObj valueForKey:@"self"], (@[@NO, @YES]));
- XCTAssertEqualObjects([unmanaged.intObj valueForKey:@"self"], (@[@2, @3]));
- XCTAssertEqualObjects([unmanaged.floatObj valueForKey:@"self"], (@[@2.2f, @3.3f]));
- XCTAssertEqualObjects([unmanaged.doubleObj valueForKey:@"self"], (@[@2.2, @3.3]));
- XCTAssertEqualObjects([unmanaged.stringObj valueForKey:@"self"], (@[@"a", @"b"]));
- XCTAssertEqualObjects([unmanaged.dataObj valueForKey:@"self"], (@[data(1), data(2)]));
- XCTAssertEqualObjects([unmanaged.dateObj valueForKey:@"self"], (@[date(1), date(2)]));
- XCTAssertEqualObjects([optUnmanaged.boolObj valueForKey:@"self"], (@[@NO, @YES, NSNull.null]));
- XCTAssertEqualObjects([optUnmanaged.intObj valueForKey:@"self"], (@[@2, @3, NSNull.null]));
- XCTAssertEqualObjects([optUnmanaged.floatObj valueForKey:@"self"], (@[@2.2f, @3.3f, NSNull.null]));
- XCTAssertEqualObjects([optUnmanaged.doubleObj valueForKey:@"self"], (@[@2.2, @3.3, NSNull.null]));
- XCTAssertEqualObjects([optUnmanaged.stringObj valueForKey:@"self"], (@[@"a", @"b", NSNull.null]));
- XCTAssertEqualObjects([optUnmanaged.dataObj valueForKey:@"self"], (@[data(1), data(2), NSNull.null]));
- XCTAssertEqualObjects([optUnmanaged.dateObj valueForKey:@"self"], (@[date(1), date(2), NSNull.null]));
- XCTAssertEqualObjects([managed.boolObj valueForKey:@"self"], (@[@NO, @YES]));
- XCTAssertEqualObjects([managed.intObj valueForKey:@"self"], (@[@2, @3]));
- XCTAssertEqualObjects([managed.floatObj valueForKey:@"self"], (@[@2.2f, @3.3f]));
- XCTAssertEqualObjects([managed.doubleObj valueForKey:@"self"], (@[@2.2, @3.3]));
- XCTAssertEqualObjects([managed.stringObj valueForKey:@"self"], (@[@"a", @"b"]));
- XCTAssertEqualObjects([managed.dataObj valueForKey:@"self"], (@[data(1), data(2)]));
- XCTAssertEqualObjects([managed.dateObj valueForKey:@"self"], (@[date(1), date(2)]));
- XCTAssertEqualObjects([optManaged.boolObj valueForKey:@"self"], (@[@NO, @YES, NSNull.null]));
- XCTAssertEqualObjects([optManaged.intObj valueForKey:@"self"], (@[@2, @3, NSNull.null]));
- XCTAssertEqualObjects([optManaged.floatObj valueForKey:@"self"], (@[@2.2f, @3.3f, NSNull.null]));
- XCTAssertEqualObjects([optManaged.doubleObj valueForKey:@"self"], (@[@2.2, @3.3, NSNull.null]));
- XCTAssertEqualObjects([optManaged.stringObj valueForKey:@"self"], (@[@"a", @"b", NSNull.null]));
- XCTAssertEqualObjects([optManaged.dataObj valueForKey:@"self"], (@[data(1), data(2), NSNull.null]));
- XCTAssertEqualObjects([optManaged.dateObj valueForKey:@"self"], (@[date(1), date(2), NSNull.null]));
- }
- - (void)testValueForKeyNumericAggregates {
- XCTAssertNil([unmanaged.intObj valueForKeyPath:@"@min.self"]);
- XCTAssertNil([unmanaged.floatObj valueForKeyPath:@"@min.self"]);
- XCTAssertNil([unmanaged.doubleObj valueForKeyPath:@"@min.self"]);
- XCTAssertNil([unmanaged.dateObj valueForKeyPath:@"@min.self"]);
- XCTAssertNil([optUnmanaged.intObj valueForKeyPath:@"@min.self"]);
- XCTAssertNil([optUnmanaged.floatObj valueForKeyPath:@"@min.self"]);
- XCTAssertNil([optUnmanaged.doubleObj valueForKeyPath:@"@min.self"]);
- XCTAssertNil([optUnmanaged.dateObj valueForKeyPath:@"@min.self"]);
- XCTAssertNil([managed.intObj valueForKeyPath:@"@min.self"]);
- XCTAssertNil([managed.floatObj valueForKeyPath:@"@min.self"]);
- XCTAssertNil([managed.doubleObj valueForKeyPath:@"@min.self"]);
- XCTAssertNil([managed.dateObj valueForKeyPath:@"@min.self"]);
- XCTAssertNil([optManaged.intObj valueForKeyPath:@"@min.self"]);
- XCTAssertNil([optManaged.floatObj valueForKeyPath:@"@min.self"]);
- XCTAssertNil([optManaged.doubleObj valueForKeyPath:@"@min.self"]);
- XCTAssertNil([optManaged.dateObj valueForKeyPath:@"@min.self"]);
- XCTAssertNil([unmanaged.intObj valueForKeyPath:@"@max.self"]);
- XCTAssertNil([unmanaged.floatObj valueForKeyPath:@"@max.self"]);
- XCTAssertNil([unmanaged.doubleObj valueForKeyPath:@"@max.self"]);
- XCTAssertNil([unmanaged.dateObj valueForKeyPath:@"@max.self"]);
- XCTAssertNil([optUnmanaged.intObj valueForKeyPath:@"@max.self"]);
- XCTAssertNil([optUnmanaged.floatObj valueForKeyPath:@"@max.self"]);
- XCTAssertNil([optUnmanaged.doubleObj valueForKeyPath:@"@max.self"]);
- XCTAssertNil([optUnmanaged.dateObj valueForKeyPath:@"@max.self"]);
- XCTAssertNil([managed.intObj valueForKeyPath:@"@max.self"]);
- XCTAssertNil([managed.floatObj valueForKeyPath:@"@max.self"]);
- XCTAssertNil([managed.doubleObj valueForKeyPath:@"@max.self"]);
- XCTAssertNil([managed.dateObj valueForKeyPath:@"@max.self"]);
- XCTAssertNil([optManaged.intObj valueForKeyPath:@"@max.self"]);
- XCTAssertNil([optManaged.floatObj valueForKeyPath:@"@max.self"]);
- XCTAssertNil([optManaged.doubleObj valueForKeyPath:@"@max.self"]);
- XCTAssertNil([optManaged.dateObj valueForKeyPath:@"@max.self"]);
- XCTAssertEqualObjects([unmanaged.intObj valueForKeyPath:@"@sum.self"], @0);
- XCTAssertEqualObjects([unmanaged.floatObj valueForKeyPath:@"@sum.self"], @0);
- XCTAssertEqualObjects([unmanaged.doubleObj valueForKeyPath:@"@sum.self"], @0);
- XCTAssertEqualObjects([optUnmanaged.intObj valueForKeyPath:@"@sum.self"], @0);
- XCTAssertEqualObjects([optUnmanaged.floatObj valueForKeyPath:@"@sum.self"], @0);
- XCTAssertEqualObjects([optUnmanaged.doubleObj valueForKeyPath:@"@sum.self"], @0);
- XCTAssertEqualObjects([managed.intObj valueForKeyPath:@"@sum.self"], @0);
- XCTAssertEqualObjects([managed.floatObj valueForKeyPath:@"@sum.self"], @0);
- XCTAssertEqualObjects([managed.doubleObj valueForKeyPath:@"@sum.self"], @0);
- XCTAssertEqualObjects([optManaged.intObj valueForKeyPath:@"@sum.self"], @0);
- XCTAssertEqualObjects([optManaged.floatObj valueForKeyPath:@"@sum.self"], @0);
- XCTAssertEqualObjects([optManaged.doubleObj valueForKeyPath:@"@sum.self"], @0);
- XCTAssertNil([unmanaged.intObj valueForKeyPath:@"@avg.self"]);
- XCTAssertNil([unmanaged.floatObj valueForKeyPath:@"@avg.self"]);
- XCTAssertNil([unmanaged.doubleObj valueForKeyPath:@"@avg.self"]);
- XCTAssertNil([optUnmanaged.intObj valueForKeyPath:@"@avg.self"]);
- XCTAssertNil([optUnmanaged.floatObj valueForKeyPath:@"@avg.self"]);
- XCTAssertNil([optUnmanaged.doubleObj valueForKeyPath:@"@avg.self"]);
- XCTAssertNil([managed.intObj valueForKeyPath:@"@avg.self"]);
- XCTAssertNil([managed.floatObj valueForKeyPath:@"@avg.self"]);
- XCTAssertNil([managed.doubleObj valueForKeyPath:@"@avg.self"]);
- XCTAssertNil([optManaged.intObj valueForKeyPath:@"@avg.self"]);
- XCTAssertNil([optManaged.floatObj valueForKeyPath:@"@avg.self"]);
- XCTAssertNil([optManaged.doubleObj valueForKeyPath:@"@avg.self"]);
- [unmanaged.boolObj addObjects:@[@NO, @YES]];
- [unmanaged.intObj addObjects:@[@2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3]];
- [unmanaged.stringObj addObjects:@[@"a", @"b"]];
- [unmanaged.dataObj addObjects:@[data(1), data(2)]];
- [unmanaged.dateObj addObjects:@[date(1), date(2)]];
- [optUnmanaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optUnmanaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optUnmanaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optUnmanaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optUnmanaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- [managed.boolObj addObjects:@[@NO, @YES]];
- [managed.intObj addObjects:@[@2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3]];
- [managed.stringObj addObjects:@[@"a", @"b"]];
- [managed.dataObj addObjects:@[data(1), data(2)]];
- [managed.dateObj addObjects:@[date(1), date(2)]];
- [optManaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optManaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optManaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optManaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optManaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- XCTAssertEqualObjects([unmanaged.intObj valueForKeyPath:@"@min.self"], @2);
- XCTAssertEqualObjects([unmanaged.floatObj valueForKeyPath:@"@min.self"], @2.2f);
- XCTAssertEqualObjects([unmanaged.doubleObj valueForKeyPath:@"@min.self"], @2.2);
- XCTAssertEqualObjects([unmanaged.dateObj valueForKeyPath:@"@min.self"], date(1));
- XCTAssertEqualObjects([optUnmanaged.intObj valueForKeyPath:@"@min.self"], @2);
- XCTAssertEqualObjects([optUnmanaged.floatObj valueForKeyPath:@"@min.self"], @2.2f);
- XCTAssertEqualObjects([optUnmanaged.doubleObj valueForKeyPath:@"@min.self"], @2.2);
- XCTAssertEqualObjects([optUnmanaged.dateObj valueForKeyPath:@"@min.self"], date(1));
- XCTAssertEqualObjects([managed.intObj valueForKeyPath:@"@min.self"], @2);
- XCTAssertEqualObjects([managed.floatObj valueForKeyPath:@"@min.self"], @2.2f);
- XCTAssertEqualObjects([managed.doubleObj valueForKeyPath:@"@min.self"], @2.2);
- XCTAssertEqualObjects([managed.dateObj valueForKeyPath:@"@min.self"], date(1));
- XCTAssertEqualObjects([optManaged.intObj valueForKeyPath:@"@min.self"], @2);
- XCTAssertEqualObjects([optManaged.floatObj valueForKeyPath:@"@min.self"], @2.2f);
- XCTAssertEqualObjects([optManaged.doubleObj valueForKeyPath:@"@min.self"], @2.2);
- XCTAssertEqualObjects([optManaged.dateObj valueForKeyPath:@"@min.self"], date(1));
- XCTAssertEqualObjects([unmanaged.intObj valueForKeyPath:@"@max.self"], @3);
- XCTAssertEqualObjects([unmanaged.floatObj valueForKeyPath:@"@max.self"], @3.3f);
- XCTAssertEqualObjects([unmanaged.doubleObj valueForKeyPath:@"@max.self"], @3.3);
- XCTAssertEqualObjects([unmanaged.dateObj valueForKeyPath:@"@max.self"], date(2));
- XCTAssertEqualObjects([optUnmanaged.intObj valueForKeyPath:@"@max.self"], @3);
- XCTAssertEqualObjects([optUnmanaged.floatObj valueForKeyPath:@"@max.self"], @3.3f);
- XCTAssertEqualObjects([optUnmanaged.doubleObj valueForKeyPath:@"@max.self"], @3.3);
- XCTAssertEqualObjects([optUnmanaged.dateObj valueForKeyPath:@"@max.self"], date(2));
- XCTAssertEqualObjects([managed.intObj valueForKeyPath:@"@max.self"], @3);
- XCTAssertEqualObjects([managed.floatObj valueForKeyPath:@"@max.self"], @3.3f);
- XCTAssertEqualObjects([managed.doubleObj valueForKeyPath:@"@max.self"], @3.3);
- XCTAssertEqualObjects([managed.dateObj valueForKeyPath:@"@max.self"], date(2));
- XCTAssertEqualObjects([optManaged.intObj valueForKeyPath:@"@max.self"], @3);
- XCTAssertEqualObjects([optManaged.floatObj valueForKeyPath:@"@max.self"], @3.3f);
- XCTAssertEqualObjects([optManaged.doubleObj valueForKeyPath:@"@max.self"], @3.3);
- XCTAssertEqualObjects([optManaged.dateObj valueForKeyPath:@"@max.self"], date(2));
- XCTAssertEqualObjects([unmanaged.intObj valueForKeyPath:@"@sum.self"], @(2 + 3));
- XCTAssertEqualObjects([unmanaged.floatObj valueForKeyPath:@"@sum.self"], @(2.2f + 3.3f));
- XCTAssertEqualObjects([unmanaged.doubleObj valueForKeyPath:@"@sum.self"], @(2.2 + 3.3));
- XCTAssertEqualObjects([optUnmanaged.intObj valueForKeyPath:@"@sum.self"], @(2 + 3));
- XCTAssertEqualObjects([optUnmanaged.floatObj valueForKeyPath:@"@sum.self"], @(2.2f + 3.3f));
- XCTAssertEqualObjects([optUnmanaged.doubleObj valueForKeyPath:@"@sum.self"], @(2.2 + 3.3));
- XCTAssertEqualObjects([managed.intObj valueForKeyPath:@"@sum.self"], @(2 + 3));
- XCTAssertEqualObjects([managed.floatObj valueForKeyPath:@"@sum.self"], @(2.2f + 3.3f));
- XCTAssertEqualObjects([managed.doubleObj valueForKeyPath:@"@sum.self"], @(2.2 + 3.3));
- XCTAssertEqualObjects([optManaged.intObj valueForKeyPath:@"@sum.self"], @(2 + 3));
- XCTAssertEqualObjects([optManaged.floatObj valueForKeyPath:@"@sum.self"], @(2.2f + 3.3f));
- XCTAssertEqualObjects([optManaged.doubleObj valueForKeyPath:@"@sum.self"], @(2.2 + 3.3));
- XCTAssertEqualWithAccuracy([[unmanaged.intObj valueForKeyPath:@"@avg.self"] doubleValue], (2 + 3) / 2.0, .001);
- XCTAssertEqualWithAccuracy([[unmanaged.floatObj valueForKeyPath:@"@avg.self"] doubleValue], (2.2f + 3.3f) / 2.0, .001);
- XCTAssertEqualWithAccuracy([[unmanaged.doubleObj valueForKeyPath:@"@avg.self"] doubleValue], (2.2 + 3.3) / 2.0, .001);
- XCTAssertEqualWithAccuracy([[optUnmanaged.intObj valueForKeyPath:@"@avg.self"] doubleValue], (2 + 3) / 2.0, .001);
- XCTAssertEqualWithAccuracy([[optUnmanaged.floatObj valueForKeyPath:@"@avg.self"] doubleValue], (2.2f + 3.3f) / 2.0, .001);
- XCTAssertEqualWithAccuracy([[optUnmanaged.doubleObj valueForKeyPath:@"@avg.self"] doubleValue], (2.2 + 3.3) / 2.0, .001);
- XCTAssertEqualWithAccuracy([[managed.intObj valueForKeyPath:@"@avg.self"] doubleValue], (2 + 3) / 2.0, .001);
- XCTAssertEqualWithAccuracy([[managed.floatObj valueForKeyPath:@"@avg.self"] doubleValue], (2.2f + 3.3f) / 2.0, .001);
- XCTAssertEqualWithAccuracy([[managed.doubleObj valueForKeyPath:@"@avg.self"] doubleValue], (2.2 + 3.3) / 2.0, .001);
- XCTAssertEqualWithAccuracy([[optManaged.intObj valueForKeyPath:@"@avg.self"] doubleValue], (2 + 3) / 2.0, .001);
- XCTAssertEqualWithAccuracy([[optManaged.floatObj valueForKeyPath:@"@avg.self"] doubleValue], (2.2f + 3.3f) / 2.0, .001);
- XCTAssertEqualWithAccuracy([[optManaged.doubleObj valueForKeyPath:@"@avg.self"] doubleValue], (2.2 + 3.3) / 2.0, .001);
- }
- - (void)testValueForKeyLength {
- XCTAssertEqualObjects([unmanaged.boolObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([unmanaged.intObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([unmanaged.floatObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([unmanaged.doubleObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([unmanaged.stringObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([unmanaged.dataObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([unmanaged.dateObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([optUnmanaged.boolObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([optUnmanaged.intObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([optUnmanaged.floatObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([optUnmanaged.doubleObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([optUnmanaged.stringObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([optUnmanaged.dataObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([optUnmanaged.dateObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([managed.boolObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([managed.intObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([managed.floatObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([managed.doubleObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([managed.stringObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([managed.dataObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([managed.dateObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([optManaged.boolObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([optManaged.intObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([optManaged.floatObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([optManaged.doubleObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([optManaged.stringObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([optManaged.dataObj valueForKey:@"length"], @[]);
- XCTAssertEqualObjects([optManaged.dateObj valueForKey:@"length"], @[]);
- [unmanaged.stringObj addObjects:@[@"a", @"b"]];
- [managed.stringObj addObjects:@[@"a", @"b"]];
- XCTAssertEqualObjects([unmanaged.stringObj valueForKey:@"length"], ([@[@"a", @"b"] valueForKey:@"length"]));
- XCTAssertEqualObjects([managed.stringObj valueForKey:@"length"], ([@[@"a", @"b"] valueForKey:@"length"]));
- }
- // Sort the distinct results to match the order used in values, as it
- // doesn't preserve the order naturally
- static NSArray *sortedDistinctUnion(id array, NSString *type, NSString *prop) {
- return [[array valueForKeyPath:[NSString stringWithFormat:@"@distinctUnionOf%@.%@", type, prop]]
- sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
- bool aIsNull = a == NSNull.null;
- bool bIsNull = b == NSNull.null;
- if (aIsNull && bIsNull) {
- return 0;
- }
- if (aIsNull) {
- return 1;
- }
- if (bIsNull) {
- return -1;
- }
- if ([a isKindOfClass:[NSData class]]) {
- if ([a length] != [b length]) {
- return [a length] < [b length] ? -1 : 1;
- }
- int result = memcmp([a bytes], [b bytes], [a length]);
- if (!result) {
- return 0;
- }
- return result < 0 ? -1 : 1;
- }
- return [a compare:b];
- }];
- }
- - (void)testUnionOfObjects {
- XCTAssertEqualObjects([unmanaged.boolObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([unmanaged.intObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([unmanaged.floatObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([unmanaged.doubleObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([unmanaged.stringObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([unmanaged.dataObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([unmanaged.dateObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.boolObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.intObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.floatObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.doubleObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.stringObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.dataObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.dateObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([managed.boolObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([managed.intObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([managed.floatObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([managed.doubleObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([managed.stringObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([managed.dataObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([managed.dateObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optManaged.boolObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optManaged.intObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optManaged.floatObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optManaged.doubleObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optManaged.stringObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optManaged.dataObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optManaged.dateObj valueForKeyPath:@"@unionOfObjects.self"], @[]);
- XCTAssertEqualObjects([unmanaged.boolObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([unmanaged.intObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([unmanaged.floatObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([unmanaged.doubleObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([unmanaged.stringObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([unmanaged.dataObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([unmanaged.dateObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.boolObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.intObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.floatObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.doubleObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.stringObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.dataObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optUnmanaged.dateObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([managed.boolObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([managed.intObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([managed.floatObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([managed.doubleObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([managed.stringObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([managed.dataObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([managed.dateObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optManaged.boolObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optManaged.intObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optManaged.floatObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optManaged.doubleObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optManaged.stringObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optManaged.dataObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- XCTAssertEqualObjects([optManaged.dateObj valueForKeyPath:@"@distinctUnionOfObjects.self"], @[]);
- [unmanaged.boolObj addObjects:@[@NO, @YES, @NO, @YES]];
- [unmanaged.intObj addObjects:@[@2, @3, @2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f, @2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3, @2.2, @3.3]];
- [unmanaged.stringObj addObjects:@[@"a", @"b", @"a", @"b"]];
- [unmanaged.dataObj addObjects:@[data(1), data(2), data(1), data(2)]];
- [unmanaged.dateObj addObjects:@[date(1), date(2), date(1), date(2)]];
- [optUnmanaged.boolObj addObjects:@[@NO, @YES, NSNull.null, @NO, @YES, NSNull.null]];
- [optUnmanaged.intObj addObjects:@[@2, @3, NSNull.null, @2, @3, NSNull.null]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null, @2.2f, @3.3f, NSNull.null]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null, @2.2, @3.3, NSNull.null]];
- [optUnmanaged.stringObj addObjects:@[@"a", @"b", NSNull.null, @"a", @"b", NSNull.null]];
- [optUnmanaged.dataObj addObjects:@[data(1), data(2), NSNull.null, data(1), data(2), NSNull.null]];
- [optUnmanaged.dateObj addObjects:@[date(1), date(2), NSNull.null, date(1), date(2), NSNull.null]];
- [managed.boolObj addObjects:@[@NO, @YES, @NO, @YES]];
- [managed.intObj addObjects:@[@2, @3, @2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f, @2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3, @2.2, @3.3]];
- [managed.stringObj addObjects:@[@"a", @"b", @"a", @"b"]];
- [managed.dataObj addObjects:@[data(1), data(2), data(1), data(2)]];
- [managed.dateObj addObjects:@[date(1), date(2), date(1), date(2)]];
- [optManaged.boolObj addObjects:@[@NO, @YES, NSNull.null, @NO, @YES, NSNull.null]];
- [optManaged.intObj addObjects:@[@2, @3, NSNull.null, @2, @3, NSNull.null]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null, @2.2f, @3.3f, NSNull.null]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null, @2.2, @3.3, NSNull.null]];
- [optManaged.stringObj addObjects:@[@"a", @"b", NSNull.null, @"a", @"b", NSNull.null]];
- [optManaged.dataObj addObjects:@[data(1), data(2), NSNull.null, data(1), data(2), NSNull.null]];
- [optManaged.dateObj addObjects:@[date(1), date(2), NSNull.null, date(1), date(2), NSNull.null]];
- XCTAssertEqualObjects([unmanaged.boolObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@NO, @YES, @NO, @YES]));
- XCTAssertEqualObjects([unmanaged.intObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@2, @3, @2, @3]));
- XCTAssertEqualObjects([unmanaged.floatObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@2.2f, @3.3f, @2.2f, @3.3f]));
- XCTAssertEqualObjects([unmanaged.doubleObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@2.2, @3.3, @2.2, @3.3]));
- XCTAssertEqualObjects([unmanaged.stringObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@"a", @"b", @"a", @"b"]));
- XCTAssertEqualObjects([unmanaged.dataObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[data(1), data(2), data(1), data(2)]));
- XCTAssertEqualObjects([unmanaged.dateObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[date(1), date(2), date(1), date(2)]));
- XCTAssertEqualObjects([optUnmanaged.boolObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@NO, @YES, NSNull.null, @NO, @YES, NSNull.null]));
- XCTAssertEqualObjects([optUnmanaged.intObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@2, @3, NSNull.null, @2, @3, NSNull.null]));
- XCTAssertEqualObjects([optUnmanaged.floatObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@2.2f, @3.3f, NSNull.null, @2.2f, @3.3f, NSNull.null]));
- XCTAssertEqualObjects([optUnmanaged.doubleObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@2.2, @3.3, NSNull.null, @2.2, @3.3, NSNull.null]));
- XCTAssertEqualObjects([optUnmanaged.stringObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@"a", @"b", NSNull.null, @"a", @"b", NSNull.null]));
- XCTAssertEqualObjects([optUnmanaged.dataObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[data(1), data(2), NSNull.null, data(1), data(2), NSNull.null]));
- XCTAssertEqualObjects([optUnmanaged.dateObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[date(1), date(2), NSNull.null, date(1), date(2), NSNull.null]));
- XCTAssertEqualObjects([managed.boolObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@NO, @YES, @NO, @YES]));
- XCTAssertEqualObjects([managed.intObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@2, @3, @2, @3]));
- XCTAssertEqualObjects([managed.floatObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@2.2f, @3.3f, @2.2f, @3.3f]));
- XCTAssertEqualObjects([managed.doubleObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@2.2, @3.3, @2.2, @3.3]));
- XCTAssertEqualObjects([managed.stringObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@"a", @"b", @"a", @"b"]));
- XCTAssertEqualObjects([managed.dataObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[data(1), data(2), data(1), data(2)]));
- XCTAssertEqualObjects([managed.dateObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[date(1), date(2), date(1), date(2)]));
- XCTAssertEqualObjects([optManaged.boolObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@NO, @YES, NSNull.null, @NO, @YES, NSNull.null]));
- XCTAssertEqualObjects([optManaged.intObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@2, @3, NSNull.null, @2, @3, NSNull.null]));
- XCTAssertEqualObjects([optManaged.floatObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@2.2f, @3.3f, NSNull.null, @2.2f, @3.3f, NSNull.null]));
- XCTAssertEqualObjects([optManaged.doubleObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@2.2, @3.3, NSNull.null, @2.2, @3.3, NSNull.null]));
- XCTAssertEqualObjects([optManaged.stringObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[@"a", @"b", NSNull.null, @"a", @"b", NSNull.null]));
- XCTAssertEqualObjects([optManaged.dataObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[data(1), data(2), NSNull.null, data(1), data(2), NSNull.null]));
- XCTAssertEqualObjects([optManaged.dateObj valueForKeyPath:@"@unionOfObjects.self"],
- (@[date(1), date(2), NSNull.null, date(1), date(2), NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(unmanaged.boolObj, @"Objects", @"self"),
- (@[@NO, @YES]));
- XCTAssertEqualObjects(sortedDistinctUnion(unmanaged.intObj, @"Objects", @"self"),
- (@[@2, @3]));
- XCTAssertEqualObjects(sortedDistinctUnion(unmanaged.floatObj, @"Objects", @"self"),
- (@[@2.2f, @3.3f]));
- XCTAssertEqualObjects(sortedDistinctUnion(unmanaged.doubleObj, @"Objects", @"self"),
- (@[@2.2, @3.3]));
- XCTAssertEqualObjects(sortedDistinctUnion(unmanaged.stringObj, @"Objects", @"self"),
- (@[@"a", @"b"]));
- XCTAssertEqualObjects(sortedDistinctUnion(unmanaged.dataObj, @"Objects", @"self"),
- (@[data(1), data(2)]));
- XCTAssertEqualObjects(sortedDistinctUnion(unmanaged.dateObj, @"Objects", @"self"),
- (@[date(1), date(2)]));
- XCTAssertEqualObjects(sortedDistinctUnion(optUnmanaged.boolObj, @"Objects", @"self"),
- (@[@NO, @YES, NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(optUnmanaged.intObj, @"Objects", @"self"),
- (@[@2, @3, NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(optUnmanaged.floatObj, @"Objects", @"self"),
- (@[@2.2f, @3.3f, NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(optUnmanaged.doubleObj, @"Objects", @"self"),
- (@[@2.2, @3.3, NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(optUnmanaged.stringObj, @"Objects", @"self"),
- (@[@"a", @"b", NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(optUnmanaged.dataObj, @"Objects", @"self"),
- (@[data(1), data(2), NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(optUnmanaged.dateObj, @"Objects", @"self"),
- (@[date(1), date(2), NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(managed.boolObj, @"Objects", @"self"),
- (@[@NO, @YES]));
- XCTAssertEqualObjects(sortedDistinctUnion(managed.intObj, @"Objects", @"self"),
- (@[@2, @3]));
- XCTAssertEqualObjects(sortedDistinctUnion(managed.floatObj, @"Objects", @"self"),
- (@[@2.2f, @3.3f]));
- XCTAssertEqualObjects(sortedDistinctUnion(managed.doubleObj, @"Objects", @"self"),
- (@[@2.2, @3.3]));
- XCTAssertEqualObjects(sortedDistinctUnion(managed.stringObj, @"Objects", @"self"),
- (@[@"a", @"b"]));
- XCTAssertEqualObjects(sortedDistinctUnion(managed.dataObj, @"Objects", @"self"),
- (@[data(1), data(2)]));
- XCTAssertEqualObjects(sortedDistinctUnion(managed.dateObj, @"Objects", @"self"),
- (@[date(1), date(2)]));
- XCTAssertEqualObjects(sortedDistinctUnion(optManaged.boolObj, @"Objects", @"self"),
- (@[@NO, @YES, NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(optManaged.intObj, @"Objects", @"self"),
- (@[@2, @3, NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(optManaged.floatObj, @"Objects", @"self"),
- (@[@2.2f, @3.3f, NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(optManaged.doubleObj, @"Objects", @"self"),
- (@[@2.2, @3.3, NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(optManaged.stringObj, @"Objects", @"self"),
- (@[@"a", @"b", NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(optManaged.dataObj, @"Objects", @"self"),
- (@[data(1), data(2), NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(optManaged.dateObj, @"Objects", @"self"),
- (@[date(1), date(2), NSNull.null]));
- }
- - (void)testUnionOfArrays {
- RLMResults *allRequired = [AllPrimitiveArrays allObjectsInRealm:realm];
- RLMResults *allOptional = [AllOptionalPrimitiveArrays allObjectsInRealm:realm];
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@unionOfArrays.boolObj"], @[]);
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@unionOfArrays.intObj"], @[]);
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@unionOfArrays.floatObj"], @[]);
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@unionOfArrays.doubleObj"], @[]);
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@unionOfArrays.stringObj"], @[]);
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@unionOfArrays.dataObj"], @[]);
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@unionOfArrays.dateObj"], @[]);
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@unionOfArrays.boolObj"], @[]);
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@unionOfArrays.intObj"], @[]);
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@unionOfArrays.floatObj"], @[]);
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@unionOfArrays.doubleObj"], @[]);
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@unionOfArrays.stringObj"], @[]);
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@unionOfArrays.dataObj"], @[]);
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@unionOfArrays.dateObj"], @[]);
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@distinctUnionOfArrays.boolObj"], @[]);
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@distinctUnionOfArrays.intObj"], @[]);
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@distinctUnionOfArrays.floatObj"], @[]);
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@distinctUnionOfArrays.doubleObj"], @[]);
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@distinctUnionOfArrays.stringObj"], @[]);
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@distinctUnionOfArrays.dataObj"], @[]);
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@distinctUnionOfArrays.dateObj"], @[]);
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@distinctUnionOfArrays.boolObj"], @[]);
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@distinctUnionOfArrays.intObj"], @[]);
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@distinctUnionOfArrays.floatObj"], @[]);
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@distinctUnionOfArrays.doubleObj"], @[]);
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@distinctUnionOfArrays.stringObj"], @[]);
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@distinctUnionOfArrays.dataObj"], @[]);
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@distinctUnionOfArrays.dateObj"], @[]);
- [unmanaged.boolObj addObjects:@[@NO, @YES]];
- [unmanaged.intObj addObjects:@[@2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3]];
- [unmanaged.stringObj addObjects:@[@"a", @"b"]];
- [unmanaged.dataObj addObjects:@[data(1), data(2)]];
- [unmanaged.dateObj addObjects:@[date(1), date(2)]];
- [optUnmanaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optUnmanaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optUnmanaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optUnmanaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optUnmanaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- [managed.boolObj addObjects:@[@NO, @YES]];
- [managed.intObj addObjects:@[@2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3]];
- [managed.stringObj addObjects:@[@"a", @"b"]];
- [managed.dataObj addObjects:@[data(1), data(2)]];
- [managed.dateObj addObjects:@[date(1), date(2)]];
- [optManaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optManaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optManaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optManaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optManaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- [AllPrimitiveArrays createInRealm:realm withValue:managed];
- [AllOptionalPrimitiveArrays createInRealm:realm withValue:optManaged];
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@unionOfArrays.boolObj"],
- (@[@NO, @YES, @NO, @YES]));
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@unionOfArrays.intObj"],
- (@[@2, @3, @2, @3]));
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@unionOfArrays.floatObj"],
- (@[@2.2f, @3.3f, @2.2f, @3.3f]));
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@unionOfArrays.doubleObj"],
- (@[@2.2, @3.3, @2.2, @3.3]));
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@unionOfArrays.stringObj"],
- (@[@"a", @"b", @"a", @"b"]));
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@unionOfArrays.dataObj"],
- (@[data(1), data(2), data(1), data(2)]));
- XCTAssertEqualObjects([allRequired valueForKeyPath:@"@unionOfArrays.dateObj"],
- (@[date(1), date(2), date(1), date(2)]));
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@unionOfArrays.boolObj"],
- (@[@NO, @YES, NSNull.null, @NO, @YES, NSNull.null]));
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@unionOfArrays.intObj"],
- (@[@2, @3, NSNull.null, @2, @3, NSNull.null]));
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@unionOfArrays.floatObj"],
- (@[@2.2f, @3.3f, NSNull.null, @2.2f, @3.3f, NSNull.null]));
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@unionOfArrays.doubleObj"],
- (@[@2.2, @3.3, NSNull.null, @2.2, @3.3, NSNull.null]));
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@unionOfArrays.stringObj"],
- (@[@"a", @"b", NSNull.null, @"a", @"b", NSNull.null]));
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@unionOfArrays.dataObj"],
- (@[data(1), data(2), NSNull.null, data(1), data(2), NSNull.null]));
- XCTAssertEqualObjects([allOptional valueForKeyPath:@"@unionOfArrays.dateObj"],
- (@[date(1), date(2), NSNull.null, date(1), date(2), NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(allRequired, @"Arrays", @"boolObj"),
- (@[@NO, @YES]));
- XCTAssertEqualObjects(sortedDistinctUnion(allRequired, @"Arrays", @"intObj"),
- (@[@2, @3]));
- XCTAssertEqualObjects(sortedDistinctUnion(allRequired, @"Arrays", @"floatObj"),
- (@[@2.2f, @3.3f]));
- XCTAssertEqualObjects(sortedDistinctUnion(allRequired, @"Arrays", @"doubleObj"),
- (@[@2.2, @3.3]));
- XCTAssertEqualObjects(sortedDistinctUnion(allRequired, @"Arrays", @"stringObj"),
- (@[@"a", @"b"]));
- XCTAssertEqualObjects(sortedDistinctUnion(allRequired, @"Arrays", @"dataObj"),
- (@[data(1), data(2)]));
- XCTAssertEqualObjects(sortedDistinctUnion(allRequired, @"Arrays", @"dateObj"),
- (@[date(1), date(2)]));
- XCTAssertEqualObjects(sortedDistinctUnion(allOptional, @"Arrays", @"boolObj"),
- (@[@NO, @YES, NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(allOptional, @"Arrays", @"intObj"),
- (@[@2, @3, NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(allOptional, @"Arrays", @"floatObj"),
- (@[@2.2f, @3.3f, NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(allOptional, @"Arrays", @"doubleObj"),
- (@[@2.2, @3.3, NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(allOptional, @"Arrays", @"stringObj"),
- (@[@"a", @"b", NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(allOptional, @"Arrays", @"dataObj"),
- (@[data(1), data(2), NSNull.null]));
- XCTAssertEqualObjects(sortedDistinctUnion(allOptional, @"Arrays", @"dateObj"),
- (@[date(1), date(2), NSNull.null]));
- }
- - (void)testSetValueForKey {
- RLMAssertThrowsWithReason([unmanaged.boolObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([unmanaged.intObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([unmanaged.floatObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([unmanaged.doubleObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([unmanaged.stringObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([unmanaged.dataObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([unmanaged.dateObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([optUnmanaged.intObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([managed.boolObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([managed.intObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([managed.floatObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([managed.doubleObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([managed.stringObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([managed.dataObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([managed.dateObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([optManaged.boolObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([optManaged.intObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([optManaged.floatObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([optManaged.doubleObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([optManaged.stringObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([optManaged.dataObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([optManaged.dateObj setValue:@0 forKey:@"not self"],
- @"this class is not key value coding-compliant for the key not self.");
- RLMAssertThrowsWithReason([unmanaged.boolObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool'");
- RLMAssertThrowsWithReason([unmanaged.intObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int'");
- RLMAssertThrowsWithReason([unmanaged.floatObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float'");
- RLMAssertThrowsWithReason([unmanaged.doubleObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double'");
- RLMAssertThrowsWithReason([unmanaged.stringObj setValue:@2 forKey:@"self"],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string'");
- RLMAssertThrowsWithReason([unmanaged.dataObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data'");
- RLMAssertThrowsWithReason([unmanaged.dateObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date'");
- RLMAssertThrowsWithReason([optUnmanaged.boolObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool?'");
- RLMAssertThrowsWithReason([optUnmanaged.intObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int?'");
- RLMAssertThrowsWithReason([optUnmanaged.floatObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float?'");
- RLMAssertThrowsWithReason([optUnmanaged.doubleObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double?'");
- RLMAssertThrowsWithReason([optUnmanaged.stringObj setValue:@2 forKey:@"self"],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string?'");
- RLMAssertThrowsWithReason([optUnmanaged.dataObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data?'");
- RLMAssertThrowsWithReason([optUnmanaged.dateObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date?'");
- RLMAssertThrowsWithReason([managed.boolObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool'");
- RLMAssertThrowsWithReason([managed.intObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int'");
- RLMAssertThrowsWithReason([managed.floatObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float'");
- RLMAssertThrowsWithReason([managed.doubleObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double'");
- RLMAssertThrowsWithReason([managed.stringObj setValue:@2 forKey:@"self"],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string'");
- RLMAssertThrowsWithReason([managed.dataObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data'");
- RLMAssertThrowsWithReason([managed.dateObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date'");
- RLMAssertThrowsWithReason([optManaged.boolObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'bool?'");
- RLMAssertThrowsWithReason([optManaged.intObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'int?'");
- RLMAssertThrowsWithReason([optManaged.floatObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'float?'");
- RLMAssertThrowsWithReason([optManaged.doubleObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'double?'");
- RLMAssertThrowsWithReason([optManaged.stringObj setValue:@2 forKey:@"self"],
- @"Invalid value '2' of type '__NSCFNumber' for expected type 'string?'");
- RLMAssertThrowsWithReason([optManaged.dataObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'data?'");
- RLMAssertThrowsWithReason([optManaged.dateObj setValue:@"a" forKey:@"self"],
- @"Invalid value 'a' of type '__NSCFConstantString' for expected type 'date?'");
- RLMAssertThrowsWithReason([unmanaged.boolObj setValue:NSNull.null forKey:@"self"],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'bool'");
- RLMAssertThrowsWithReason([unmanaged.intObj setValue:NSNull.null forKey:@"self"],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'int'");
- RLMAssertThrowsWithReason([unmanaged.floatObj setValue:NSNull.null forKey:@"self"],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'float'");
- RLMAssertThrowsWithReason([unmanaged.doubleObj setValue:NSNull.null forKey:@"self"],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'double'");
- RLMAssertThrowsWithReason([unmanaged.stringObj setValue:NSNull.null forKey:@"self"],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'string'");
- RLMAssertThrowsWithReason([unmanaged.dataObj setValue:NSNull.null forKey:@"self"],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'data'");
- RLMAssertThrowsWithReason([unmanaged.dateObj setValue:NSNull.null forKey:@"self"],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'date'");
- RLMAssertThrowsWithReason([managed.boolObj setValue:NSNull.null forKey:@"self"],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'bool'");
- RLMAssertThrowsWithReason([managed.intObj setValue:NSNull.null forKey:@"self"],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'int'");
- RLMAssertThrowsWithReason([managed.floatObj setValue:NSNull.null forKey:@"self"],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'float'");
- RLMAssertThrowsWithReason([managed.doubleObj setValue:NSNull.null forKey:@"self"],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'double'");
- RLMAssertThrowsWithReason([managed.stringObj setValue:NSNull.null forKey:@"self"],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'string'");
- RLMAssertThrowsWithReason([managed.dataObj setValue:NSNull.null forKey:@"self"],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'data'");
- RLMAssertThrowsWithReason([managed.dateObj setValue:NSNull.null forKey:@"self"],
- @"Invalid value '<null>' of type 'NSNull' for expected type 'date'");
- [unmanaged.boolObj addObjects:@[@NO, @YES]];
- [unmanaged.intObj addObjects:@[@2, @3]];
- [unmanaged.floatObj addObjects:@[@2.2f, @3.3f]];
- [unmanaged.doubleObj addObjects:@[@2.2, @3.3]];
- [unmanaged.stringObj addObjects:@[@"a", @"b"]];
- [unmanaged.dataObj addObjects:@[data(1), data(2)]];
- [unmanaged.dateObj addObjects:@[date(1), date(2)]];
- [optUnmanaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optUnmanaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optUnmanaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optUnmanaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optUnmanaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optUnmanaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optUnmanaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- [managed.boolObj addObjects:@[@NO, @YES]];
- [managed.intObj addObjects:@[@2, @3]];
- [managed.floatObj addObjects:@[@2.2f, @3.3f]];
- [managed.doubleObj addObjects:@[@2.2, @3.3]];
- [managed.stringObj addObjects:@[@"a", @"b"]];
- [managed.dataObj addObjects:@[data(1), data(2)]];
- [managed.dateObj addObjects:@[date(1), date(2)]];
- [optManaged.boolObj addObjects:@[@NO, @YES, NSNull.null]];
- [optManaged.intObj addObjects:@[@2, @3, NSNull.null]];
- [optManaged.floatObj addObjects:@[@2.2f, @3.3f, NSNull.null]];
- [optManaged.doubleObj addObjects:@[@2.2, @3.3, NSNull.null]];
- [optManaged.stringObj addObjects:@[@"a", @"b", NSNull.null]];
- [optManaged.dataObj addObjects:@[data(1), data(2), NSNull.null]];
- [optManaged.dateObj addObjects:@[date(1), date(2), NSNull.null]];
- [unmanaged.boolObj setValue:@NO forKey:@"self"];
- [unmanaged.intObj setValue:@2 forKey:@"self"];
- [unmanaged.floatObj setValue:@2.2f forKey:@"self"];
- [unmanaged.doubleObj setValue:@2.2 forKey:@"self"];
- [unmanaged.stringObj setValue:@"a" forKey:@"self"];
- [unmanaged.dataObj setValue:data(1) forKey:@"self"];
- [unmanaged.dateObj setValue:date(1) forKey:@"self"];
- [optUnmanaged.boolObj setValue:@NO forKey:@"self"];
- [optUnmanaged.intObj setValue:@2 forKey:@"self"];
- [optUnmanaged.floatObj setValue:@2.2f forKey:@"self"];
- [optUnmanaged.doubleObj setValue:@2.2 forKey:@"self"];
- [optUnmanaged.stringObj setValue:@"a" forKey:@"self"];
- [optUnmanaged.dataObj setValue:data(1) forKey:@"self"];
- [optUnmanaged.dateObj setValue:date(1) forKey:@"self"];
- [managed.boolObj setValue:@NO forKey:@"self"];
- [managed.intObj setValue:@2 forKey:@"self"];
- [managed.floatObj setValue:@2.2f forKey:@"self"];
- [managed.doubleObj setValue:@2.2 forKey:@"self"];
- [managed.stringObj setValue:@"a" forKey:@"self"];
- [managed.dataObj setValue:data(1) forKey:@"self"];
- [managed.dateObj setValue:date(1) forKey:@"self"];
- [optManaged.boolObj setValue:@NO forKey:@"self"];
- [optManaged.intObj setValue:@2 forKey:@"self"];
- [optManaged.floatObj setValue:@2.2f forKey:@"self"];
- [optManaged.doubleObj setValue:@2.2 forKey:@"self"];
- [optManaged.stringObj setValue:@"a" forKey:@"self"];
- [optManaged.dataObj setValue:data(1) forKey:@"self"];
- [optManaged.dateObj setValue:date(1) forKey:@"self"];
- XCTAssertEqualObjects(unmanaged.boolObj[0], @NO);
- XCTAssertEqualObjects(unmanaged.intObj[0], @2);
- XCTAssertEqualObjects(unmanaged.floatObj[0], @2.2f);
- XCTAssertEqualObjects(unmanaged.doubleObj[0], @2.2);
- XCTAssertEqualObjects(unmanaged.stringObj[0], @"a");
- XCTAssertEqualObjects(unmanaged.dataObj[0], data(1));
- XCTAssertEqualObjects(unmanaged.dateObj[0], date(1));
- XCTAssertEqualObjects(optUnmanaged.boolObj[0], @NO);
- XCTAssertEqualObjects(optUnmanaged.intObj[0], @2);
- XCTAssertEqualObjects(optUnmanaged.floatObj[0], @2.2f);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[0], @2.2);
- XCTAssertEqualObjects(optUnmanaged.stringObj[0], @"a");
- XCTAssertEqualObjects(optUnmanaged.dataObj[0], data(1));
- XCTAssertEqualObjects(optUnmanaged.dateObj[0], date(1));
- XCTAssertEqualObjects(managed.boolObj[0], @NO);
- XCTAssertEqualObjects(managed.intObj[0], @2);
- XCTAssertEqualObjects(managed.floatObj[0], @2.2f);
- XCTAssertEqualObjects(managed.doubleObj[0], @2.2);
- XCTAssertEqualObjects(managed.stringObj[0], @"a");
- XCTAssertEqualObjects(managed.dataObj[0], data(1));
- XCTAssertEqualObjects(managed.dateObj[0], date(1));
- XCTAssertEqualObjects(optManaged.boolObj[0], @NO);
- XCTAssertEqualObjects(optManaged.intObj[0], @2);
- XCTAssertEqualObjects(optManaged.floatObj[0], @2.2f);
- XCTAssertEqualObjects(optManaged.doubleObj[0], @2.2);
- XCTAssertEqualObjects(optManaged.stringObj[0], @"a");
- XCTAssertEqualObjects(optManaged.dataObj[0], data(1));
- XCTAssertEqualObjects(optManaged.dateObj[0], date(1));
- XCTAssertEqualObjects(unmanaged.boolObj[1], @NO);
- XCTAssertEqualObjects(unmanaged.intObj[1], @2);
- XCTAssertEqualObjects(unmanaged.floatObj[1], @2.2f);
- XCTAssertEqualObjects(unmanaged.doubleObj[1], @2.2);
- XCTAssertEqualObjects(unmanaged.stringObj[1], @"a");
- XCTAssertEqualObjects(unmanaged.dataObj[1], data(1));
- XCTAssertEqualObjects(unmanaged.dateObj[1], date(1));
- XCTAssertEqualObjects(optUnmanaged.boolObj[1], @NO);
- XCTAssertEqualObjects(optUnmanaged.intObj[1], @2);
- XCTAssertEqualObjects(optUnmanaged.floatObj[1], @2.2f);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[1], @2.2);
- XCTAssertEqualObjects(optUnmanaged.stringObj[1], @"a");
- XCTAssertEqualObjects(optUnmanaged.dataObj[1], data(1));
- XCTAssertEqualObjects(optUnmanaged.dateObj[1], date(1));
- XCTAssertEqualObjects(managed.boolObj[1], @NO);
- XCTAssertEqualObjects(managed.intObj[1], @2);
- XCTAssertEqualObjects(managed.floatObj[1], @2.2f);
- XCTAssertEqualObjects(managed.doubleObj[1], @2.2);
- XCTAssertEqualObjects(managed.stringObj[1], @"a");
- XCTAssertEqualObjects(managed.dataObj[1], data(1));
- XCTAssertEqualObjects(managed.dateObj[1], date(1));
- XCTAssertEqualObjects(optManaged.boolObj[1], @NO);
- XCTAssertEqualObjects(optManaged.intObj[1], @2);
- XCTAssertEqualObjects(optManaged.floatObj[1], @2.2f);
- XCTAssertEqualObjects(optManaged.doubleObj[1], @2.2);
- XCTAssertEqualObjects(optManaged.stringObj[1], @"a");
- XCTAssertEqualObjects(optManaged.dataObj[1], data(1));
- XCTAssertEqualObjects(optManaged.dateObj[1], date(1));
- XCTAssertEqualObjects(optUnmanaged.boolObj[2], @NO);
- XCTAssertEqualObjects(optUnmanaged.intObj[2], @2);
- XCTAssertEqualObjects(optUnmanaged.floatObj[2], @2.2f);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[2], @2.2);
- XCTAssertEqualObjects(optUnmanaged.stringObj[2], @"a");
- XCTAssertEqualObjects(optUnmanaged.dataObj[2], data(1));
- XCTAssertEqualObjects(optUnmanaged.dateObj[2], date(1));
- XCTAssertEqualObjects(optManaged.boolObj[2], @NO);
- XCTAssertEqualObjects(optManaged.intObj[2], @2);
- XCTAssertEqualObjects(optManaged.floatObj[2], @2.2f);
- XCTAssertEqualObjects(optManaged.doubleObj[2], @2.2);
- XCTAssertEqualObjects(optManaged.stringObj[2], @"a");
- XCTAssertEqualObjects(optManaged.dataObj[2], data(1));
- XCTAssertEqualObjects(optManaged.dateObj[2], date(1));
- [optUnmanaged.boolObj setValue:NSNull.null forKey:@"self"];
- [optUnmanaged.intObj setValue:NSNull.null forKey:@"self"];
- [optUnmanaged.floatObj setValue:NSNull.null forKey:@"self"];
- [optUnmanaged.doubleObj setValue:NSNull.null forKey:@"self"];
- [optUnmanaged.stringObj setValue:NSNull.null forKey:@"self"];
- [optUnmanaged.dataObj setValue:NSNull.null forKey:@"self"];
- [optUnmanaged.dateObj setValue:NSNull.null forKey:@"self"];
- [optManaged.boolObj setValue:NSNull.null forKey:@"self"];
- [optManaged.intObj setValue:NSNull.null forKey:@"self"];
- [optManaged.floatObj setValue:NSNull.null forKey:@"self"];
- [optManaged.doubleObj setValue:NSNull.null forKey:@"self"];
- [optManaged.stringObj setValue:NSNull.null forKey:@"self"];
- [optManaged.dataObj setValue:NSNull.null forKey:@"self"];
- [optManaged.dateObj setValue:NSNull.null forKey:@"self"];
- XCTAssertEqualObjects(optUnmanaged.boolObj[0], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.intObj[0], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.floatObj[0], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.doubleObj[0], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.stringObj[0], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.dataObj[0], NSNull.null);
- XCTAssertEqualObjects(optUnmanaged.dateObj[0], NSNull.null);
- XCTAssertEqualObjects(optManaged.boolObj[0], NSNull.null);
- XCTAssertEqualObjects(optManaged.intObj[0], NSNull.null);
- XCTAssertEqualObjects(optManaged.floatObj[0], NSNull.null);
- XCTAssertEqualObjects(optManaged.doubleObj[0], NSNull.null);
- XCTAssertEqualObjects(optManaged.stringObj[0], NSNull.null);
- XCTAssertEqualObjects(optManaged.dataObj[0], NSNull.null);
- XCTAssertEqualObjects(optManaged.dateObj[0], NSNull.null);
- }
- - (void)testAssignment {
- unmanaged.boolObj = (id)@[@YES];
- XCTAssertEqualObjects(unmanaged.boolObj[0], @YES);
- unmanaged.intObj = (id)@[@3];
- XCTAssertEqualObjects(unmanaged.intObj[0], @3);
- unmanaged.floatObj = (id)@[@3.3f];
- XCTAssertEqualObjects(unmanaged.floatObj[0], @3.3f);
- unmanaged.doubleObj = (id)@[@3.3];
- XCTAssertEqualObjects(unmanaged.doubleObj[0], @3.3);
- unmanaged.stringObj = (id)@[@"b"];
- XCTAssertEqualObjects(unmanaged.stringObj[0], @"b");
- unmanaged.dataObj = (id)@[data(2)];
- XCTAssertEqualObjects(unmanaged.dataObj[0], data(2));
- unmanaged.dateObj = (id)@[date(2)];
- XCTAssertEqualObjects(unmanaged.dateObj[0], date(2));
- optUnmanaged.boolObj = (id)@[@YES];
- XCTAssertEqualObjects(optUnmanaged.boolObj[0], @YES);
- optUnmanaged.intObj = (id)@[@3];
- XCTAssertEqualObjects(optUnmanaged.intObj[0], @3);
- optUnmanaged.floatObj = (id)@[@3.3f];
- XCTAssertEqualObjects(optUnmanaged.floatObj[0], @3.3f);
- optUnmanaged.doubleObj = (id)@[@3.3];
- XCTAssertEqualObjects(optUnmanaged.doubleObj[0], @3.3);
- optUnmanaged.stringObj = (id)@[@"b"];
- XCTAssertEqualObjects(optUnmanaged.stringObj[0], @"b");
- optUnmanaged.dataObj = (id)@[data(2)];
- XCTAssertEqualObjects(optUnmanaged.dataObj[0], data(2));
- optUnmanaged.dateObj = (id)@[date(2)];
- XCTAssertEqualObjects(optUnmanaged.dateObj[0], date(2));
- managed.boolObj = (id)@[@YES];
- XCTAssertEqualObjects(managed.boolObj[0], @YES);
- managed.intObj = (id)@[@3];
- XCTAssertEqualObjects(managed.intObj[0], @3);
- managed.floatObj = (id)@[@3.3f];
- XCTAssertEqualObjects(managed.floatObj[0], @3.3f);
- managed.doubleObj = (id)@[@3.3];
- XCTAssertEqualObjects(managed.doubleObj[0], @3.3);
- managed.stringObj = (id)@[@"b"];
- XCTAssertEqualObjects(managed.stringObj[0], @"b");
- managed.dataObj = (id)@[data(2)];
- XCTAssertEqualObjects(managed.dataObj[0], data(2));
- managed.dateObj = (id)@[date(2)];
- XCTAssertEqualObjects(managed.dateObj[0], date(2));
- optManaged.boolObj = (id)@[@YES];
- XCTAssertEqualObjects(optManaged.boolObj[0], @YES);
- optManaged.intObj = (id)@[@3];
- XCTAssertEqualObjects(optManaged.intObj[0], @3);
- optManaged.floatObj = (id)@[@3.3f];
- XCTAssertEqualObjects(optManaged.floatObj[0], @3.3f);
- optManaged.doubleObj = (id)@[@3.3];
- XCTAssertEqualObjects(optManaged.doubleObj[0], @3.3);
- optManaged.stringObj = (id)@[@"b"];
- XCTAssertEqualObjects(optManaged.stringObj[0], @"b");
- optManaged.dataObj = (id)@[data(2)];
- XCTAssertEqualObjects(optManaged.dataObj[0], data(2));
- optManaged.dateObj = (id)@[date(2)];
- XCTAssertEqualObjects(optManaged.dateObj[0], date(2));
- // Should replace and not append
- unmanaged.boolObj = (id)@[@NO, @YES];
- XCTAssertEqualObjects([unmanaged.boolObj valueForKey:@"self"], (@[@NO, @YES]));
-
- unmanaged.intObj = (id)@[@2, @3];
- XCTAssertEqualObjects([unmanaged.intObj valueForKey:@"self"], (@[@2, @3]));
-
- unmanaged.floatObj = (id)@[@2.2f, @3.3f];
- XCTAssertEqualObjects([unmanaged.floatObj valueForKey:@"self"], (@[@2.2f, @3.3f]));
-
- unmanaged.doubleObj = (id)@[@2.2, @3.3];
- XCTAssertEqualObjects([unmanaged.doubleObj valueForKey:@"self"], (@[@2.2, @3.3]));
-
- unmanaged.stringObj = (id)@[@"a", @"b"];
- XCTAssertEqualObjects([unmanaged.stringObj valueForKey:@"self"], (@[@"a", @"b"]));
-
- unmanaged.dataObj = (id)@[data(1), data(2)];
- XCTAssertEqualObjects([unmanaged.dataObj valueForKey:@"self"], (@[data(1), data(2)]));
-
- unmanaged.dateObj = (id)@[date(1), date(2)];
- XCTAssertEqualObjects([unmanaged.dateObj valueForKey:@"self"], (@[date(1), date(2)]));
-
- optUnmanaged.boolObj = (id)@[@NO, @YES, NSNull.null];
- XCTAssertEqualObjects([optUnmanaged.boolObj valueForKey:@"self"], (@[@NO, @YES, NSNull.null]));
-
- optUnmanaged.intObj = (id)@[@2, @3, NSNull.null];
- XCTAssertEqualObjects([optUnmanaged.intObj valueForKey:@"self"], (@[@2, @3, NSNull.null]));
-
- optUnmanaged.floatObj = (id)@[@2.2f, @3.3f, NSNull.null];
- XCTAssertEqualObjects([optUnmanaged.floatObj valueForKey:@"self"], (@[@2.2f, @3.3f, NSNull.null]));
-
- optUnmanaged.doubleObj = (id)@[@2.2, @3.3, NSNull.null];
- XCTAssertEqualObjects([optUnmanaged.doubleObj valueForKey:@"self"], (@[@2.2, @3.3, NSNull.null]));
-
- optUnmanaged.stringObj = (id)@[@"a", @"b", NSNull.null];
- XCTAssertEqualObjects([optUnmanaged.stringObj valueForKey:@"self"], (@[@"a", @"b", NSNull.null]));
-
- optUnmanaged.dataObj = (id)@[data(1), data(2), NSNull.null];
- XCTAssertEqualObjects([optUnmanaged.dataObj valueForKey:@"self"], (@[data(1), data(2), NSNull.null]));
-
- optUnmanaged.dateObj = (id)@[date(1), date(2), NSNull.null];
- XCTAssertEqualObjects([optUnmanaged.dateObj valueForKey:@"self"], (@[date(1), date(2), NSNull.null]));
-
- managed.boolObj = (id)@[@NO, @YES];
- XCTAssertEqualObjects([managed.boolObj valueForKey:@"self"], (@[@NO, @YES]));
-
- managed.intObj = (id)@[@2, @3];
- XCTAssertEqualObjects([managed.intObj valueForKey:@"self"], (@[@2, @3]));
-
- managed.floatObj = (id)@[@2.2f, @3.3f];
- XCTAssertEqualObjects([managed.floatObj valueForKey:@"self"], (@[@2.2f, @3.3f]));
-
- managed.doubleObj = (id)@[@2.2, @3.3];
- XCTAssertEqualObjects([managed.doubleObj valueForKey:@"self"], (@[@2.2, @3.3]));
-
- managed.stringObj = (id)@[@"a", @"b"];
- XCTAssertEqualObjects([managed.stringObj valueForKey:@"self"], (@[@"a", @"b"]));
-
- managed.dataObj = (id)@[data(1), data(2)];
- XCTAssertEqualObjects([managed.dataObj valueForKey:@"self"], (@[data(1), data(2)]));
-
- managed.dateObj = (id)@[date(1), date(2)];
- XCTAssertEqualObjects([managed.dateObj valueForKey:@"self"], (@[date(1), date(2)]));
-
- optManaged.boolObj = (id)@[@NO, @YES, NSNull.null];
- XCTAssertEqualObjects([optManaged.boolObj valueForKey:@"self"], (@[@NO, @YES, NSNull.null]));
-
- optManaged.intObj = (id)@[@2, @3, NSNull.null];
- XCTAssertEqualObjects([optManaged.intObj valueForKey:@"self"], (@[@2, @3, NSNull.null]));
-
- optManaged.floatObj = (id)@[@2.2f, @3.3f, NSNull.null];
- XCTAssertEqualObjects([optManaged.floatObj valueForKey:@"self"], (@[@2.2f, @3.3f, NSNull.null]));
-
- optManaged.doubleObj = (id)@[@2.2, @3.3, NSNull.null];
- XCTAssertEqualObjects([optManaged.doubleObj valueForKey:@"self"], (@[@2.2, @3.3, NSNull.null]));
-
- optManaged.stringObj = (id)@[@"a", @"b", NSNull.null];
- XCTAssertEqualObjects([optManaged.stringObj valueForKey:@"self"], (@[@"a", @"b", NSNull.null]));
-
- optManaged.dataObj = (id)@[data(1), data(2), NSNull.null];
- XCTAssertEqualObjects([optManaged.dataObj valueForKey:@"self"], (@[data(1), data(2), NSNull.null]));
-
- optManaged.dateObj = (id)@[date(1), date(2), NSNull.null];
- XCTAssertEqualObjects([optManaged.dateObj valueForKey:@"self"], (@[date(1), date(2), NSNull.null]));
-
- // Should not clear the array
- unmanaged.boolObj = unmanaged.boolObj;
- XCTAssertEqualObjects([unmanaged.boolObj valueForKey:@"self"], (@[@NO, @YES]));
-
- unmanaged.intObj = unmanaged.intObj;
- XCTAssertEqualObjects([unmanaged.intObj valueForKey:@"self"], (@[@2, @3]));
-
- unmanaged.floatObj = unmanaged.floatObj;
- XCTAssertEqualObjects([unmanaged.floatObj valueForKey:@"self"], (@[@2.2f, @3.3f]));
-
- unmanaged.doubleObj = unmanaged.doubleObj;
- XCTAssertEqualObjects([unmanaged.doubleObj valueForKey:@"self"], (@[@2.2, @3.3]));
-
- unmanaged.stringObj = unmanaged.stringObj;
- XCTAssertEqualObjects([unmanaged.stringObj valueForKey:@"self"], (@[@"a", @"b"]));
-
- unmanaged.dataObj = unmanaged.dataObj;
- XCTAssertEqualObjects([unmanaged.dataObj valueForKey:@"self"], (@[data(1), data(2)]));
-
- unmanaged.dateObj = unmanaged.dateObj;
- XCTAssertEqualObjects([unmanaged.dateObj valueForKey:@"self"], (@[date(1), date(2)]));
-
- optUnmanaged.boolObj = optUnmanaged.boolObj;
- XCTAssertEqualObjects([optUnmanaged.boolObj valueForKey:@"self"], (@[@NO, @YES, NSNull.null]));
-
- optUnmanaged.intObj = optUnmanaged.intObj;
- XCTAssertEqualObjects([optUnmanaged.intObj valueForKey:@"self"], (@[@2, @3, NSNull.null]));
-
- optUnmanaged.floatObj = optUnmanaged.floatObj;
- XCTAssertEqualObjects([optUnmanaged.floatObj valueForKey:@"self"], (@[@2.2f, @3.3f, NSNull.null]));
-
- optUnmanaged.doubleObj = optUnmanaged.doubleObj;
- XCTAssertEqualObjects([optUnmanaged.doubleObj valueForKey:@"self"], (@[@2.2, @3.3, NSNull.null]));
-
- optUnmanaged.stringObj = optUnmanaged.stringObj;
- XCTAssertEqualObjects([optUnmanaged.stringObj valueForKey:@"self"], (@[@"a", @"b", NSNull.null]));
-
- optUnmanaged.dataObj = optUnmanaged.dataObj;
- XCTAssertEqualObjects([optUnmanaged.dataObj valueForKey:@"self"], (@[data(1), data(2), NSNull.null]));
-
- optUnmanaged.dateObj = optUnmanaged.dateObj;
- XCTAssertEqualObjects([optUnmanaged.dateObj valueForKey:@"self"], (@[date(1), date(2), NSNull.null]));
-
- managed.boolObj = managed.boolObj;
- XCTAssertEqualObjects([managed.boolObj valueForKey:@"self"], (@[@NO, @YES]));
-
- managed.intObj = managed.intObj;
- XCTAssertEqualObjects([managed.intObj valueForKey:@"self"], (@[@2, @3]));
-
- managed.floatObj = managed.floatObj;
- XCTAssertEqualObjects([managed.floatObj valueForKey:@"self"], (@[@2.2f, @3.3f]));
-
- managed.doubleObj = managed.doubleObj;
- XCTAssertEqualObjects([managed.doubleObj valueForKey:@"self"], (@[@2.2, @3.3]));
-
- managed.stringObj = managed.stringObj;
- XCTAssertEqualObjects([managed.stringObj valueForKey:@"self"], (@[@"a", @"b"]));
-
- managed.dataObj = managed.dataObj;
- XCTAssertEqualObjects([managed.dataObj valueForKey:@"self"], (@[data(1), data(2)]));
-
- managed.dateObj = managed.dateObj;
- XCTAssertEqualObjects([managed.dateObj valueForKey:@"self"], (@[date(1), date(2)]));
-
- optManaged.boolObj = optManaged.boolObj;
- XCTAssertEqualObjects([optManaged.boolObj valueForKey:@"self"], (@[@NO, @YES, NSNull.null]));
-
- optManaged.intObj = optManaged.intObj;
- XCTAssertEqualObjects([optManaged.intObj valueForKey:@"self"], (@[@2, @3, NSNull.null]));
-
- optManaged.floatObj = optManaged.floatObj;
- XCTAssertEqualObjects([optManaged.floatObj valueForKey:@"self"], (@[@2.2f, @3.3f, NSNull.null]));
-
- optManaged.doubleObj = optManaged.doubleObj;
- XCTAssertEqualObjects([optManaged.doubleObj valueForKey:@"self"], (@[@2.2, @3.3, NSNull.null]));
-
- optManaged.stringObj = optManaged.stringObj;
- XCTAssertEqualObjects([optManaged.stringObj valueForKey:@"self"], (@[@"a", @"b", NSNull.null]));
-
- optManaged.dataObj = optManaged.dataObj;
- XCTAssertEqualObjects([optManaged.dataObj valueForKey:@"self"], (@[data(1), data(2), NSNull.null]));
-
- optManaged.dateObj = optManaged.dateObj;
- XCTAssertEqualObjects([optManaged.dateObj valueForKey:@"self"], (@[date(1), date(2), NSNull.null]));
-
- [unmanaged.intObj removeAllObjects];
- unmanaged.intObj = managed.intObj;
- XCTAssertEqualObjects([unmanaged.intObj valueForKey:@"self"], (@[@2, @3]));
- [managed.intObj removeAllObjects];
- managed.intObj = unmanaged.intObj;
- XCTAssertEqualObjects([managed.intObj valueForKey:@"self"], (@[@2, @3]));
- }
- - (void)testDynamicAssignment {
- unmanaged[@"boolObj"] = (id)@[@YES];
- XCTAssertEqualObjects(unmanaged[@"boolObj"][0], @YES);
- unmanaged[@"intObj"] = (id)@[@3];
- XCTAssertEqualObjects(unmanaged[@"intObj"][0], @3);
- unmanaged[@"floatObj"] = (id)@[@3.3f];
- XCTAssertEqualObjects(unmanaged[@"floatObj"][0], @3.3f);
- unmanaged[@"doubleObj"] = (id)@[@3.3];
- XCTAssertEqualObjects(unmanaged[@"doubleObj"][0], @3.3);
- unmanaged[@"stringObj"] = (id)@[@"b"];
- XCTAssertEqualObjects(unmanaged[@"stringObj"][0], @"b");
- unmanaged[@"dataObj"] = (id)@[data(2)];
- XCTAssertEqualObjects(unmanaged[@"dataObj"][0], data(2));
- unmanaged[@"dateObj"] = (id)@[date(2)];
- XCTAssertEqualObjects(unmanaged[@"dateObj"][0], date(2));
- optUnmanaged[@"boolObj"] = (id)@[@YES];
- XCTAssertEqualObjects(optUnmanaged[@"boolObj"][0], @YES);
- optUnmanaged[@"intObj"] = (id)@[@3];
- XCTAssertEqualObjects(optUnmanaged[@"intObj"][0], @3);
- optUnmanaged[@"floatObj"] = (id)@[@3.3f];
- XCTAssertEqualObjects(optUnmanaged[@"floatObj"][0], @3.3f);
- optUnmanaged[@"doubleObj"] = (id)@[@3.3];
- XCTAssertEqualObjects(optUnmanaged[@"doubleObj"][0], @3.3);
- optUnmanaged[@"stringObj"] = (id)@[@"b"];
- XCTAssertEqualObjects(optUnmanaged[@"stringObj"][0], @"b");
- optUnmanaged[@"dataObj"] = (id)@[data(2)];
- XCTAssertEqualObjects(optUnmanaged[@"dataObj"][0], data(2));
- optUnmanaged[@"dateObj"] = (id)@[date(2)];
- XCTAssertEqualObjects(optUnmanaged[@"dateObj"][0], date(2));
- managed[@"boolObj"] = (id)@[@YES];
- XCTAssertEqualObjects(managed[@"boolObj"][0], @YES);
- managed[@"intObj"] = (id)@[@3];
- XCTAssertEqualObjects(managed[@"intObj"][0], @3);
- managed[@"floatObj"] = (id)@[@3.3f];
- XCTAssertEqualObjects(managed[@"floatObj"][0], @3.3f);
- managed[@"doubleObj"] = (id)@[@3.3];
- XCTAssertEqualObjects(managed[@"doubleObj"][0], @3.3);
- managed[@"stringObj"] = (id)@[@"b"];
- XCTAssertEqualObjects(managed[@"stringObj"][0], @"b");
- managed[@"dataObj"] = (id)@[data(2)];
- XCTAssertEqualObjects(managed[@"dataObj"][0], data(2));
- managed[@"dateObj"] = (id)@[date(2)];
- XCTAssertEqualObjects(managed[@"dateObj"][0], date(2));
- optManaged[@"boolObj"] = (id)@[@YES];
- XCTAssertEqualObjects(optManaged[@"boolObj"][0], @YES);
- optManaged[@"intObj"] = (id)@[@3];
- XCTAssertEqualObjects(optManaged[@"intObj"][0], @3);
- optManaged[@"floatObj"] = (id)@[@3.3f];
- XCTAssertEqualObjects(optManaged[@"floatObj"][0], @3.3f);
- optManaged[@"doubleObj"] = (id)@[@3.3];
- XCTAssertEqualObjects(optManaged[@"doubleObj"][0], @3.3);
- optManaged[@"stringObj"] = (id)@[@"b"];
- XCTAssertEqualObjects(optManaged[@"stringObj"][0], @"b");
- optManaged[@"dataObj"] = (id)@[data(2)];
- XCTAssertEqualObjects(optManaged[@"dataObj"][0], data(2));
- optManaged[@"dateObj"] = (id)@[date(2)];
- XCTAssertEqualObjects(optManaged[@"dateObj"][0], date(2));
- // Should replace and not append
- unmanaged[@"boolObj"] = (id)@[@NO, @YES];
- XCTAssertEqualObjects([unmanaged[@"boolObj"] valueForKey:@"self"], (@[@NO, @YES]));
-
- unmanaged[@"intObj"] = (id)@[@2, @3];
- XCTAssertEqualObjects([unmanaged[@"intObj"] valueForKey:@"self"], (@[@2, @3]));
-
- unmanaged[@"floatObj"] = (id)@[@2.2f, @3.3f];
- XCTAssertEqualObjects([unmanaged[@"floatObj"] valueForKey:@"self"], (@[@2.2f, @3.3f]));
-
- unmanaged[@"doubleObj"] = (id)@[@2.2, @3.3];
- XCTAssertEqualObjects([unmanaged[@"doubleObj"] valueForKey:@"self"], (@[@2.2, @3.3]));
-
- unmanaged[@"stringObj"] = (id)@[@"a", @"b"];
- XCTAssertEqualObjects([unmanaged[@"stringObj"] valueForKey:@"self"], (@[@"a", @"b"]));
-
- unmanaged[@"dataObj"] = (id)@[data(1), data(2)];
- XCTAssertEqualObjects([unmanaged[@"dataObj"] valueForKey:@"self"], (@[data(1), data(2)]));
-
- unmanaged[@"dateObj"] = (id)@[date(1), date(2)];
- XCTAssertEqualObjects([unmanaged[@"dateObj"] valueForKey:@"self"], (@[date(1), date(2)]));
-
- optUnmanaged[@"boolObj"] = (id)@[@NO, @YES, NSNull.null];
- XCTAssertEqualObjects([optUnmanaged[@"boolObj"] valueForKey:@"self"], (@[@NO, @YES, NSNull.null]));
-
- optUnmanaged[@"intObj"] = (id)@[@2, @3, NSNull.null];
- XCTAssertEqualObjects([optUnmanaged[@"intObj"] valueForKey:@"self"], (@[@2, @3, NSNull.null]));
-
- optUnmanaged[@"floatObj"] = (id)@[@2.2f, @3.3f, NSNull.null];
- XCTAssertEqualObjects([optUnmanaged[@"floatObj"] valueForKey:@"self"], (@[@2.2f, @3.3f, NSNull.null]));
-
- optUnmanaged[@"doubleObj"] = (id)@[@2.2, @3.3, NSNull.null];
- XCTAssertEqualObjects([optUnmanaged[@"doubleObj"] valueForKey:@"self"], (@[@2.2, @3.3, NSNull.null]));
-
- optUnmanaged[@"stringObj"] = (id)@[@"a", @"b", NSNull.null];
- XCTAssertEqualObjects([optUnmanaged[@"stringObj"] valueForKey:@"self"], (@[@"a", @"b", NSNull.null]));
-
- optUnmanaged[@"dataObj"] = (id)@[data(1), data(2), NSNull.null];
- XCTAssertEqualObjects([optUnmanaged[@"dataObj"] valueForKey:@"self"], (@[data(1), data(2), NSNull.null]));
-
- optUnmanaged[@"dateObj"] = (id)@[date(1), date(2), NSNull.null];
- XCTAssertEqualObjects([optUnmanaged[@"dateObj"] valueForKey:@"self"], (@[date(1), date(2), NSNull.null]));
-
- managed[@"boolObj"] = (id)@[@NO, @YES];
- XCTAssertEqualObjects([managed[@"boolObj"] valueForKey:@"self"], (@[@NO, @YES]));
-
- managed[@"intObj"] = (id)@[@2, @3];
- XCTAssertEqualObjects([managed[@"intObj"] valueForKey:@"self"], (@[@2, @3]));
-
- managed[@"floatObj"] = (id)@[@2.2f, @3.3f];
- XCTAssertEqualObjects([managed[@"floatObj"] valueForKey:@"self"], (@[@2.2f, @3.3f]));
-
- managed[@"doubleObj"] = (id)@[@2.2, @3.3];
- XCTAssertEqualObjects([managed[@"doubleObj"] valueForKey:@"self"], (@[@2.2, @3.3]));
-
- managed[@"stringObj"] = (id)@[@"a", @"b"];
- XCTAssertEqualObjects([managed[@"stringObj"] valueForKey:@"self"], (@[@"a", @"b"]));
-
- managed[@"dataObj"] = (id)@[data(1), data(2)];
- XCTAssertEqualObjects([managed[@"dataObj"] valueForKey:@"self"], (@[data(1), data(2)]));
-
- managed[@"dateObj"] = (id)@[date(1), date(2)];
- XCTAssertEqualObjects([managed[@"dateObj"] valueForKey:@"self"], (@[date(1), date(2)]));
-
- optManaged[@"boolObj"] = (id)@[@NO, @YES, NSNull.null];
- XCTAssertEqualObjects([optManaged[@"boolObj"] valueForKey:@"self"], (@[@NO, @YES, NSNull.null]));
-
- optManaged[@"intObj"] = (id)@[@2, @3, NSNull.null];
- XCTAssertEqualObjects([optManaged[@"intObj"] valueForKey:@"self"], (@[@2, @3, NSNull.null]));
-
- optManaged[@"floatObj"] = (id)@[@2.2f, @3.3f, NSNull.null];
- XCTAssertEqualObjects([optManaged[@"floatObj"] valueForKey:@"self"], (@[@2.2f, @3.3f, NSNull.null]));
-
- optManaged[@"doubleObj"] = (id)@[@2.2, @3.3, NSNull.null];
- XCTAssertEqualObjects([optManaged[@"doubleObj"] valueForKey:@"self"], (@[@2.2, @3.3, NSNull.null]));
-
- optManaged[@"stringObj"] = (id)@[@"a", @"b", NSNull.null];
- XCTAssertEqualObjects([optManaged[@"stringObj"] valueForKey:@"self"], (@[@"a", @"b", NSNull.null]));
-
- optManaged[@"dataObj"] = (id)@[data(1), data(2), NSNull.null];
- XCTAssertEqualObjects([optManaged[@"dataObj"] valueForKey:@"self"], (@[data(1), data(2), NSNull.null]));
-
- optManaged[@"dateObj"] = (id)@[date(1), date(2), NSNull.null];
- XCTAssertEqualObjects([optManaged[@"dateObj"] valueForKey:@"self"], (@[date(1), date(2), NSNull.null]));
-
- // Should not clear the array
- unmanaged[@"boolObj"] = unmanaged[@"boolObj"];
- XCTAssertEqualObjects([unmanaged[@"boolObj"] valueForKey:@"self"], (@[@NO, @YES]));
-
- unmanaged[@"intObj"] = unmanaged[@"intObj"];
- XCTAssertEqualObjects([unmanaged[@"intObj"] valueForKey:@"self"], (@[@2, @3]));
-
- unmanaged[@"floatObj"] = unmanaged[@"floatObj"];
- XCTAssertEqualObjects([unmanaged[@"floatObj"] valueForKey:@"self"], (@[@2.2f, @3.3f]));
-
- unmanaged[@"doubleObj"] = unmanaged[@"doubleObj"];
- XCTAssertEqualObjects([unmanaged[@"doubleObj"] valueForKey:@"self"], (@[@2.2, @3.3]));
-
- unmanaged[@"stringObj"] = unmanaged[@"stringObj"];
- XCTAssertEqualObjects([unmanaged[@"stringObj"] valueForKey:@"self"], (@[@"a", @"b"]));
-
- unmanaged[@"dataObj"] = unmanaged[@"dataObj"];
- XCTAssertEqualObjects([unmanaged[@"dataObj"] valueForKey:@"self"], (@[data(1), data(2)]));
-
- unmanaged[@"dateObj"] = unmanaged[@"dateObj"];
- XCTAssertEqualObjects([unmanaged[@"dateObj"] valueForKey:@"self"], (@[date(1), date(2)]));
-
- optUnmanaged[@"boolObj"] = optUnmanaged[@"boolObj"];
- XCTAssertEqualObjects([optUnmanaged[@"boolObj"] valueForKey:@"self"], (@[@NO, @YES, NSNull.null]));
-
- optUnmanaged[@"intObj"] = optUnmanaged[@"intObj"];
- XCTAssertEqualObjects([optUnmanaged[@"intObj"] valueForKey:@"self"], (@[@2, @3, NSNull.null]));
-
- optUnmanaged[@"floatObj"] = optUnmanaged[@"floatObj"];
- XCTAssertEqualObjects([optUnmanaged[@"floatObj"] valueForKey:@"self"], (@[@2.2f, @3.3f, NSNull.null]));
-
- optUnmanaged[@"doubleObj"] = optUnmanaged[@"doubleObj"];
- XCTAssertEqualObjects([optUnmanaged[@"doubleObj"] valueForKey:@"self"], (@[@2.2, @3.3, NSNull.null]));
-
- optUnmanaged[@"stringObj"] = optUnmanaged[@"stringObj"];
- XCTAssertEqualObjects([optUnmanaged[@"stringObj"] valueForKey:@"self"], (@[@"a", @"b", NSNull.null]));
-
- optUnmanaged[@"dataObj"] = optUnmanaged[@"dataObj"];
- XCTAssertEqualObjects([optUnmanaged[@"dataObj"] valueForKey:@"self"], (@[data(1), data(2), NSNull.null]));
-
- optUnmanaged[@"dateObj"] = optUnmanaged[@"dateObj"];
- XCTAssertEqualObjects([optUnmanaged[@"dateObj"] valueForKey:@"self"], (@[date(1), date(2), NSNull.null]));
-
- managed[@"boolObj"] = managed[@"boolObj"];
- XCTAssertEqualObjects([managed[@"boolObj"] valueForKey:@"self"], (@[@NO, @YES]));
-
- managed[@"intObj"] = managed[@"intObj"];
- XCTAssertEqualObjects([managed[@"intObj"] valueForKey:@"self"], (@[@2, @3]));
-
- managed[@"floatObj"] = managed[@"floatObj"];
- XCTAssertEqualObjects([managed[@"floatObj"] valueForKey:@"self"], (@[@2.2f, @3.3f]));
-
- managed[@"doubleObj"] = managed[@"doubleObj"];
- XCTAssertEqualObjects([managed[@"doubleObj"] valueForKey:@"self"], (@[@2.2, @3.3]));
-
- managed[@"stringObj"] = managed[@"stringObj"];
- XCTAssertEqualObjects([managed[@"stringObj"] valueForKey:@"self"], (@[@"a", @"b"]));
-
- managed[@"dataObj"] = managed[@"dataObj"];
- XCTAssertEqualObjects([managed[@"dataObj"] valueForKey:@"self"], (@[data(1), data(2)]));
-
- managed[@"dateObj"] = managed[@"dateObj"];
- XCTAssertEqualObjects([managed[@"dateObj"] valueForKey:@"self"], (@[date(1), date(2)]));
-
- optManaged[@"boolObj"] = optManaged[@"boolObj"];
- XCTAssertEqualObjects([optManaged[@"boolObj"] valueForKey:@"self"], (@[@NO, @YES, NSNull.null]));
-
- optManaged[@"intObj"] = optManaged[@"intObj"];
- XCTAssertEqualObjects([optManaged[@"intObj"] valueForKey:@"self"], (@[@2, @3, NSNull.null]));
-
- optManaged[@"floatObj"] = optManaged[@"floatObj"];
- XCTAssertEqualObjects([optManaged[@"floatObj"] valueForKey:@"self"], (@[@2.2f, @3.3f, NSNull.null]));
-
- optManaged[@"doubleObj"] = optManaged[@"doubleObj"];
- XCTAssertEqualObjects([optManaged[@"doubleObj"] valueForKey:@"self"], (@[@2.2, @3.3, NSNull.null]));
-
- optManaged[@"stringObj"] = optManaged[@"stringObj"];
- XCTAssertEqualObjects([optManaged[@"stringObj"] valueForKey:@"self"], (@[@"a", @"b", NSNull.null]));
-
- optManaged[@"dataObj"] = optManaged[@"dataObj"];
- XCTAssertEqualObjects([optManaged[@"dataObj"] valueForKey:@"self"], (@[data(1), data(2), NSNull.null]));
-
- optManaged[@"dateObj"] = optManaged[@"dateObj"];
- XCTAssertEqualObjects([optManaged[@"dateObj"] valueForKey:@"self"], (@[date(1), date(2), NSNull.null]));
-
- [unmanaged[@"intObj"] removeAllObjects];
- unmanaged[@"intObj"] = managed.intObj;
- XCTAssertEqualObjects([unmanaged[@"intObj"] valueForKey:@"self"], (@[@2, @3]));
- [managed[@"intObj"] removeAllObjects];
- managed[@"intObj"] = unmanaged.intObj;
- XCTAssertEqualObjects([managed[@"intObj"] valueForKey:@"self"], (@[@2, @3]));
- }
- - (void)testInvalidAssignment {
- RLMAssertThrowsWithReason(unmanaged.intObj = (id)@[NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for 'int' array property 'AllPrimitiveArrays.intObj'.");
- RLMAssertThrowsWithReason(unmanaged.intObj = (id)@[@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for 'int' array property 'AllPrimitiveArrays.intObj'.");
- RLMAssertThrowsWithReason(unmanaged.intObj = (id)(@[@1, @"a"]),
- @"Invalid value 'a' of type '__NSCFConstantString' for 'int' array property 'AllPrimitiveArrays.intObj'.");
- RLMAssertThrowsWithReason(unmanaged.intObj = (id)unmanaged.floatObj,
- @"RLMArray<float> does not match expected type 'int' for property 'AllPrimitiveArrays.intObj'.");
- RLMAssertThrowsWithReason(unmanaged.intObj = (id)optUnmanaged.intObj,
- @"RLMArray<int?> does not match expected type 'int' for property 'AllPrimitiveArrays.intObj'.");
- RLMAssertThrowsWithReason(unmanaged[@"intObj"] = unmanaged[@"floatObj"],
- @"RLMArray<float> does not match expected type 'int' for property 'AllPrimitiveArrays.intObj'.");
- RLMAssertThrowsWithReason(unmanaged[@"intObj"] = optUnmanaged[@"intObj"],
- @"RLMArray<int?> does not match expected type 'int' for property 'AllPrimitiveArrays.intObj'.");
- RLMAssertThrowsWithReason(managed.intObj = (id)@[NSNull.null],
- @"Invalid value '<null>' of type 'NSNull' for 'int' array property 'AllPrimitiveArrays.intObj'.");
- RLMAssertThrowsWithReason(managed.intObj = (id)@[@"a"],
- @"Invalid value 'a' of type '__NSCFConstantString' for 'int' array property 'AllPrimitiveArrays.intObj'.");
- RLMAssertThrowsWithReason(managed.intObj = (id)(@[@1, @"a"]),
- @"Invalid value 'a' of type '__NSCFConstantString' for 'int' array property 'AllPrimitiveArrays.intObj'.");
- RLMAssertThrowsWithReason(managed.intObj = (id)managed.floatObj,
- @"RLMArray<float> does not match expected type 'int' for property 'AllPrimitiveArrays.intObj'.");
- RLMAssertThrowsWithReason(managed.intObj = (id)optManaged.intObj,
- @"RLMArray<int?> does not match expected type 'int' for property 'AllPrimitiveArrays.intObj'.");
- RLMAssertThrowsWithReason(managed[@"intObj"] = (id)managed[@"floatObj"],
- @"RLMArray<float> does not match expected type 'int' for property 'AllPrimitiveArrays.intObj'.");
- RLMAssertThrowsWithReason(managed[@"intObj"] = (id)optManaged[@"intObj"],
- @"RLMArray<int?> does not match expected type 'int' for property 'AllPrimitiveArrays.intObj'.");
- }
- - (void)testAllMethodsCheckThread {
- RLMArray *array = managed.intObj;
- [self dispatchAsyncAndWait:^{
- RLMAssertThrowsWithReason([array count], @"thread");
- RLMAssertThrowsWithReason([array objectAtIndex:0], @"thread");
- RLMAssertThrowsWithReason([array firstObject], @"thread");
- RLMAssertThrowsWithReason([array lastObject], @"thread");
- RLMAssertThrowsWithReason([array addObject:@0], @"thread");
- RLMAssertThrowsWithReason([array addObjects:@[@0]], @"thread");
- RLMAssertThrowsWithReason([array insertObject:@0 atIndex:0], @"thread");
- RLMAssertThrowsWithReason([array removeObjectAtIndex:0], @"thread");
- RLMAssertThrowsWithReason([array removeLastObject], @"thread");
- RLMAssertThrowsWithReason([array removeAllObjects], @"thread");
- RLMAssertThrowsWithReason([array replaceObjectAtIndex:0 withObject:@0], @"thread");
- RLMAssertThrowsWithReason([array moveObjectAtIndex:0 toIndex:1], @"thread");
- RLMAssertThrowsWithReason([array exchangeObjectAtIndex:0 withObjectAtIndex:1], @"thread");
- RLMAssertThrowsWithReason([array indexOfObject:@1], @"thread");
- /* RLMAssertThrowsWithReason([array indexOfObjectWhere:@"TRUEPREDICATE"], @"thread"); */
- /* RLMAssertThrowsWithReason([array indexOfObjectWithPredicate:[NSPredicate predicateWithValue:NO]], @"thread"); */
- /* RLMAssertThrowsWithReason([array objectsWhere:@"TRUEPREDICATE"], @"thread"); */
- /* RLMAssertThrowsWithReason([array objectsWithPredicate:[NSPredicate predicateWithValue:NO]], @"thread"); */
- RLMAssertThrowsWithReason([array sortedResultsUsingKeyPath:@"self" ascending:YES], @"thread");
- RLMAssertThrowsWithReason([array sortedResultsUsingDescriptors:@[[RLMSortDescriptor sortDescriptorWithKeyPath:@"self" ascending:YES]]], @"thread");
- RLMAssertThrowsWithReason(array[0], @"thread");
- RLMAssertThrowsWithReason(array[0] = @0, @"thread");
- RLMAssertThrowsWithReason([array valueForKey:@"self"], @"thread");
- RLMAssertThrowsWithReason([array setValue:@1 forKey:@"self"], @"thread");
- RLMAssertThrowsWithReason({for (__unused id obj in array);}, @"thread");
- }];
- }
- - (void)testAllMethodsCheckForInvalidation {
- RLMArray *array = managed.intObj;
- [realm cancelWriteTransaction];
- [realm invalidate];
- XCTAssertNoThrow([array objectClassName]);
- XCTAssertNoThrow([array realm]);
- XCTAssertNoThrow([array isInvalidated]);
- RLMAssertThrowsWithReason([array count], @"invalidated");
- RLMAssertThrowsWithReason([array objectAtIndex:0], @"invalidated");
- RLMAssertThrowsWithReason([array firstObject], @"invalidated");
- RLMAssertThrowsWithReason([array lastObject], @"invalidated");
- RLMAssertThrowsWithReason([array addObject:@0], @"invalidated");
- RLMAssertThrowsWithReason([array addObjects:@[@0]], @"invalidated");
- RLMAssertThrowsWithReason([array insertObject:@0 atIndex:0], @"invalidated");
- RLMAssertThrowsWithReason([array removeObjectAtIndex:0], @"invalidated");
- RLMAssertThrowsWithReason([array removeLastObject], @"invalidated");
- RLMAssertThrowsWithReason([array removeAllObjects], @"invalidated");
- RLMAssertThrowsWithReason([array replaceObjectAtIndex:0 withObject:@0], @"invalidated");
- RLMAssertThrowsWithReason([array moveObjectAtIndex:0 toIndex:1], @"invalidated");
- RLMAssertThrowsWithReason([array exchangeObjectAtIndex:0 withObjectAtIndex:1], @"invalidated");
- RLMAssertThrowsWithReason([array indexOfObject:@1], @"invalidated");
- /* RLMAssertThrowsWithReason([array indexOfObjectWhere:@"TRUEPREDICATE"], @"invalidated"); */
- /* RLMAssertThrowsWithReason([array indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]], @"invalidated"); */
- /* RLMAssertThrowsWithReason([array objectsWhere:@"TRUEPREDICATE"], @"invalidated"); */
- /* RLMAssertThrowsWithReason([array objectsWithPredicate:[NSPredicate predicateWithValue:YES]], @"invalidated"); */
- RLMAssertThrowsWithReason([array sortedResultsUsingKeyPath:@"self" ascending:YES], @"invalidated");
- RLMAssertThrowsWithReason([array sortedResultsUsingDescriptors:@[[RLMSortDescriptor sortDescriptorWithKeyPath:@"self" ascending:YES]]], @"invalidated");
- RLMAssertThrowsWithReason(array[0], @"invalidated");
- RLMAssertThrowsWithReason(array[0] = @0, @"invalidated");
- RLMAssertThrowsWithReason([array valueForKey:@"self"], @"invalidated");
- RLMAssertThrowsWithReason([array setValue:@1 forKey:@"self"], @"invalidated");
- RLMAssertThrowsWithReason({for (__unused id obj in array);}, @"invalidated");
- [realm beginWriteTransaction];
- }
- - (void)testMutatingMethodsCheckForWriteTransaction {
- RLMArray *array = managed.intObj;
- [array addObject:@0];
- [realm commitWriteTransaction];
- XCTAssertNoThrow([array objectClassName]);
- XCTAssertNoThrow([array realm]);
- XCTAssertNoThrow([array isInvalidated]);
- XCTAssertNoThrow([array count]);
- XCTAssertNoThrow([array objectAtIndex:0]);
- XCTAssertNoThrow([array firstObject]);
- XCTAssertNoThrow([array lastObject]);
- XCTAssertNoThrow([array indexOfObject:@1]);
- /* XCTAssertNoThrow([array indexOfObjectWhere:@"TRUEPREDICATE"]); */
- /* XCTAssertNoThrow([array indexOfObjectWithPredicate:[NSPredicate predicateWithValue:YES]]); */
- /* XCTAssertNoThrow([array objectsWhere:@"TRUEPREDICATE"]); */
- /* XCTAssertNoThrow([array objectsWithPredicate:[NSPredicate predicateWithValue:YES]]); */
- XCTAssertNoThrow([array sortedResultsUsingKeyPath:@"self" ascending:YES]);
- XCTAssertNoThrow([array sortedResultsUsingDescriptors:@[[RLMSortDescriptor sortDescriptorWithKeyPath:@"self" ascending:YES]]]);
- XCTAssertNoThrow(array[0]);
- XCTAssertNoThrow([array valueForKey:@"self"]);
- XCTAssertNoThrow({for (__unused id obj in array);});
- RLMAssertThrowsWithReason([array addObject:@0], @"write transaction");
- RLMAssertThrowsWithReason([array addObjects:@[@0]], @"write transaction");
- RLMAssertThrowsWithReason([array insertObject:@0 atIndex:0], @"write transaction");
- RLMAssertThrowsWithReason([array removeObjectAtIndex:0], @"write transaction");
- RLMAssertThrowsWithReason([array removeLastObject], @"write transaction");
- RLMAssertThrowsWithReason([array removeAllObjects], @"write transaction");
- RLMAssertThrowsWithReason([array replaceObjectAtIndex:0 withObject:@0], @"write transaction");
- RLMAssertThrowsWithReason([array moveObjectAtIndex:0 toIndex:1], @"write transaction");
- RLMAssertThrowsWithReason([array exchangeObjectAtIndex:0 withObjectAtIndex:1], @"write transaction");
- RLMAssertThrowsWithReason(array[0] = @0, @"write transaction");
- RLMAssertThrowsWithReason([array setValue:@1 forKey:@"self"], @"write transaction");
- }
- - (void)testDeleteOwningObject {
- RLMArray *array = managed.intObj;
- XCTAssertFalse(array.isInvalidated);
- [realm deleteObject:managed];
- XCTAssertTrue(array.isInvalidated);
- }
- #pragma clang diagnostic ignored "-Warc-retain-cycles"
- - (void)testNotificationSentInitially {
- [realm commitWriteTransaction];
- id expectation = [self expectationWithDescription:@""];
- id token = [managed.intObj addNotificationBlock:^(RLMArray *array, RLMCollectionChange *change, NSError *error) {
- XCTAssertNotNil(array);
- XCTAssertNil(change);
- XCTAssertNil(error);
- [expectation fulfill];
- }];
- [self waitForExpectationsWithTimeout:2.0 handler:nil];
- [(RLMNotificationToken *)token invalidate];
- }
- - (void)testNotificationSentAfterCommit {
- [realm commitWriteTransaction];
- __block bool first = true;
- __block id expectation = [self expectationWithDescription:@""];
- id token = [managed.intObj addNotificationBlock:^(RLMArray *array, RLMCollectionChange *change, NSError *error) {
- XCTAssertNotNil(array);
- XCTAssertNil(error);
- if (first) {
- XCTAssertNil(change);
- }
- else {
- XCTAssertEqualObjects(change.insertions, @[@0]);
- }
- first = false;
- [expectation fulfill];
- }];
- [self waitForExpectationsWithTimeout:2.0 handler:nil];
- expectation = [self expectationWithDescription:@""];
- [self dispatchAsyncAndWait:^{
- RLMRealm *r = [RLMRealm defaultRealm];
- [r transactionWithBlock:^{
- RLMArray *array = [(AllPrimitiveArrays *)[AllPrimitiveArrays allObjectsInRealm:r].firstObject intObj];
- [array addObject:@0];
- }];
- }];
- [self waitForExpectationsWithTimeout:2.0 handler:nil];
- [(RLMNotificationToken *)token invalidate];
- }
- - (void)testNotificationNotSentForUnrelatedChange {
- [realm commitWriteTransaction];
- id expectation = [self expectationWithDescription:@""];
- id token = [managed.intObj addNotificationBlock:^(__unused RLMArray *array, __unused RLMCollectionChange *change, __unused NSError *error) {
- // will throw if it's incorrectly called a second time due to the
- // unrelated write transaction
- [expectation fulfill];
- }];
- [self waitForExpectationsWithTimeout:2.0 handler:nil];
- // All notification blocks are called as part of a single runloop event, so
- // waiting for this one also waits for the above one to get a chance to run
- [self waitForNotification:RLMRealmDidChangeNotification realm:realm block:^{
- [self dispatchAsyncAndWait:^{
- RLMRealm *r = [RLMRealm defaultRealm];
- [r transactionWithBlock:^{
- [AllPrimitiveArrays createInRealm:r withValue:@[]];
- }];
- }];
- }];
- [(RLMNotificationToken *)token invalidate];
- }
- - (void)testNotificationSentOnlyForActualRefresh {
- [realm commitWriteTransaction];
- __block id expectation = [self expectationWithDescription:@""];
- id token = [managed.intObj addNotificationBlock:^(RLMArray *array, __unused RLMCollectionChange *change, NSError *error) {
- XCTAssertNotNil(array);
- XCTAssertNil(error);
- // will throw if it's called a second time before we create the new
- // expectation object immediately before manually refreshing
- [expectation fulfill];
- }];
- [self waitForExpectationsWithTimeout:2.0 handler:nil];
- // Turn off autorefresh, so the background commit should not result in a notification
- realm.autorefresh = NO;
- // All notification blocks are called as part of a single runloop event, so
- // waiting for this one also waits for the above one to get a chance to run
- [self waitForNotification:RLMRealmRefreshRequiredNotification realm:realm block:^{
- [self dispatchAsyncAndWait:^{
- RLMRealm *r = [RLMRealm defaultRealm];
- [r transactionWithBlock:^{
- RLMArray *array = [(AllPrimitiveArrays *)[AllPrimitiveArrays allObjectsInRealm:r].firstObject intObj];
- [array addObject:@0];
- }];
- }];
- }];
- expectation = [self expectationWithDescription:@""];
- [realm refresh];
- [self waitForExpectationsWithTimeout:2.0 handler:nil];
- [(RLMNotificationToken *)token invalidate];
- }
- - (void)testDeletingObjectWithNotificationsRegistered {
- [managed.intObj addObjects:@[@10, @20]];
- [realm commitWriteTransaction];
- __block bool first = true;
- __block id expectation = [self expectationWithDescription:@""];
- id token = [managed.intObj addNotificationBlock:^(RLMArray *array, RLMCollectionChange *change, NSError *error) {
- XCTAssertNotNil(array);
- XCTAssertNil(error);
- if (first) {
- XCTAssertNil(change);
- first = false;
- }
- else {
- XCTAssertEqualObjects(change.deletions, (@[@0, @1]));
- }
- [expectation fulfill];
- }];
- [self waitForExpectationsWithTimeout:2.0 handler:nil];
- [realm beginWriteTransaction];
- [realm deleteObject:managed];
- [realm commitWriteTransaction];
- expectation = [self expectationWithDescription:@""];
- [self waitForExpectationsWithTimeout:2.0 handler:nil];
- [(RLMNotificationToken *)token invalidate];
- }
- @end
|