123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551 |
- {$INCLUDE sdo_global.inc}
- unit test_serializer;
- interface
- uses
- SysUtils, Classes//, Dialogs
- {$IFDEF FPC}
- ,fpcunit, testutils, testregistry
- {$ENDIF}
- {$IFNDEF FPC}
- ,TestFrameWork
- {$ENDIF}
- , test_suite_utils, sdo, sdo_types,
- sdo_serialization, sdo_serialization_utils, sdo_changesummary ;
- type
- TListCompareOption = ( lcoCompareOrder );
- TListCompareOptions = set of TListCompareOption;
- { TSDOBaseSerializer_Test }
- TSDOBaseSerializer_Test = class(TWstBaseTest)
- protected
- class function CreateSerializerStream() : ISDOSerializerStream; virtual; abstract;
- procedure Compare(const A, B : ISDOChangedDataObjectListEx; const AOptions : TListCompareOptions = []);overload;
- procedure Compare(const A, B : TDataObjectChangeInfo);overload;
- procedure Compare(const A, B : TValueBuffer; const ADataType : TSDOTypeKind);overload;
- procedure Compare(const A, B : TValueSetting);overload;
- procedure Compare(const A, B : TManyValuePropChangesList);overload;
- procedure CheckEquals(expected, actual: TSDODate; msg: string = ''; const AStrict : Boolean = True); overload;
- protected
- function CreateSdoTypes() : ISDODataFactory;
- function CreateCompanyObject(const AFactory : ISDODataFactory) : ISDODataObject;
- end;
- { TSDOSerializer_Test }
- TSDOSerializer_Test = class(TSDOBaseSerializer_Test)
- protected
- //function GetFileName() : string;
- procedure CompareTypesInclude(
- // A included in B ?
- const A,B : ISDOTypeList
- );
- published
- procedure save_to_stream();
- procedure save_to_stream_without_name();
- procedure save_to_file();
- procedure save_to_file_without_name();
- procedure save_to_file_null_bool_prop();
- procedure save_to_file_null_byte_prop();
- procedure save_to_file_null_bytes_prop();
- procedure save_to_file_null_char_prop();
- procedure save_to_file_null_currency_prop();
- procedure save_to_file_null_datetime_prop();
- procedure save_to_file_null_double_prop();
- procedure save_to_file_null_float_prop();
- procedure save_to_file_null_int_prop();
- procedure save_to_file_null_long_prop();
- procedure save_to_file_null_object_prop();
- procedure save_to_file_null_short_prop();
- procedure save_to_file_null_string_prop();
- procedure load_from_stream_start_with_empty();
- procedure load_from_stream_one_object();
- procedure load_from_stream_two_object();
- procedure load_from_file_start_with_empty();
- procedure load_from_file_one_object();
- procedure load_from_file_two_object();
- // -- tests with ChangeSummary --
- procedure save_to_file_changesummary_simple();
- procedure save_to_file_changesummary_object_modify_nested();
- procedure save_to_file_changesummary_prop_list_bool();
- procedure save_to_file_changesummary_prop_list_byte();
- {$IFDEF HAS_SDO_BYTES}
- procedure save_to_file_changesummary_prop_list_bytes();
- {$ENDIF HAS_SDO_BYTES}
- {$IFDEF HAS_SDO_CHAR}
- procedure save_to_file_changesummary_prop_list_char();
- {$ENDIF HAS_SDO_CHAR}
- {$IFDEF HAS_SDO_CURRENCY}
- procedure save_to_file_changesummary_prop_list_currency();
- {$ENDIF HAS_SDO_CURRENCY}
- procedure save_to_file_changesummary_prop_list_date();
- {$IFDEF HAS_SDO_DOUBLE}
- procedure save_to_file_changesummary_prop_list_double();
- {$ENDIF HAS_SDO_DOUBLE}
- {$IFDEF HAS_SDO_FLOAT}
- procedure save_to_file_changesummary_prop_list_float();
- {$ENDIF HAS_SDO_FLOAT}
- procedure save_to_file_changesummary_prop_list_integer();
- {$IFDEF HAS_SDO_LONG}
- procedure save_to_file_changesummary_prop_list_long();
- {$ENDIF HAS_SDO_LONG}
- procedure save_to_file_changesummary_prop_list_object();
- procedure save_to_file_changesummary_prop_list_object_nested();
- {$IFDEF HAS_SDO_SHORT}
- procedure save_to_file_changesummary_prop_list_short();
- {$ENDIF HAS_SDO_SHORT}
- procedure save_to_file_changesummary_prop_list_string();
- procedure save_to_file_changesummary_object_create();
- procedure save_to_file_changesummary_object_create_cont_ref();
- procedure save_to_file_changesummary_object_delete();
- procedure save_to_file_changesummary_object_delete_nested();
- procedure save_to_file_changesummary_object_delete_2_objects_same_type();
- procedure save_to_file_changesummary_object_2_objects_same_type_del_upd();
- procedure load_from_file_changesummary_simple();
- procedure load_from_file_changesummary_bool();
- procedure load_from_file_changesummary_byte();
- {$IFDEF HAS_SDO_BYTES}
- procedure load_from_file_changesummary_bytes();
- {$ENDIF HAS_SDO_BYTES}
- {$IFDEF HAS_SDO_CHAR}
- procedure load_from_file_changesummary_char();
- {$ENDIF HAS_SDO_CHAR}
- {$IFDEF HAS_SDO_CURRENCY}
- procedure load_from_file_changesummary_currency();
- {$ENDIF HAS_SDO_CURRENCY}
- procedure load_from_file_changesummary_date();
- {$IFDEF HAS_SDO_DOUBLE}
- procedure load_from_file_changesummary_double();
- {$ENDIF HAS_SDO_DOUBLE}
- procedure load_from_file_changesummary_integer();
- {$IFDEF HAS_SDO_LONG}
- procedure load_from_file_changesummary_long();
- {$ENDIF HAS_SDO_LONG}
- {$IFDEF HAS_SDO_FLOAT}
- procedure load_from_file_changesummary_float();
- {$ENDIF HAS_SDO_FLOAT}
- {$IFDEF HAS_SDO_SHORT}
- procedure load_from_file_changesummary_short();
- {$ENDIF HAS_SDO_SHORT}
- procedure load_from_file_changesummary_string();
- procedure load_from_file_changesummary_object_create_cont_ref();
- procedure load_from_file_changesummary_object_delete();
- procedure load_from_file_changesummary_object_delete_nested();
- procedure load_from_file_changesummary_object_delete_2_objects_same_type();
- procedure load_from_file_changesummary_object_2_objects_same_type_del_upd();
-
- procedure load_from_file_changesummary_prop_list_bool();
- procedure load_from_file_changesummary_prop_list_byte();
- {$IFDEF HAS_SDO_BYTES}
- procedure load_from_file_changesummary_prop_list_bytes();
- {$ENDIF HAS_SDO_BYTES}
- {$IFDEF HAS_SDO_CHAR}
- procedure load_from_file_changesummary_prop_list_char();
- {$ENDIF HAS_SDO_CHAR}
- {$IFDEF HAS_SDO_CURRENCY}
- procedure load_from_file_changesummary_prop_list_currency();
- {$ENDIF HAS_SDO_CURRENCY}
- procedure load_from_file_changesummary_prop_list_date();
- {$IFDEF HAS_SDO_DOUBLE}
- procedure load_from_file_changesummary_prop_list_double();
- {$ENDIF HAS_SDO_DOUBLE}
- {$IFDEF HAS_SDO_FLOAT}
- procedure load_from_file_changesummary_prop_list_float();
- {$ENDIF HAS_SDO_FLOAT}
- procedure load_from_file_changesummary_prop_list_integer();
- {$IFDEF HAS_SDO_LONG}
- procedure load_from_file_changesummary_prop_list_long();
- {$ENDIF HAS_SDO_LONG}
- procedure load_from_file_changesummary_prop_list_object();
- procedure load_from_file_changesummary_prop_list_object_nested();
- {$IFDEF HAS_SDO_SHORT}
- procedure load_from_file_changesummary_prop_list_short();
- {$ENDIF HAS_SDO_SHORT}
- procedure load_from_file_changesummary_prop_list_string();
- procedure save_to_and_load_file_ref_prop_crash_1();
- procedure save_to_and_load_file_ref_prop_crash_2();
- procedure load_from_file_reference_property();
- procedure save_object_open_type();
- procedure load_object_open_type();
- end;
- TSDOSerializerXML_Test = class(TSDOSerializer_Test)
- protected
- class function CreateSerializerStream() : ISDOSerializerStream; override;
- end;
- { TSDOSerializerBinary_Test }
- TSDOSerializerBinary_Test = class(TSDOBaseSerializer_Test)
- protected
- class function CreateSerializerStream() : ISDOSerializerStream; override;
- published
- procedure to_stream();
- procedure to_stream_without_name();
- procedure to_stream_changesummary_object_modify_nested();
- procedure to_stream_changesummary_simple();
- procedure to_stream_changesummary_prop_list_byte();
- procedure to_stream_changesummary_prop_list_bool();
- procedure to_stream_changesummary_prop_list_string();
- procedure to_stream_changesummary_prop_list_Integer();
- procedure to_stream_changesummary_prop_list_long();
- procedure to_stream_changesummary_prop_list_double();
- procedure to_stream_changesummary_prop_list_float();
- procedure to_stream_changesummary_prop_list_short();
- procedure to_stream_changesummary_prop_list_char();
- procedure to_stream_changesummary_prop_list_date();
- procedure to_stream_changesummary_prop_list_currency();
- procedure to_stream_changesummary_prop_list_bytes();
- procedure to_stream_changesummary_prop_list_objects();
- procedure to_stream_changesummary_object_delete();
- procedure to_stream_changesummary_object_delete_nested();
- procedure to_stream_changesummary_object_create_cont_ref();
- procedure null_bool_prop();
- procedure null_byte_prop();
- procedure null_bytes_prop();
- procedure null_char_prop();
- procedure null_currency_prop();
- procedure null_datetime_prop();
- procedure null_double_prop();
- procedure null_float_prop();
- procedure null_integer_prop();
- procedure null_long_prop();
- procedure null_object_prop();
- procedure null_short_prop();
- procedure null_string_prop();
- procedure changesummary_object_create();
- procedure changesummary_object_create_cont_ref();
- procedure changesummary_object_delete();
- procedure changesummary_object_delete_nested();
- procedure changesummary_object_delete_2_objects_same_type();
- end;
- implementation
- uses
- typinfo,
- sdo_datafactory, sdo_dataobject,
- sdo_serialization_xml, sdo_serialization_binary
- {$IFNDEF FPC}
- , xmldom, sdo_win_xml
- {$ELSE}
- , DOM, sdo_fpc_xml, XMLRead, XMLWrite
- {$ENDIF}
- , sdo_consts, sdo_utils, Math, DateUtils, sdo_date_utils;
- const
- s_uri = 'company.xsd';
- s_Employee = 'Employee';
- s_EmployeeType = 'EmployeeType';
- s_DepartmentType = 'DepartmentType';
- s_CompanyType = 'CompanyType';
- s_company = 'company';
- s_list_bool = 'list_bool';
- s_list_byte = 'list_byte';
- s_list_bytes = 'list_bytes';
- s_list_char = 'list_char';
- s_list_currency = 'list_currency';
- s_list_date = 'list_date';
- s_list_double = 'list_double';
- s_list_float = 'list_float';
- s_list_int = 'list_int';
- s_list_long = 'list_long';
- s_list_object = 'list_object';
- s_list_short = 'list_short';
- s_list_string = 'list_string';
- s_location = 'location';
- s_manager = 'manager';
- s_name = 'name';
- s_number = 'number';
- s_sn = 'SN';
- s_age = 'age';
- s_birthDate = 'birthDate';
-
- s_bool_prop = 'bool_prop';
- s_byte_prop = 'byte_prop';
- s_bytes_prop = 'bytes_prop';
- s_char_prop = 'char_prop';
- s_currency_prop = 'currency_prop';
- s_datetime_prop = 'datetime_prop';
- s_double_prop = 'double_prop';
- s_float_prop = 'float_prop';
- s_int_prop = 'int_prop';
- s_long_prop = 'long_prop';
- s_object_prop = 'object_prop';
- s_object_type = 'object_type';
- s_object_type2 = 'object_type2';
- s_short_prop = 'short_prop';
- s_string_prop = 'string_prop';
-
- function CompareNodes(const A,B : TDOMNode) : Boolean;overload;
- var
- ca, cb : TDOMNode;
- i : PtrInt;
- begin
- if ( A = nil ) and ( B = nil ) then begin
- Result := True;
- end else if ( A <> nil ) and ( B <> nil ) then begin
- Result := False;
- if ( A.NodeName = B.NodeName ) and
- ( A.NodeValue = B.NodeValue )
- then begin
- if ( ( A.FirstChild = nil ) and ( B.FirstChild = nil ) ) or
- ( ( A.FirstChild <> nil ) and ( B.FirstChild <> nil ) )
- then begin
- ca := a.FirstChild;
- cb := b.FirstChild;
- while ( ca <> nil ) do begin
- if not CompareNodes(ca,cb) then
- Exit;
- ca := ca.NextSibling;
- cb := cb.NextSibling;
- end;
- if ( ( A.Attributes = nil ) and ( B.Attributes = nil ) ) or
- ( ( A.Attributes <> nil ) and ( B.Attributes <> nil ) )
- then begin
- if ( A.Attributes <> nil ) then begin
- if ( A.Attributes.Length <> B.Attributes.Length ) then
- Exit;
- if ( A.Attributes.Length > 0 ) then begin
- for i := 0 to Pred(A.Attributes.Length) do begin
- if not CompareNodes(A.Attributes.Item[i],B.Attributes.GetNamedItem(A.Attributes.Item[i].NodeName)) then
- Exit;
- end;
- end;
- end;
- Result := True;
- end;
- end;
- end;
- end else begin
- Result := False;
- end;
- end;
- { TSDOSerializerBinary_Test }
- class function TSDOSerializerBinary_Test.CreateSerializerStream: ISDOSerializerStream;
- begin
- Result := TSDOSerializationStreamBinary.Create();
- end;
- procedure TSDOSerializerBinary_Test.to_stream();
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- begin
- locFactoryA := CreateSdoTypes();
- objA := CreateCompanyObject(locFactoryA);
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(s_CompanyType,objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('company.soap.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.to_stream_without_name();
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- begin
- locFactoryA := CreateSdoTypes();
- objA := CreateCompanyObject(locFactoryA);
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('company.soap.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.to_stream_changesummary_object_modify_nested();
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB, locDep, locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_DepartmentType,[]);
- locFactoryA.AddType(s_uri,s_Employee,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_Employee,s_uri,s_Employee,[pfIsContainment]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFactoryA.addProperty(s_uri,s_Employee,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_Employee,s_sn,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_Employee,s_manager,sdo_namespace,SDOTypeDefaultTypeNames[BooleanType],[pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_Employee,s_age,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[pfIsAttribute]);
- locDep := locFactoryA.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setInteger(s_number,1210);
- locEmployee := locDep.createDataObject(s_Employee);
- locEmployee.setString(s_name,'Inoussa O.');
- locEmployee.setString(s_sn,'002');
- locEmployee.setBoolean(s_manager,True);
- locEmployee.setByte(s_age,12);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- locEmployee.setString(s_name,'Inoussa OUEDRAOGO');
- locEmployee.setString(s_sn,'001');
- locEmployee.setByte(s_age,32);
- objA := locDep;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('change_summary_object_modify_nested.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.to_stream_changesummary_simple();
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_Employee,[]);
- locFactoryA.addProperty(s_uri,s_Employee,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_Employee,s_sn,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_Employee,s_manager,sdo_namespace,SDOTypeDefaultTypeNames[BooleanType],[pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_Employee,s_age,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_Employee,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- objA := locFactoryA.createNew(s_uri,s_Employee);
- objA.setString(s_name,'Inoussa O.');
- objA.setString(s_sn,'002');
- objA.setBoolean(s_manager,True);
- objA.setByte(s_age,30);
- locCS := objA.getChangeSummary();
- locCS.beginLogging();
- objA.setString(s_name,'Inoussa OUEDRAOGO');
- objA.setString(s_sn,'001');
- objA.setByte(s_age,32);
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('change_summary_simple.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.to_stream_changesummary_prop_list_byte();
- const
- LIST_PROP_NAME = s_list_byte;
- LIST_PROP_TYPE = ByteType;
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_DepartmentType,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,LIST_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[LIST_PROP_TYPE],[pfIsMany]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFactoryA.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(LIST_PROP_NAME);
- ls.append(TSDOByte(1));
- ls.append(TSDOByte(2));
- ls.append(TSDOByte(3));
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setByte(0,10);
- ls.append(TSDOByte(123));
- ls.append(TSDOByte(45));
- ls.setByte(1,20);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, TSDOByte(107));
- ls.append(TSDOByte(89));
- objA := locDep;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_prop_list_byte.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.to_stream_changesummary_prop_list_bool();
- const
- LIST_PROP_NAME = s_list_byte;
- LIST_PROP_TYPE = ByteType;
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_DepartmentType,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_list_bool,sdo_namespace,SDOTypeDefaultTypeNames[BooleanType],[pfIsMany]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFactoryA.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setInteger(s_number,1210);
- ls := locDep.getList(s_list_bool);
- ls.append(False);
- ls.append(True);
- ls.append(False);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setBoolean(0,True);
- ls.append(True);
- ls.append(True);
- ls.setBoolean(1,False);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, False);
- ls.append(False);
- objA := locDep;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_prop_list_bool.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.to_stream_changesummary_prop_list_string();
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_DepartmentType,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_list_string,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsMany]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFactoryA.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setInteger(s_number,1210);
- ls := locDep.getList(s_list_string);
- ls.append('wst');
- ls.append('sdo');
- ls.append('fpc-lazarus');
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setString(0,'azerty');
- ls.append('Ouagadougou');
- ls.append('BF');
- ls.setString(1,'kis');
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, '107612');
- ls.append('this is a multi words text. Lets test it!');
- objA := locDep;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_prop_list_string.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.to_stream_changesummary_prop_list_Integer();
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_DepartmentType,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_list_int,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[pfIsMany]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFactoryA.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setInteger(s_number,1210);
- ls := locDep.getList(s_list_int);
- ls.append(1);
- ls.append(2);
- ls.append(3);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setInteger(0,10);
- ls.append(123);
- ls.append(456);
- ls.setInteger(1,20);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, 1076);
- ls.append(789);
- objA := locDep;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_prop_list_integer.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.to_stream_changesummary_prop_list_long();
- const
- LIST_PROP_NAME = s_list_long;
- LIST_PROP_TYPE = LongType;
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_DepartmentType,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,LIST_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[LIST_PROP_TYPE],[pfIsMany]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFactoryA.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(LIST_PROP_NAME);
- ls.append(TSDOLong(11111111111111111));
- ls.append(TSDOLong(-2222222222222222));
- ls.append(TSDOLong(333333333333333333));
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setLong(0,4444444444444444444);
- ls.append(TSDOLong(5555555555555555555));
- ls.append(TSDOLong(-6666666666666666666));
- ls.setLong(1,7777777777777777777);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, TSDOLong(8));
- ls.append(TSDOLong(-9));
- objA := locDep;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_prop_list_long.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- const
- DOUBLE_VALUES_REPEATED_DIGITED : array[0..8] of TSDODouble = (
- 111111111, -22222222, 3333333333, 44444444, 555555555,
- -666666666, 777777777, 8, -9
- );
- procedure TSDOSerializerBinary_Test.to_stream_changesummary_prop_list_double();
- const
- LIST_PROP_NAME = s_list_double;
- LIST_PROP_TYPE = DoubleType;
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_DepartmentType,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,LIST_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[LIST_PROP_TYPE],[pfIsMany]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFactoryA.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(LIST_PROP_NAME);
- ls.append(DOUBLE_VALUES_REPEATED_DIGITED[0]);
- ls.append(DOUBLE_VALUES_REPEATED_DIGITED[1]);
- ls.append(DOUBLE_VALUES_REPEATED_DIGITED[2]);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setDouble(0,DOUBLE_VALUES_REPEATED_DIGITED[3]);
- ls.append(DOUBLE_VALUES_REPEATED_DIGITED[4]);
- ls.append(DOUBLE_VALUES_REPEATED_DIGITED[5]);
- ls.setDouble(1,DOUBLE_VALUES_REPEATED_DIGITED[6]);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, DOUBLE_VALUES_REPEATED_DIGITED[7]);
- ls.append(DOUBLE_VALUES_REPEATED_DIGITED[8]);
- objA := locDep;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_prop_list_double.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- const
- FLOAT_VALUES_REPEATED_DIGITED : array[0..8] of TSDOFloat = (
- 111111111, -222222222, 333333333, 444444444, 5555555555,
- -6666666666, 777777777, 8, -9
- );
- procedure TSDOSerializerBinary_Test.to_stream_changesummary_prop_list_float();
- const
- LIST_PROP_NAME = s_list_float;
- LIST_PROP_TYPE = FloatType;
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_DepartmentType,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,LIST_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[LIST_PROP_TYPE],[pfIsMany]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFactoryA.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(LIST_PROP_NAME);
- ls.append(FLOAT_VALUES_REPEATED_DIGITED[0]);
- ls.append(FLOAT_VALUES_REPEATED_DIGITED[1]);
- ls.append(FLOAT_VALUES_REPEATED_DIGITED[2]);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setFloat(0,FLOAT_VALUES_REPEATED_DIGITED[3]);
- ls.append(FLOAT_VALUES_REPEATED_DIGITED[4]);
- ls.append(FLOAT_VALUES_REPEATED_DIGITED[5]);
- ls.setFloat(1,FLOAT_VALUES_REPEATED_DIGITED[6]);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, FLOAT_VALUES_REPEATED_DIGITED[7]);
- ls.append(FLOAT_VALUES_REPEATED_DIGITED[8]);
- objA := locDep;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_prop_list_float.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.to_stream_changesummary_prop_list_short();
- const
- LIST_PROP_NAME = s_list_short;
- LIST_PROP_TYPE = ShortType;
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_DepartmentType,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,LIST_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[LIST_PROP_TYPE],[pfIsMany]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFactoryA.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(LIST_PROP_NAME);
- ls.append(TSDOShort(1));
- ls.append(TSDOShort(2));
- ls.append(TSDOShort(3));
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setShort(0,10);
- ls.append(TSDOShort(12345));
- ls.append(TSDOShort(-5245));
- ls.setShort(1,20);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, TSDOShort(107));
- ls.append(TSDOShort(89));
- objA := locDep;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_prop_list_short.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.to_stream_changesummary_prop_list_char();
- const
- LIST_PROP_NAME = s_list_char;
- LIST_PROP_TYPE = CharacterType;
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_DepartmentType,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,LIST_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[LIST_PROP_TYPE],[pfIsMany]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFactoryA.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(LIST_PROP_NAME);
- ls.append(TSDOChar('k'));
- ls.append(TSDOChar('y'));
- ls.append(TSDOChar('g'));
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setCharacter(0,TSDOChar('j'));
- ls.append(TSDOChar('a'));
- ls.append(TSDOChar('x'));
- ls.setCharacter(1,TSDOChar('v'));
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, TSDOChar('A'));
- ls.append(TSDOChar('Z'));
- objA := locDep;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_prop_list_char.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.to_stream_changesummary_prop_list_date();
- const
- LIST_PROP_NAME = s_list_date;
- LIST_PROP_TYPE = DateTimeType;
- const VAL_1 : TSDODate = ( Date : 0; HourOffset : 0; MinuteOffset : 0; );
- VAL_2 : TSDODate = ( Date : 0; HourOffset : 0; MinuteOffset : 0; );
- VAL_3 : TSDODate = ( Date : 0; HourOffset : 0; MinuteOffset : 0; );
- VAL_4 : TSDODate = ( Date : 0; HourOffset : 0; MinuteOffset : 0; );
- VAL_5 : TSDODate = ( Date : 0; HourOffset : 0; MinuteOffset : 0; );
- procedure SetConstants();
- var
- d : TSDODate;
- begin
- FillChar(d,SizeOf(TSDODate),#0);
- d.Date := EncodeDateTime(1976,10,12,23,34,45,56);
- d.HourOffset := 5;
- d.MinuteOffset := 6;
- PSDODate(@VAL_1)^ := d;
- FillChar(d,SizeOf(TSDODate),#0);
- d.Date := EncodeDateTime(2008,7,8,9,10,11,12);
- d.HourOffset := 0;
- d.MinuteOffset := 13;
- PSDODate(@VAL_3)^ := d;
- FillChar(d,SizeOf(TSDODate),#0);
- d.Date := EncodeDateTime(2009,9,1,2,3,0,1);
- d.HourOffset := 0;
- d.MinuteOffset := 13;
- PSDODate(@VAL_4)^ := d;
- FillChar(d,SizeOf(TSDODate),#0);
- d.Date := EncodeDateTime(1900,11,8,1,2,0,0);
- d.HourOffset := 0;
- d.MinuteOffset := 13;
- PSDODate(@VAL_5)^ := d;
- end;
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_DepartmentType,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_birthDate,sdo_namespace,SDOTypeDefaultTypeNames[DateTimeType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_list_date,sdo_namespace,SDOTypeDefaultTypeNames[DateTimeType],[pfIsMany]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFactoryA.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setDate(s_birthDate,VAL_1);
- ls := locDep.getList(s_list_date);
- ls.append(VAL_1);
- ls.append(VAL_2);
- ls.append(VAL_3);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setDate(0,VAL_4);
- ls.append(VAL_5);
- ls.append(VAL_1);
- ls.setDate(1,VAL_2);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, VAL_3);
- ls.append(VAL_4);
- objA := locDep;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_prop_list_date.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- const
- CURRENCY_VALUES_REPEATED_DIGITED : array[0..8] of TSDOCurrency = (
- 1111111111111.1111, -222222222222.2222, 33333333333333.3333, 444444444444444.4444, 555555555555555.5555,
- -666666666666666.6666, 777777777777777.7777, 8, -9
- );
- procedure TSDOSerializerBinary_Test.to_stream_changesummary_prop_list_currency();
- const
- LIST_PROP_NAME = s_list_currency;
- LIST_PROP_TYPE = CurrencyType;
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_DepartmentType,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,LIST_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[LIST_PROP_TYPE],[pfIsMany]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFactoryA.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(LIST_PROP_NAME);
- ls.appendCurrency(CURRENCY_VALUES_REPEATED_DIGITED[0]);
- ls.appendCurrency(CURRENCY_VALUES_REPEATED_DIGITED[1]);
- ls.appendCurrency(CURRENCY_VALUES_REPEATED_DIGITED[2]);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setCurrency(0,CURRENCY_VALUES_REPEATED_DIGITED[3]);
- ls.appendCurrency(CURRENCY_VALUES_REPEATED_DIGITED[4]);
- ls.appendCurrency(CURRENCY_VALUES_REPEATED_DIGITED[5]);
- ls.setCurrency(1,CURRENCY_VALUES_REPEATED_DIGITED[6]);
- ls.delete(0);
- ls.delete(1);
- ls.insertCurrency(2, CURRENCY_VALUES_REPEATED_DIGITED[7]);
- ls.appendCurrency(CURRENCY_VALUES_REPEATED_DIGITED[8]);
- objA := locDep;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_prop_list_currency.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.to_stream_changesummary_prop_list_bytes();
- const
- LIST_PROP_NAME = s_list_bytes;
- LIST_PROP_TYPE = BytesType;
- var
- VAL_1, VAL_2, VAL_3, VAL_4, VAL_5 : TSDOBytes;
- procedure SetConstants();
- var
- v : TSDOBytes;
- k : Integer;
- begin
- SetLength(v,10);
- for k := 0 to High(v) do
- v[k] := k mod High(Byte);
- VAL_1 := v;
- v := nil;
- VAL_2 := nil;
- SetLength(v,20);
- for k := 0 to High(v) do
- v[k] := ( ( 3 * k ) + 1 ) mod High(Byte);
- VAL_3 := v;
- v := nil;
- SetLength(v,30);
- for k := 0 to High(v) do
- v[k] := ( ( 3 * k ) + 1 ) mod High(Byte);
- VAL_4 := v;
- v := nil;
- SetLength(v,40);
- for k := 0 to High(v) do
- v[k] := ( ( 3 * k ) + 1 ) mod High(Byte);
- VAL_5 := v;
- v := nil;
- end;
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_DepartmentType,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_birthDate,sdo_namespace,SDOTypeDefaultTypeNames[DateTimeType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,LIST_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[LIST_PROP_TYPE],[pfIsMany]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFactoryA.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- //locDep.setBytes(s_birthDate,VAL_1);
- ls := locDep.getList(LIST_PROP_NAME);
- ls.appendBytes(VAL_1);
- ls.appendBytes(VAL_2);
- ls.appendBytes(VAL_3);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setBytes(0,VAL_4);
- ls.appendBytes(VAL_5);
- ls.appendBytes(VAL_1);
- ls.setBytes(1,VAL_2);
- ls.delete(0);
- ls.delete(1);
- ls.insertBytes(2, VAL_3);
- ls.appendBytes(VAL_4);
- objA := locDep;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_prop_list_bytes.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.to_stream_changesummary_prop_list_objects();
- function create_employee(
- const AFac : ISDODataFactory;
- const AName, ASN : TSDOString;
- const AManager : Boolean
- ) : ISDODataObject;
- begin
- Result := AFac.createNew(s_uri, s_EmployeeType);
- Result.setString(s_name, AName);
- Result.setString(s_sn, ASN);
- Result.setBoolean(s_manager, AManager);
- end;
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- locDep, e1, e2 : ISDODataObject;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm , x: TMemoryStream;
- ls : ISDODataObjectList;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_EmployeeType,[]);
- locFactoryA.addProperty(s_uri, s_EmployeeType,'name',sdo_namespace,'string',[]);
- locFactoryA.addProperty(s_uri, s_EmployeeType,'SN',sdo_namespace,'string',[]);
- locFactoryA.addProperty(s_uri, s_EmployeeType,'manager',sdo_namespace,'boolean',[]);
- locFactoryA.AddType(s_uri,s_DepartmentType,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_list_object,s_uri,s_EmployeeType,[pfIsMany,pfIsContainment]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFactoryA.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setInteger(s_number,1210);
- ls := locDep.getList(s_list_object);
- ls.append(create_employee(locFactoryA,'Inoussa O.', '0001', True));
- ls.append(create_employee(locFactoryA,'Kis O.', '0002', False));
- ls.append(create_employee(locFactoryA,'WST', '0003', False));
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- e1 := create_employee(locFactoryA,'FPC', '0010', False);
- e2 := create_employee(locFactoryA,'Lazarus', '0011', False);
- ls.setDataObject(0,e1);
- ls.append(create_employee(locFactoryA,'FPC 2 ', '0020', True));
- ls.insert(3,create_employee(locFactoryA,'FPC 5', '0050', False));
- ls.append(create_employee(locFactoryA,'FPC 3', '0030', False));
- ls.setDataObject(1,e2);
- ls.delete(0);
- ls.delete(1);
- ls.append(create_employee(locFactoryA,'FPC 4', '0040', True));
- objA := locDep;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_prop_list_object.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- x := TMemoryStream.Create();
- s := TSDOSerializer.Create(locFactoryB,TSDOSerializerStreamXML.Create());
- s.save(objB,x);
- x.SaveToFile(sdoExpandLocalFileName('changesummary_prop_list_object.xxx.xml'));
- x.Free();
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.to_stream_changesummary_object_delete();
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locDep, locEmployee : ISDODataObject;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_DepartmentType,[]);
- locFactoryA.AddType(s_uri,s_Employee,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType], [pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_Employee,s_uri,s_Employee,[pfIsContainment]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFactoryA.addProperty(s_uri,s_Employee,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_Employee,s_sn,sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_Employee,s_manager,sdo_namespace,SDOTypeDefaultTypeNames[BooleanType], [pfIsAttribute]);
- locDep := locFactoryA.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locEmployee := locDep.createDataObject(s_Employee);
- locEmployee.setString(s_name,'Inoussa O.');
- locEmployee.setString(s_sn,'002');
- locEmployee.setBoolean(s_manager,True);
- locCS := locDep.getChangeSummary();
- locDep.setString(s_location,'Ouaga, BF');
- locCS.beginLogging();
- locDep.setInteger(s_number,1210);
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- locDep.setDataObject(s_Employee,nil);
- objA := locDep;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_object_delete.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.to_stream_changesummary_object_delete_nested;
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locA, locB, locC, locD : ISDODataObject;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,'a',[]);
- locFactoryA.AddType(s_uri,'b',[]);
- locFactoryA.AddType(s_uri,'c',[]);
- locFactoryA.AddType(s_uri,'d',[]);
- locFactoryA.addProperty(s_uri,'a','p_a_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFactoryA.addProperty(s_uri,'a','p_ab',s_uri,'b',[pfIsContainment]);
- locFactoryA.addProperty(s_uri,'a','p_ac',s_uri,'c',[]);
- locFactoryA.addProperty(s_uri,'a','p_ad',s_uri,'d',[]);
- locFactoryA.addProperty(s_uri,'a',s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFactoryA.addProperty(s_uri,'b','p_bc',s_uri,'c',[pfIsContainment]);
- locFactoryA.addProperty(s_uri,'b','p_b_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFactoryA.addProperty(s_uri,'c','p_cd',s_uri,'d',[pfIsContainment]);
- locFactoryA.addProperty(s_uri,'c','p_c_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFactoryA.addProperty(s_uri,'d','p_d_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locA := locFactoryA.createNew(s_uri,'a');
- locA.setString('p_a_str','sample A'' property.');
- locB := locA.createDataObject('p_ab');
- locB.setString('p_b_str','Inoussa O.');
- locC := locB.createDataObject('p_bc');
- locC.setString('p_c_str','azerty');
- locD := locC.createDataObject('p_cd');
- locD.setString('p_d_str','D value');
- locA.setDataObject('p_ac',locC);
- locA.setDataObject('p_ad',locD);
- locCS := locA.getChangeSummary();
- locCS.beginLogging();
- locC.setDataObject('p_cd',nil);
- locA.setDataObject('p_ab',nil);
- objA := locA;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_object_delete_nested.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.to_stream_changesummary_object_create_cont_ref();
- var
- locFac : ISDODataFactory;
- locDep, locEmployee, locLoadedDep : ISDODataObject;
- locCS : ISDOChangeSummary;
- s : ISDOSerializer;
- localFileName : string;
- begin
- localFileName := sdoExpandLocalFileName('change_summary_object_create_cont_ref.binary');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_DepartmentType,s_Employee,s_uri,s_Employee,[pfIsContainment]);
- locFac.addProperty(s_uri,s_DepartmentType,'employee_ref',s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFac.addProperty(s_uri,s_Employee,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_Employee,s_sn,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_Employee,s_manager,sdo_namespace,SDOTypeDefaultTypeNames[BooleanType],[pfIsAttribute]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locCS := locDep.getChangeSummary();
- locDep.setString(s_location,'Ouaga, BF');
- locCS.beginLogging();
- locDep.setInteger(s_number,1210);
- locEmployee := locDep.createDataObject(s_Employee);
- locEmployee.setString(s_name,'Inoussa O.');
- locEmployee.setString(s_sn,'002');
- locEmployee.setBoolean(s_manager,True);
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- locDep.setDataObject('employee_ref',locEmployee);
- locEmployee.setString(s_name,'Inoussa OUEDRAOGO');
- locEmployee.setString(s_sn,'001');
- s := TSDOSerializer.Create(locFac,CreateSerializerStream());
- s.Save(locDep,localFileName);
- s := TSDOSerializer.Create(locFac,CreateSerializerStream());
- locLoadedDep := s.load(localFileName);
- Check(TSDOEqualityHelper.equal(locLoadedDep,locDep),'Object');
- Compare(
- locDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locDep.getChangeSummary().undoChanges();
- locLoadedDep.getChangeSummary().undoChanges();
- CheckEquals( 0, locDep.getChangeSummary().getChangedDataObjects().size());
- CheckEquals( 0, locLoadedDep.getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locDep, locLoadedDep),'Object');
- end;
- procedure TSDOSerializerBinary_Test.null_bool_prop();
- const
- TARGET_PROP_NAME = s_bool_prop; TARGET_PROP_TYPE = BooleanType;
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[TARGET_PROP_TYPE],[]);
- end;
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- s.save(locInstance,ms);
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.null_byte_prop();
- const
- TARGET_PROP_NAME = s_byte_prop; TARGET_PROP_TYPE = ByteType;
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[TARGET_PROP_TYPE],[]);
- end;
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- s.save(locInstance,ms);
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.null_bytes_prop();
- const
- TARGET_PROP_NAME = s_bytes_prop; TARGET_PROP_TYPE = BytesType;
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[TARGET_PROP_TYPE],[]);
- end;
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- s.save(locInstance,ms);
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.null_char_prop();
- const
- TARGET_PROP_NAME = s_char_prop; TARGET_PROP_TYPE = CharacterType;
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[TARGET_PROP_TYPE],[]);
- end;
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- s.save(locInstance,ms);
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.null_currency_prop();
- const
- TARGET_PROP_NAME = s_currency_prop; TARGET_PROP_TYPE = CurrencyType;
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[TARGET_PROP_TYPE],[]);
- end;
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- s.save(locInstance,ms);
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.null_datetime_prop();
- const
- TARGET_PROP_NAME = s_datetime_prop; TARGET_PROP_TYPE = DateTimeType;
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[TARGET_PROP_TYPE],[]);
- end;
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- s.save(locInstance,ms);
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.null_double_prop();
- const
- TARGET_PROP_NAME = s_double_prop; TARGET_PROP_TYPE = DoubleType;
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[TARGET_PROP_TYPE],[]);
- end;
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- s.save(locInstance,ms);
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.null_float_prop();
- const
- TARGET_PROP_NAME = s_float_prop; TARGET_PROP_TYPE = FloatType;
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[TARGET_PROP_TYPE],[]);
- end;
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- s.save(locInstance,ms);
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.null_integer_prop();
- const
- TARGET_PROP_NAME = s_int_prop; TARGET_PROP_TYPE = IntegerType;
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_string_prop,sdo_namespace,'String',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[TARGET_PROP_TYPE],[]);
- end;
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setString(s_string_prop,'azerty');
- ms := TMemoryStream.Create();
- try
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- s.save(locInstance,ms);
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getString(s_string_prop), locInstanceLoaded.getString(s_string_prop),s_string_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.null_long_prop();
- const
- TARGET_PROP_NAME = s_long_prop; TARGET_PROP_TYPE = LongType;
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[TARGET_PROP_TYPE],[]);
- end;
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- s.save(locInstance,ms);
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.null_object_prop();
- const
- TARGET_PROP_NAME = s_object_prop; TARGET_PROP_TYPE_NAME = s_object_type2;
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- Result.AddType(s_uri,s_object_type2,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,s_uri,TARGET_PROP_TYPE_NAME,[pfIsContainment]);
- locObj := Result.getType(s_uri,s_object_type2);
- Result.addProperty(locObj,s_string_prop,sdo_namespace,'String',[]);
- end;
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- s.save(locInstance,ms);
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.null_short_prop();
- const
- TARGET_PROP_NAME = s_short_prop; TARGET_PROP_TYPE = ShortType;
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[TARGET_PROP_TYPE],[]);
- end;
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- s.save(locInstance,ms);
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.null_string_prop();
- const
- TARGET_PROP_NAME = s_string_prop; TARGET_PROP_TYPE = stringType;
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[TARGET_PROP_TYPE],[]);
- end;
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- s.save(locInstance,ms);
- s := TSDOSerializer.Create(locFactory,CreateSerializerStream());
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.changesummary_object_create();
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locDep, locEmployee : ISDODataObject;
- ls : ISDODataObjectList;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_DepartmentType,[]);
- locFactoryA.AddType(s_uri,s_Employee,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_Employee,s_uri,s_Employee,[pfIsContainment]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFactoryA.addProperty(s_uri,s_Employee,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_Employee,s_sn,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_Employee,s_manager,sdo_namespace,SDOTypeDefaultTypeNames[BooleanType],[pfIsAttribute]);
- locDep := locFactoryA.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locCS := locDep.getChangeSummary();
- locDep.setString(s_location,'Ouaga, BF');
- locCS.beginLogging();
- locDep.setInteger(s_number,1210);
- locEmployee := locDep.createDataObject(s_Employee);
- locEmployee.setString(s_name,'Inoussa O.');
- locEmployee.setString(s_sn,'002');
- locEmployee.setBoolean(s_manager,True);
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- locEmployee.setString(s_name,'Inoussa OUEDRAOGO');
- locEmployee.setString(s_sn,'001');
- objA := locDep;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_object_create.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.changesummary_object_create_cont_ref();
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locDep, locEmployee : ISDODataObject;
- ls : ISDODataObjectList;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_DepartmentType,[]);
- locFactoryA.AddType(s_uri,s_Employee,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_Employee,s_uri,s_Employee,[pfIsContainment]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,'employee_ref',s_uri,s_Employee,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFactoryA.addProperty(s_uri,s_Employee,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_Employee,s_sn,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_Employee,s_manager,sdo_namespace,SDOTypeDefaultTypeNames[BooleanType],[pfIsAttribute]);
- locDep := locFactoryA.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locCS := locDep.getChangeSummary();
- locDep.setString(s_location,'Ouaga, BF');
- locCS.beginLogging();
- locDep.setInteger(s_number,1210);
- locEmployee := locDep.createDataObject(s_Employee);
- locEmployee.setString(s_name,'Inoussa O.');
- locEmployee.setString(s_sn,'002');
- locEmployee.setBoolean(s_manager,True);
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- locDep.setDataObject('employee_ref',locEmployee);
- locEmployee.setString(s_name,'Inoussa OUEDRAOGO');
- locEmployee.setString(s_sn,'001');
- objA := locDep;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_object_create_cont_ref.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.changesummary_object_delete();
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locDep, locEmployee : ISDODataObject;
- ls : ISDODataObjectList;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,s_DepartmentType,[]);
- locFactoryA.AddType(s_uri,s_Employee,[]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType], [pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_Employee,s_uri,s_Employee,[pfIsContainment]);
- locFactoryA.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFactoryA.addProperty(s_uri,s_Employee,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_Employee,s_sn,sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFactoryA.addProperty(s_uri,s_Employee,s_manager,sdo_namespace,SDOTypeDefaultTypeNames[BooleanType], [pfIsAttribute]);
- locDep := locFactoryA.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locEmployee := locDep.createDataObject(s_Employee);
- locEmployee.setString(s_name,'Inoussa O.');
- locEmployee.setString(s_sn,'002');
- locEmployee.setBoolean(s_manager,True);
- locCS := locDep.getChangeSummary();
- locDep.setString(s_location,'Ouaga, BF');
- locCS.beginLogging();
- locDep.setInteger(s_number,1210);
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- locDep.setDataObject(s_Employee,nil);
- objA := locDep;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_object_delete.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.changesummary_object_delete_nested();
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locA, locB, locC, locD : ISDODataObject;
- ls : ISDODataObjectList;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,'a',[]);
- locFactoryA.AddType(s_uri,'b',[]);
- locFactoryA.AddType(s_uri,'c',[]);
- locFactoryA.AddType(s_uri,'d',[]);
- locFactoryA.addProperty(s_uri,'a','p_a_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFactoryA.addProperty(s_uri,'a','p_ab',s_uri,'b',[pfIsContainment]);
- locFactoryA.addProperty(s_uri,'a','p_ac',s_uri,'c',[]);
- locFactoryA.addProperty(s_uri,'a','p_ad',s_uri,'d',[]);
- locFactoryA.addProperty(s_uri,'a',s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFactoryA.addProperty(s_uri,'b','p_bc',s_uri,'c',[pfIsContainment]);
- locFactoryA.addProperty(s_uri,'b','p_b_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFactoryA.addProperty(s_uri,'c','p_cd',s_uri,'d',[pfIsContainment]);
- locFactoryA.addProperty(s_uri,'c','p_c_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFactoryA.addProperty(s_uri,'d','p_d_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locA := locFactoryA.createNew(s_uri,'a');
- locA.setString('p_a_str','sample A'' property.');
- locB := locA.createDataObject('p_ab');
- locB.setString('p_b_str','Inoussa O.');
- locC := locB.createDataObject('p_bc');
- locC.setString('p_c_str','azerty');
- locD := locC.createDataObject('p_cd');
- locD.setString('p_d_str','D value');
- locA.setDataObject('p_ac',locC);
- locA.setDataObject('p_ad',locD);
- locCS := locA.getChangeSummary();
- locCS.beginLogging();
- locC.setDataObject('p_cd',nil);
- locA.setDataObject('p_ab',nil);
- objA := locA;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_object_delete_nested.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializerBinary_Test.changesummary_object_delete_2_objects_same_type();
- var
- locFactoryA, locFactoryB : ISDODataFactory;
- objA, objB : ISDODataObject;
- locCS : ISDOChangeSummary;
- objList : ISDODataObjectList;
- s : ISDOSerializer;
- strm : TMemoryStream;
- locA, locB : ISDODataObject;
- ls : ISDODataObjectList;
- begin
- locFactoryA := TSDODataFactory.Create() as ISDODataFactory;
- locFactoryA.AddType(s_uri,'a',[]);
- locFactoryA.AddType(s_uri,'b',[]);
- locFactoryA.addProperty(s_uri,'a','p_a_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], []);
- locFactoryA.addProperty(s_uri,'a','p_ab1',s_uri,'b',[pfIsContainment]);
- locFactoryA.addProperty(s_uri,'a','p_ab2',s_uri,'b',[pfIsContainment]);
- locFactoryA.addProperty(s_uri,'a',s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFactoryA.addProperty(s_uri,'b','p_b_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], []);
- locA := locFactoryA.createNew(s_uri,'a');
- locA.setString('p_a_str','sample A'' property.');
- locB := locA.createDataObject('p_ab1');
- locB.setString('p_b_str','p_ab1\p_b_str value');
- locB := locA.createDataObject('p_ab2');
- locB.setString('p_b_str','p_ab2\p_b_str value');
- locCS := locA.getChangeSummary();
- locCS.beginLogging();
- locA.setDataObject('p_ab1',nil);
- locA.setDataObject('p_ab2',nil);
- objA := locA;
- s := TSDOSerializer.Create(locFactoryA,CreateSerializerStream());
- strm := TMemoryStream.Create();
- try
- s.save(objA,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('changesummary_object_delete_2_objects_same_type.binary'));
- {$ENDIF TEST_GENERATE_FILE}
- locFactoryB := TSDODataFactory.Create();
- s := TSDOSerializer.Create(locFactoryB,CreateSerializerStream());
- strm.Position := 0;
- objList := TSDODataObjectList.Create(
- locFactoryB.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType])
- ) as ISDODataObjectList;
- s.load(strm,objList);
- CheckEquals(1,objList.size(),'objCount');
- objB := objList.getDataObject(0);
- Check(TSDOEqualityHelper.equal(objA,objB),'object');
- Compare(
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- Compare(
- objB.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- objA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- finally
- strm.Free();
- end;
- end;
- { TSDOBaseSerializer_Test }
- procedure TSDOBaseSerializer_Test.Compare(
- const A, B: ISDOChangedDataObjectListEx;
- const AOptions : TListCompareOptions
- );
- var
- i, c, j, k : PtrInt;
- tmpObj : ISDODataObject;
- begin
- Check(
- ( ( A = nil ) and ( B = nil ) ) or
- ( ( A <> nil ) and ( B <> nil ) ) ,
- 'nil'
- );
- if ( A <> nil ) then begin
- CheckEquals(A.size(),B.size(), 'size()');
- c := A.size();
- if ( c > 0 ) then begin
- if ( lcoCompareOrder in AOptions ) then begin
- for i := 0 to Pred(c) do begin
- CheckEquals(Ord(A.getType(i)), Ord(B.getType(i)), Format('getType(%d)',[i]));
- Check(TSDOEqualityHelper.equal(A.getDataObject(i),B.getDataObject(i)),Format('A.getDataObject(%d)',[i]));
- Compare(A.getInfo(i),B.getInfo(i));
- end;
- end else begin
- for i := 0 to Pred(c) do begin
- tmpObj := A.getDataObject(i);
- k := -1;
- for j := 0 to Pred(B.size()) do begin
- if TSDOEqualityHelper.equal(tmpObj,B.getDataObject(j)) then begin
- k := j;
- Break;
- end;
- end;
- Check( ( k > -1 ), Format('Object not found : A.getDataObject(%d)',[i]));
- CheckEquals(Ord(A.getType(i)), Ord(B.getType(k)), Format('getType(%d)',[i]));
- Check(TSDOEqualityHelper.equal(A.getDataObject(i),B.getDataObject(k)),Format('A.getDataObject(%d), B.getDataObject(%d)',[i,k]));
- Compare(A.getInfo(i),B.getInfo(k));
- end;
- end;
- end;
- end;
- end;
- procedure TSDOBaseSerializer_Test.Compare(const A, B: TDataObjectChangeInfo);
- var
- i, c, j : PtrInt;
- ok : Boolean;
- x, y : TValueSetting;
- begin
- Check( ( A = nil ) or ( B <> nil ), 'nil');
- if ( A <> nil ) then begin
- A.ExtractPendingOldValues();
- B.ExtractPendingOldValues();
- Check(TSDOEqualityHelper.equal(A.DataObject,B.DataObject));
- CheckEquals(Ord(A.ChangeType), Ord(B.ChangeType), 'ChangeType');
- Check(TSDOEqualityHelper.equal(A.OldContainer,B.OldContainer));
- CheckEquals(A.ChangeList.size(),B.ChangeList.size(),'ChangeList.size(), Type='+GetEnumName(TypeInfo(TChangeType),Ord(A.ChangeType)));
- c := A.ChangeList.size();
- if ( c > 0 ) then begin
- y := nil;
- for i := 0 to Pred(c) do begin
- x := A.ChangeList.getItem(i);
- ok := False;
- for j := 0 to ( c - 1 ) do begin
- y := B.ChangeList.getItem(j);
- if ( x.getProperty().getName() = y.getProperty().getName() ) and
- x.getProperty().getType().equals(y.getProperty().getType()) and
- ( x.getIndex() = y.getIndex() )
- then begin
- ok := True;
- Break;
- end;
- end;
- Check(ok, Format('A.ChangeList.getItem(%d) %s, not found.',[i, x.getProperty().getName()]));
- Compare(x,y);
- end;
- end;
- Check(
- ( ( A.ManyValuePropChangesList = nil ) and ( B.ManyValuePropChangesList = nil ) ) or
- ( ( A.ManyValuePropChangesList <> nil ) and ( B.ManyValuePropChangesList <> nil ) ),
- 'ManyValuePropChangesList'
- );
- if ( A.ManyValuePropChangesList <> nil ) then begin
- Compare(A.ManyValuePropChangesList, B.ManyValuePropChangesList);
- end;
- end;
- end;
- procedure TSDOBaseSerializer_Test.Compare(
- const A, B: TValueBuffer; const ADataType: TSDOTypeKind
- );
- begin
- case ADataType of
- BooleanType : CheckEquals(A.BooleanValue,B.BooleanValue,'BooleanValue');
- ByteType : CheckEquals(A.ByteValue,B.ByteValue,'ByteValue');
- {$IFDEF HAS_SDO_BYTES}
- BytesType : CheckEquals(A.BytesValue^,B.BytesValue^,'BytesValue');
- {$ENDIF HAS_SDO_BYTES}
- {$IFDEF HAS_SDO_CHAR}
- CharacterType : CheckEquals(A.CharValue,B.CharValue,'CharValue');
- {$ENDIF HAS_SDO_CHAR}
- {$IFDEF HAS_SDO_CURRENCY}
- CurrencyType : CheckEquals(A.CurrencyValue,B.CurrencyValue,'CurrencyValue');
- {$ENDIF HAS_SDO_CURRENCY}
- DateTimeType : CheckEquals(A.DateValue,B.DateValue,'DateValue',False);
- {$IFDEF HAS_SDO_DOUBLE}
- DoubleType : CheckEquals(A.DoubleValue,B.DoubleValue,'DoubleValue');
- {$ENDIF HAS_SDO_DOUBLE}
- {$IFDEF HAS_SDO_FLOAT}
- FloatType : CheckEquals(A.FloatValue,B.FloatValue,'FloatValue');
- {$ENDIF HAS_SDO_FLOAT}
- IntegerType : CheckEquals(A.IntegerValue,B.IntegerValue,'IntegerValue');
- {$IFDEF HAS_SDO_LONG}
- LongType : CheckEquals(A.LongValue,B.LongValue,'LongValue');
- {$ENDIF HAS_SDO_LONG}
- {$IFDEF HAS_SDO_SHORT}
- ShortType : CheckEquals(A.ShortValue,B.ShortValue,'ShortValue');
- {$ENDIF HAS_SDO_SHORT}
- ObjectType : Check(TSDOEqualityHelper.equal(A.ObjectValue^,B.ObjectValue^),'ObjectValue');
- StringType : CheckEquals(A.StringValue^,B.StringValue^,'StringValue');
- else
- Assert(False);
- end;
- end;
- procedure TSDOBaseSerializer_Test.Compare(const A, B: TValueSetting);
- begin
- Check( ( A = nil ) or ( B <> nil ), 'nil');
- if ( A <> nil ) then begin
- CheckEquals(A.getProperty().getName(), B.getProperty().getName(), 'getProperty().getName()');
- Check(A.getProperty().getType().equals(B.getProperty().getType()), 'getProperty().getType()');
- CheckEquals(A.isSet, B.isSet, Format('%s.isSet',[A.getProperty().getName()]));
- CheckEquals(A.isNull, B.isNull, 'isNull');
- case A.getProperty.getTypeEnum() of
- BooleanType : CheckEquals(A.getBooleanValue(),B.getBooleanValue(),'getBooleanValue()');
- ByteType : CheckEquals(A.getByteValue(),B.getByteValue(),'getByteValue()');
- {$IFDEF HAS_SDO_BYTES}
- BytesType : CheckEquals(A.getBytesValue(),B.getBytesValue(),'getBytesValue()');
- {$ENDIF HAS_SDO_BYTES}
- {$IFDEF HAS_SDO_CHAR}
- CharacterType : CheckEquals(A.getCharacterValue(),B.getCharacterValue(),'getCharacterValue()');
- {$ENDIF HAS_SDO_CHAR}
- {$IFDEF HAS_SDO_CURRENCY}
- CurrencyType : CheckEquals(A.getCurrencyValue(),B.getCurrencyValue(),'getCurrencyValue()');
- {$ENDIF HAS_SDO_CURRENCY}
- DateType : CheckEquals(A.getDateValue(),B.getDateValue(),'getDateValue()',False);
- {$IFDEF HAS_SDO_DOUBLE}
- DoubleType : CheckEquals(A.getDoubleValue(),B.getDoubleValue(),'getDoubleValue()');
- {$ENDIF HAS_SDO_DOUBLE}
- {$IFDEF HAS_SDO_FLOAT}
- FloatType : CheckEquals(A.getFloatValue(),B.getFloatValue(),'getFloatValue()');
- {$ENDIF HAS_SDO_FLOAT}
- IntegerType : CheckEquals(A.getIntegerValue(),B.getIntegerValue(),'getIntegerValue()');
- {$IFDEF HAS_SDO_LONG}
- LongType : CheckEquals(A.getLongValue(),B.getLongValue(),'getLongValue()');
- {$ENDIF HAS_SDO_LONG}
- {$IFDEF HAS_SDO_SHORT}
- ShortType : CheckEquals(A.getShortValue(),B.getShortValue(),'getShortValue()');
- {$ENDIF HAS_SDO_SHORT}
- ObjectType : Check(TSDOEqualityHelper.equal(A.getDataObjectValue(),B.getDataObjectValue()),'getDataObjectValue()');
- StringType : CheckEquals(A.getStringValue(),B.getStringValue(),'getStringValue()');
- else
- Assert(False);
- end;
- end;
- end;
- procedure TSDOBaseSerializer_Test.Compare(const A, B: TManyValuePropChangesList);
- var
- i, c, q, k : PtrInt;
- x, y : TManyValuePropChanges;
- xd, yd : TManyValuePropRecordData;
- begin
- Check(
- ( ( A = nil ) and ( B = nil ) ) or
- ( ( A <> nil ) and ( B <> nil ) ) ,
- 'nil'
- );
- if ( A <> nil ) then begin
- CheckEquals(A.Count(),B.Count(), 'Count()');
- c := A.Count();
- if ( c > 0 ) then begin
- for i := 0 to Pred(c) do begin
- x := A.Item[i];
- y := B.Item[i];
- CheckEquals(x.Prop.getName(), y.Prop.getName(), Format('item[%d] : Property ( name )',[i]));
- Check(x.Prop.getType().equals(y.Prop.getType()), Format('item[%d] : Property ( type )',[i]));
- CheckEquals(x.Count, y.Count, Format('item[%d] : Count',[i]));
- q := x.Count;
- if ( q > 0 ) then begin
- for k := 0 to Pred(q) do begin
- xd := x.GetItem(i);
- yd := y.GetItem(i);
- CheckEquals(Ord(xd.Action), Ord(yd.Action), Format('item[%d][%d].Action : Count',[i,k]));
- CheckEquals(xd.Index, yd.Index, Format('item[%d][%d].Index : Count',[i,k]));
- Compare(xd.Value, yd.Value, x.Prop.getTypeEnum());
- end;
- end;
- end;
- end;
- end;
- end;
- procedure TSDOBaseSerializer_Test.CheckEquals(expected, actual: TSDODate;
- msg: string; const AStrict: Boolean);
- var
- e, a : TDateTime;
- e_y, e_m, e_d, e_h, e_mn, e_ss, e_ms : Word;
- a_y, a_m, a_d, a_h, a_mn, a_ss, a_ms : Word;
- begin
- if AStrict then begin
- Check(CompareMem(@expected, @actual, SizeOf(TSDODate)), msg);
- end else begin
- e := NormalizeToUTC(expected);
- a := NormalizeToUTC(actual);
- DecodeDateTime(e, e_y, e_m, e_d, e_h, e_mn, e_ss, e_ms);
- DecodeDateTime(a, a_y, a_m, a_d, a_h, a_mn, a_ss, a_ms);
- CheckEquals(e_y,a_y,msg);
- CheckEquals(e_m,a_m,msg);
- CheckEquals(e_d,a_d,msg);
- CheckEquals(e_h,a_h,msg);
- CheckEquals(e_mn,a_mn,msg);
- CheckEquals(e_ss,a_ss,msg);
- CheckEquals(e_ms,a_ms,msg);
- end;
- end;
- function TSDOBaseSerializer_Test.CreateSdoTypes() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_EmployeeType,[]);
- locObj := Result.getType(s_uri,s_EmployeeType);
- Result.addProperty(locObj,'name',sdo_namespace,'string',[pfIsAttribute]);
- Result.addProperty(locObj,'SN',sdo_namespace,'string',[pfIsAttribute]);
- Result.addProperty(locObj,'manager',sdo_namespace,'boolean',[pfIsAttribute]);
- Result.addProperty(locObj,'age',sdo_namespace,'byte',[pfIsAttribute]);
- Result.AddType(s_uri,s_DepartmentType,[]);
- locObj := Result.getType(s_uri,s_DepartmentType);
- Result.addProperty(locObj,'employees',s_uri,s_EmployeeType,[pfIsMany, pfIsContainment]);
- Result.addProperty(locObj,'name',sdo_namespace,'string',[pfIsAttribute]);
- Result.addProperty(locObj,'location',sdo_namespace,'string',[pfIsAttribute]);
- Result.addProperty(locObj,'number',sdo_namespace,'integer',[pfIsAttribute]);
- Result.AddType(s_uri,s_CompanyType,[]);
- locObj := Result.getType(s_uri,s_CompanyType);
- Result.setAlias(locObj.getURI(),locObj.getName(),s_company);
- Result.addProperty(locObj,'departments',s_uri,s_DepartmentType,[pfIsMany, pfIsContainment]);
- Result.addProperty(locObj,'name',sdo_namespace,'string',[pfIsAttribute]);
- Result.addProperty(locObj,'employeeOfTheMonth',sdo_namespace,'string',[pfIsAttribute]);
- Result.setAlias(s_uri,locObj.getName(),s_company);
- end;
- function TSDOBaseSerializer_Test.CreateCompanyObject(
- const AFactory : ISDODataFactory
- ) : ISDODataObject;
- var
- locFactory : ISDODataFactory;
- compObj, depObj, empObj : ISDODataObject;
- depLs, empLs : ISDODataObjectList;
- begin
- locFactory := AFactory;
- compObj := locFactory.createNew(s_uri,s_company);
- compObj.setString('name','A Sample company');
- compObj.setString('employeeOfTheMonth','Inoussa');
- depLs := compObj.getList('departments');
- depObj := compObj.createDataObject('departments');
- depLs.append(depObj);
- depObj.setString('name','RAD Departement');
- depObj.setString('location','Moon');
- depObj.setInteger('number',2);
- empLs := depObj.getList('employees');
- empObj := depObj.createDataObject('employees');
- empObj.setString('name','inoussa OUEDRAOGO');
- empObj.setString('SN','1122334455667');
- empObj.setBoolean('manager',True);
- empObj.setByte('age',32);
- empLs.append(empObj);
- empObj := depObj.createDataObject('employees');
- empObj.setString('name','SDO man');
- empObj.setString('SN','867787667');
- empObj.setBoolean('manager',False);
- empObj.setByte('age',1);
- empLs.append(empObj);
- empObj := depObj.createDataObject('employees');
- empObj.setString('name','FPC');
- empObj.setString('SN','_e-(''');
- empObj.setBoolean('manager',False);
- empObj.setByte('age',13);
- empLs.append(empObj);
- depObj := compObj.createDataObject('departments');
- depLs.append(depObj);
- depObj.setString('name','Sales Departement');
- depObj.setString('location','Mars');
- depObj.setInteger('number',2);
- empLs := depObj.getList('employees');
- empObj := depObj.createDataObject('employees');
- empObj.setString('name','wst man');
- empObj.setString('SN','e"''fsdfdf');
- empObj.setBoolean('manager',True);
- empObj.setByte('age',2);
- empLs.append(empObj);
- empObj := depObj.createDataObject('employees');
- empObj.setString('name','azerty');
- empObj.setString('SN','jkjk_e5679');
- empObj.setBoolean('manager',False);
- empLs.append(empObj);
- empObj := depObj.createDataObject('employees');
- empObj.setString('name','qwerty');
- empObj.setString('SN','_s-(''');
- empObj.setBoolean('manager',False);
- empLs.append(empObj);
- Result := compObj;
- end;
- { TSDOSerializer_Test }
- procedure TSDOSerializer_Test.CompareTypesInclude(const A, B: ISDOTypeList);
- var
- i, c : PtrInt;
- typA, typB : ISDOType;
- begin
- if Assigned(A) then begin
- Check(Assigned(B),'B = nil');
- c := A.getCount();
- if ( c > 0 ) then begin
- for i := 0 to Pred(c) do begin
- typA := A.getItem(i);
- typB := B.find(typA.getURI(),typA.getName());
- Check(typB.equals(typA),'A.getItem(i) <> B.find(typA.getURI(),typA.getName())');
- end;
- end;
- end;
- end;
- procedure TSDOSerializer_Test.load_from_stream_one_object();
- var
- locFactory, tmpFactory : ISDODataFactory;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- strm : TMemoryStream;
- ol : ISDODataObjectList;
- locComp : ISDODataObject;
- begin
- strm := TMemoryStream.Create();
- try
- strm.LoadFromFile(sdoExpandLocalFileName(TestFilesPath + 'company.one.xml'));
- strm.Position := 0;
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(strm,ol);
- locFactory := CreateSdoTypes();
- CompareTypesInclude(tmpFactory.getTypes(), locFactory.getTypes());
- CompareTypesInclude(locFactory.getTypes(), tmpFactory.getTypes());
- CheckEquals(1,ol.size(),'loaded objects count');
- locComp := CreateCompanyObject(locFactory);
- ol.getCursor().MoveFirst();
- CheckEquals(True,TSDOEqualityHelper.equalShallow(locComp, ol.getDataObject()),'equalShallow');
- CheckEquals(True,TSDOEqualityHelper.equal(locComp, ol.getDataObject()),'equal');
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializer_Test.load_from_stream_start_with_empty();
- var
- locFactory, tmpFactory : ISDODataFactory;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- strm : TMemoryStream;
- ol : ISDODataObjectList;
- begin
- strm := TMemoryStream.Create();
- try
- strm.LoadFromFile(sdoExpandLocalFileName(TestFilesPath + 'company.xml'));
- strm.Position := 0;
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(strm,ol);
- locFactory := CreateSdoTypes();
- CompareTypesInclude(tmpFactory.getTypes(), locFactory.getTypes());
- CompareTypesInclude(locFactory.getTypes(), tmpFactory.getTypes());
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializer_Test.load_from_stream_two_object();
- var
- locFactory, tmpFactory : ISDODataFactory;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- strm : TMemoryStream;
- ol : ISDODataObjectList;
- locComp : ISDODataObject;
- begin
- strm := TMemoryStream.Create();
- try
- strm.LoadFromFile(sdoExpandLocalFileName(TestFilesPath + 'company.two.xml'));
- strm.Position := 0;
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(strm,ol);
- locFactory := CreateSdoTypes();
- CompareTypesInclude(tmpFactory.getTypes(), locFactory.getTypes());
- CompareTypesInclude(locFactory.getTypes(), tmpFactory.getTypes());
- CheckEquals(2,ol.size(),'loaded objects count');
- locComp := CreateCompanyObject(locFactory);
- locComp.setString('name','A Second Sample company');
- ol.getCursor().MoveFirst();
- CheckEquals(True,TSDOEqualityHelper.equalShallow(locComp, ol.getDataObject()),'equalShallow');
- CheckEquals(True,TSDOEqualityHelper.equal(locComp, ol.getDataObject()),'equal');
- finally
- strm.Free();
- end;
- end;
- procedure TSDOSerializer_Test.save_to_stream();
- var
- locFactory : ISDODataFactory;
- compObj : ISDODataObject;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- strm : TMemoryStream;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- locFactory := CreateSdoTypes();
- compObj := CreateCompanyObject(locFactory);
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- strm := TMemoryStream.Create();
- try
- s.save(s_CompanyType,compObj,strm);
- {$IFDEF TEST_GENERATE_FILE}
- strm.SaveToFile(sdoExpandLocalFileName('company.soap.xml'));
- {$ENDIF TEST_GENERATE_FILE}
- strm.Position := 0;
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + 'company.one.xml'));
- try
- ReadXMLFile(serialDoc,strm);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- finally
- strm.Free();
- end;
- end;
- {procedure TSDOSerializer_Test.save2();
- var
- locFactory : ISDODataFactory;
- compObj, depObj, empObj : ISDODataObject;
- depLs, empLs : ISDODataObjectList;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- strm : TMemoryStream;
- i : Integer;
- dd, ff : TDateTime;
- begin
- dd := Now();
- locFactory := CreateSdoTypes();
- compObj := locFactory.createNew(s_uri,s_company);
- compObj.setString('name','A Sample company');
- compObj.setString('employeeOfTheMonth','Inoussa');
- depLs := compObj.getList('departments');
- depObj := compObj.createDataObject('departments');
- depLs.append(depObj);
- depObj.setString('name','RAD Departement');
- depObj.setString('location','Moon');
- depObj.setInteger('number',2);
- empLs := depObj.getList('employees');
- empObj := depObj.createDataObject('employees');
- empObj.setString('name','inoussa OUEDRAOGO');
- empObj.setString('SN','1122334455667');
- empObj.setBoolean('manager',True);
- empLs.append(empObj);
- empObj := depObj.createDataObject('employees');
- empObj.setString('name','SDO man');
- empObj.setString('SN','867787667');
- empObj.setBoolean('manager',False);
- empLs.append(empObj);
- empObj := depObj.createDataObject('employees');
- empObj.setString('name','FPC');
- empObj.setString('SN','_e-(''');
- empObj.setBoolean('manager',False);
- empLs.append(empObj);
- depObj := compObj.createDataObject('departments');
- depLs.append(depObj);
- depObj.setString('name','Sales Departement');
- depObj.setString('location','Mars');
- depObj.setInteger('number',2);
- empLs := depObj.getList('employees');
- empObj := depObj.createDataObject('employees');
- empObj.setString('name','wst man');
- empObj.setString('SN','e"''fsdfdf');
- empObj.setBoolean('manager',True);
- empLs.append(empObj);
- empObj := depObj.createDataObject('employees');
- empObj.setString('name','azerty');
- empObj.setString('SN','jkjk_e5679');
- empObj.setBoolean('manager',False);
- empLs.append(empObj);
- for i := 0 to 10000 do begin
- empObj := depObj.createDataObject('employees');
- empObj.setString('name','Personne N°' + IntToStr(i));
- empObj.setString('SN','#'+ IntToStr(i));
- empObj.setBoolean('manager',( i mod 3 ) = 0 );
- empLs.append(empObj);
- end;
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- strm := TMemoryStream.Create();
- s.save('compagnie',compObj,strm);
- strm.Position := 0;
- f := TSDOSerializerStreamXML.Create();
- f.LoadFromStream(strm);
- ff := Now();
- //ShowMessageFmt('%s'#13'%s'#13'Size=%d',[DateTimeToStr(dd),DateTimeToStr(ff),strm.Size]);
- strm.SaveToFile('.' + PathDelim + 'company2.soap.xml');
- end; }
- procedure TSDOSerializer_Test.save_to_stream_without_name();
- var
- locFactory : ISDODataFactory;
- compObj : ISDODataObject;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- strm : TMemoryStream;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- locFactory := CreateSdoTypes();
- compObj := CreateCompanyObject(locFactory);
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- strm := TMemoryStream.Create();
- try
- s.save(compObj,strm);
- strm.Position := 0;
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + 'company.one.xml'));
- try
- ReadXMLFile(serialDoc,strm);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- finally
- FreeAndNil(strm);
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file();
- var
- locFactory : ISDODataFactory;
- compObj : ISDODataObject;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- existDoc, serialDoc : TSDOXMLDocument;
- localFileName : string;
- begin
- localFileName := sdoExpandLocalFileName('save_to_file.xml');
- locFactory := CreateSdoTypes();
- compObj := CreateCompanyObject(locFactory);
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- s.save(s_CompanyType,compObj,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + 'company.one.xml'));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file_without_name();
- var
- locFactory : ISDODataFactory;
- compObj : ISDODataObject;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- existDoc, serialDoc : TSDOXMLDocument;
- localFileName : string;
- begin
- localFileName := sdoExpandLocalFileName('save_to_file.xml');
- locFactory := CreateSdoTypes();
- compObj := CreateCompanyObject(locFactory);
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- s.save(compObj,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + 'company.one.xml'));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file_null_bool_prop();
- const
- TARGET_PROP_NAME = s_bool_prop; TARGET_PROP_TYPE_NAME = 'Boolean';
-
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,TARGET_PROP_TYPE_NAME,[]);
- end;
-
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- s.save(locInstance,ms);
-
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file_null_byte_prop();
- const
- TARGET_PROP_NAME = s_byte_prop; TARGET_PROP_TYPE_NAME = 'Byte';
-
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,TARGET_PROP_TYPE_NAME,[]);
- end;
-
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- s.save(locInstance,ms);
-
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file_null_bytes_prop();
- const
- TARGET_PROP_NAME = s_bytes_prop; TARGET_PROP_TYPE_NAME = 'Bytes';
-
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,TARGET_PROP_TYPE_NAME,[]);
- end;
-
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- s.save(locInstance,ms);
-
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file_null_char_prop();
- const
- TARGET_PROP_NAME = s_char_prop; TARGET_PROP_TYPE_NAME = 'Character';
-
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,TARGET_PROP_TYPE_NAME,[]);
- end;
-
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- s.save(locInstance,ms);
-
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file_null_currency_prop();
- const
- TARGET_PROP_NAME = s_currency_prop; TARGET_PROP_TYPE_NAME = 'Currency';
-
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,TARGET_PROP_TYPE_NAME,[]);
- end;
-
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- s.save(locInstance,ms);
-
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file_null_datetime_prop();
- const
- TARGET_PROP_NAME = s_datetime_prop; TARGET_PROP_TYPE_NAME = 'DateTime';
-
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,TARGET_PROP_TYPE_NAME,[]);
- end;
-
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- s.save(locInstance,ms);
-
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file_null_double_prop();
- const
- TARGET_PROP_NAME = s_double_prop; TARGET_PROP_TYPE_NAME = 'Double';
-
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,TARGET_PROP_TYPE_NAME,[]);
- end;
-
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- s.save(locInstance,ms);
-
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file_null_float_prop();
- const
- TARGET_PROP_NAME = s_float_prop; TARGET_PROP_TYPE_NAME = 'Float';
-
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,TARGET_PROP_TYPE_NAME,[]);
- end;
-
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- s.save(locInstance,ms);
-
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file_null_int_prop();
- const
- TARGET_PROP_NAME = s_int_prop; TARGET_PROP_TYPE_NAME = 'Integer';
-
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_string_prop,sdo_namespace,'String',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,TARGET_PROP_TYPE_NAME,[]);
- end;
-
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setString(s_string_prop,'azerty');
- ms := TMemoryStream.Create();
- try
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- s.save(locInstance,ms);
-
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getString(s_string_prop), locInstanceLoaded.getString(s_string_prop),s_string_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file_null_long_prop();
- const
- TARGET_PROP_NAME = s_long_prop; TARGET_PROP_TYPE_NAME = 'Long';
-
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,TARGET_PROP_TYPE_NAME,[]);
- end;
-
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- s.save(locInstance,ms);
-
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file_null_object_prop();
- const
- TARGET_PROP_NAME = s_object_prop; TARGET_PROP_TYPE_NAME = s_object_type2;
-
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- Result.AddType(s_uri,s_object_type2,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,s_uri,TARGET_PROP_TYPE_NAME,[pfIsContainment]);
- locObj := Result.getType(s_uri,s_object_type2);
- Result.addProperty(locObj,s_string_prop,sdo_namespace,'String',[]);
- end;
-
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- s.save(locInstance,ms);
-
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file_null_short_prop();
- const
- TARGET_PROP_NAME = s_short_prop; TARGET_PROP_TYPE_NAME = 'Short';
-
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,TARGET_PROP_TYPE_NAME,[]);
- end;
-
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- s.save(locInstance,ms);
-
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file_null_string_prop();
- const
- TARGET_PROP_NAME = s_string_prop; TARGET_PROP_TYPE_NAME = 'String';
-
- function CreateFactory() : ISDODataFactory;
- var
- locObj : ISDOType;
- begin
- Result := TSDODataFactory.Create() as ISDODataFactory;
- Result.AddType(s_uri,s_object_type,[]);
- locObj := Result.getType(s_uri,s_object_type);
- Result.addProperty(locObj,s_int_prop,sdo_namespace,'Integer',[]);
- Result.addProperty(locObj,TARGET_PROP_NAME,sdo_namespace,TARGET_PROP_TYPE_NAME,[]);
- end;
-
- var
- locFactory : ISDODataFactory;
- locInstance, locInstanceLoaded : ISDODataObject;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- ms : TMemoryStream;
- begin
- locFactory := CreateFactory();
- locInstance := locFactory.createNew(s_uri,s_object_type);
- locInstance.setNull(TARGET_PROP_NAME);
- locInstance.setInteger(s_int_prop,123);
- ms := TMemoryStream.Create();
- try
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- s.save(locInstance,ms);
-
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFactory,f);
- ms.Position := 0;
- locInstanceLoaded := s.load(ms);
- CheckEquals(locInstance.isNull(TARGET_PROP_NAME), locInstanceLoaded.isNull(TARGET_PROP_NAME),Format('isNull(%s)',[TARGET_PROP_NAME]));
- CheckEquals(locInstance.getInteger(s_int_prop), locInstanceLoaded.getInteger(s_int_prop),s_int_prop);
- finally
- ms.Free();
- end;
- end;
- procedure TSDOSerializer_Test.load_from_file_start_with_empty();
- var
- locFactory, tmpFactory : ISDODataFactory;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- ol : ISDODataObjectList;
- localFileName : string;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + 'company.xml');
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(localFileName,ol);
- locFactory := CreateSdoTypes();
- CompareTypesInclude(tmpFactory.getTypes(), locFactory.getTypes());
- CompareTypesInclude(locFactory.getTypes(), tmpFactory.getTypes());
- end;
- procedure TSDOSerializer_Test.load_from_file_one_object();
- var
- locFactory, tmpFactory : ISDODataFactory;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- ol : ISDODataObjectList;
- locComp : ISDODataObject;
- localFileName : string;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + 'company.one.xml');
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(localFileName,ol);
- locFactory := CreateSdoTypes();
- CompareTypesInclude(tmpFactory.getTypes(), locFactory.getTypes());
- CompareTypesInclude(locFactory.getTypes(), tmpFactory.getTypes());
- CheckEquals(1,ol.size(),'loaded objects count');
- locComp := CreateCompanyObject(locFactory);
- ol.getCursor().MoveFirst();
- CheckEquals(True,TSDOEqualityHelper.equalShallow(locComp, ol.getDataObject()),'equalShallow');
- CheckEquals(True,TSDOEqualityHelper.equal(locComp, ol.getDataObject()),'equal');
- end;
- procedure TSDOSerializer_Test.load_from_file_two_object();
- var
- locFactory, tmpFactory : ISDODataFactory;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- ol : ISDODataObjectList;
- locComp : ISDODataObject;
- localFileName : string;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + 'company.two.xml');
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(localFileName,ol);
- locFactory := CreateSdoTypes();
- CompareTypesInclude(tmpFactory.getTypes(), locFactory.getTypes());
- CompareTypesInclude(locFactory.getTypes(), tmpFactory.getTypes());
- CheckEquals(2,ol.size(),'loaded objects count');
- locComp := CreateCompanyObject(locFactory);
- locComp.setString('name','A Second Sample company');
- ol.getCursor().MoveFirst();
- CheckEquals(True,TSDOEqualityHelper.equalShallow(locComp, ol.getDataObject()),'equalShallow');
- CheckEquals(True,TSDOEqualityHelper.equal(locComp, ol.getDataObject()),'equal');
- end;
- procedure TSDOSerializer_Test.save_to_file_changesummary_simple();
- var
- locFac : ISDODataFactory;
- locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName('change_summary_simple.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_Employee,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_Employee,s_sn,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_Employee,s_manager,sdo_namespace,SDOTypeDefaultTypeNames[BooleanType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_Employee,s_age,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_Employee,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locEmployee := locFac.createNew(s_uri,s_Employee);
- locEmployee.setString(s_name,'Inoussa O.');
- locEmployee.setString(s_sn,'002');
- locEmployee.setBoolean(s_manager,True);
- locEmployee.setByte(s_age,30);
- locCS := locEmployee.getChangeSummary();
- locCS.beginLogging();
- locEmployee.setString(s_name,'Inoussa OUEDRAOGO');
- locEmployee.setString(s_sn,'001');
- locEmployee.setByte(s_age,32);
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_Employee,locEmployee,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + 'change_summary_simple.xml'));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_simple();
- var
- locFac, tmpFactory : ISDODataFactory;
- locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- ol : ISDODataObjectList;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + 'change_summary_simple.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_Employee,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_Employee,s_sn,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_Employee,s_manager,sdo_namespace,SDOTypeDefaultTypeNames[BooleanType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_Employee,s_age,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_Employee,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locEmployee := locFac.createNew(s_uri,s_Employee);
- locEmployee.setString(s_name,'Inoussa O.');
- locEmployee.setString(s_sn,'002');
- locEmployee.setBoolean(s_manager,True);
- locEmployee.setByte(s_age,30);
- locCS := locEmployee.getChangeSummary();
- locCS.beginLogging();
- locEmployee.setString(s_name,'Inoussa OUEDRAOGO');
- locEmployee.setString(s_sn,'001');
- locEmployee.setByte(s_age,32);
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(localFileName,ol);
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- Compare(
- locEmployee.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- ol.getDataObject(0).getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locEmployee.getChangeSummary().undoChanges();
- ol.getDataObject(0).getChangeSummary().undoChanges();
- CheckEquals(0, locEmployee.getChangeSummary().getChangedDataObjects().size());
- CheckEquals(0, ol.getDataObject(0).getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- end;
- procedure TSDOSerializer_Test.save_to_file_changesummary_object_modify_nested();
- var
- locFac : ISDODataFactory;
- locDep, locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName('change_summary_object_modify_nested.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_DepartmentType,s_Employee,s_uri,s_Employee,[pfIsContainment]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFac.addProperty(s_uri,s_Employee,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_Employee,s_sn,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_Employee,s_manager,sdo_namespace,SDOTypeDefaultTypeNames[BooleanType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_Employee,s_age,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[pfIsAttribute]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setInteger(s_number,1210);
- locEmployee := locDep.createDataObject(s_Employee);
- locEmployee.setString(s_name,'Inoussa O.');
- locEmployee.setString(s_sn,'002');
- locEmployee.setBoolean(s_manager,True);
- locEmployee.setByte(s_age,12);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- locEmployee.setString(s_name,'Inoussa OUEDRAOGO');
- locEmployee.setString(s_sn,'001');
- locEmployee.setByte(s_age,32);
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_DepartmentType,locDep,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + 'change_summary_object_modify_nested.xml'));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file_changesummary_prop_list_integer();
- const
- FILE_NAME = 'changesummary_prop_list_integer.xml';
- var
- locFac : ISDODataFactory;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName(FILE_NAME);
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_list_int,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setInteger(s_number,1210);
- ls := locDep.getList(s_list_int);
- ls.append(1);
- ls.append(2);
- ls.append(3);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setInteger(0,10);
- ls.append(123);
- ls.append(456);
- ls.setInteger(1,20);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, 1076);
- ls.append(789);
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create()) as ISDOSerializer).save(locDep,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_DepartmentType,locDep,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + FILE_NAME));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file_changesummary_object_create();
- var
- locFac : ISDODataFactory;
- locDep, locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName('change_summary_object_create.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_DepartmentType,s_Employee,s_uri,s_Employee,[pfIsContainment]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFac.addProperty(s_uri,s_Employee,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_Employee,s_sn,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_Employee,s_manager,sdo_namespace,SDOTypeDefaultTypeNames[BooleanType],[pfIsAttribute]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locCS := locDep.getChangeSummary();
- locDep.setString(s_location,'Ouaga, BF');
- locCS.beginLogging();
- locDep.setInteger(s_number,1210);
- locEmployee := locDep.createDataObject(s_Employee);
- locEmployee.setString(s_name,'Inoussa O.');
- locEmployee.setString(s_sn,'002');
- locEmployee.setBoolean(s_manager,True);
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- locEmployee.setString(s_name,'Inoussa OUEDRAOGO');
- locEmployee.setString(s_sn,'001');
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_DepartmentType,locDep,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + 'change_summary_object_create.xml'));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file_changesummary_object_create_cont_ref();
- var
- locFac : ISDODataFactory;
- locDep, locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName('change_summary_object_create_cont_ref.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_DepartmentType,s_Employee,s_uri,s_Employee,[pfIsContainment]);
- locFac.addProperty(s_uri,s_DepartmentType,'employee_ref',s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFac.addProperty(s_uri,s_Employee,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_Employee,s_sn,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_Employee,s_manager,sdo_namespace,SDOTypeDefaultTypeNames[BooleanType],[pfIsAttribute]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locCS := locDep.getChangeSummary();
- locDep.setString(s_location,'Ouaga, BF');
- locCS.beginLogging();
- locDep.setInteger(s_number,1210);
- locEmployee := locDep.createDataObject(s_Employee);
- locEmployee.setString(s_name,'Inoussa O.');
- locEmployee.setString(s_sn,'002');
- locEmployee.setBoolean(s_manager,True);
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- locDep.setDataObject('employee_ref',locEmployee);
- locEmployee.setString(s_name,'Inoussa OUEDRAOGO');
- locEmployee.setString(s_sn,'001');
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_DepartmentType,locDep,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + 'change_summary_object_create_cont_ref.xml'));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_object_create_cont_ref();
- var
- locFac : ISDODataFactory;
- locDep, locEmployee, locLoadedDep : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- localFileName := sdoExpandLocalFileName('change_summary_object_create_cont_ref.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_DepartmentType,s_Employee,s_uri,s_Employee,[pfIsContainment]);
- locFac.addProperty(s_uri,s_DepartmentType,'employee_ref',s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFac.addProperty(s_uri,s_Employee,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_Employee,s_sn,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsAttribute]);
- locFac.addProperty(s_uri,s_Employee,s_manager,sdo_namespace,SDOTypeDefaultTypeNames[BooleanType],[pfIsAttribute]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locCS := locDep.getChangeSummary();
- locDep.setString(s_location,'Ouaga, BF');
- locCS.beginLogging();
- locDep.setInteger(s_number,1210);
- locEmployee := locDep.createDataObject(s_Employee);
- locEmployee.setString(s_name,'Inoussa O.');
- locEmployee.setString(s_sn,'002');
- locEmployee.setBoolean(s_manager,True);
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- locDep.setDataObject('employee_ref',locEmployee);
- locEmployee.setString(s_name,'Inoussa OUEDRAOGO');
- locEmployee.setString(s_sn,'001');
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- locLoadedDep := s.load(sdoExpandLocalFileName(TestFilesPath + 'change_summary_object_create_cont_ref.xml'));
- Check(TSDOEqualityHelper.equal(locLoadedDep,locDep),'Object');
- Compare(
- locDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locDep.getChangeSummary().undoChanges();
- locLoadedDep.getChangeSummary().undoChanges();
- CheckEquals( 0, locDep.getChangeSummary().getChangedDataObjects().size());
- CheckEquals( 0, locLoadedDep.getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locDep, locLoadedDep),'Object');
- end;
- procedure TSDOSerializer_Test.save_to_file_changesummary_object_delete();
- var
- locFac : ISDODataFactory;
- locDep, locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName('change_summary_object_delete.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType], [pfIsAttribute]);
- locFac.addProperty(s_uri,s_DepartmentType,s_Employee,s_uri,s_Employee,[pfIsContainment]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFac.addProperty(s_uri,s_Employee,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFac.addProperty(s_uri,s_Employee,s_sn,sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFac.addProperty(s_uri,s_Employee,s_manager,sdo_namespace,SDOTypeDefaultTypeNames[BooleanType], [pfIsAttribute]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locEmployee := locDep.createDataObject(s_Employee);
- locEmployee.setString(s_name,'Inoussa O.');
- locEmployee.setString(s_sn,'002');
- locEmployee.setBoolean(s_manager,True);
- locCS := locDep.getChangeSummary();
- locDep.setString(s_location,'Ouaga, BF');
- locCS.beginLogging();
- locDep.setInteger(s_number,1210);
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- locDep.setDataObject(s_Employee,nil);
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_DepartmentType,locDep,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + 'change_summary_object_delete.xml'));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_object_delete();
- var
- locFac, tmpFactory : ISDODataFactory;
- locDep, locEmployee, locLoadedDep : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + 'change_summary_object_delete.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType], []);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType], []);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType], []);
- locFac.addProperty(s_uri,s_DepartmentType,s_Employee,s_uri,s_Employee,[pfIsContainment]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFac.addProperty(s_uri,s_Employee,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType], []);
- locFac.addProperty(s_uri,s_Employee,s_sn,sdo_namespace,SDOTypeDefaultTypeNames[StringType], []);
- locFac.addProperty(s_uri,s_Employee,s_manager,sdo_namespace,SDOTypeDefaultTypeNames[BooleanType], []);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locEmployee := locDep.createDataObject(s_Employee);
- locEmployee.setString(s_name,'Inoussa O.');
- locEmployee.setString(s_sn,'002');
- locEmployee.setBoolean(s_manager,True);
- locCS := locDep.getChangeSummary();
- locDep.setString(s_location,'Ouaga, BF');
- locCS.beginLogging();
- locDep.setInteger(s_number,1210);
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- locDep.setDataObject(s_Employee,nil); (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create()) as ISDOSerializer).save(locDep,'change_summary_object_delete.xml');
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDOBaseDataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- locLoadedDep := s.load(localFileName);
- Check(TSDOEqualityHelper.equal(locDep,locLoadedDep),'Object');
- Compare(
- locDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locDep.getChangeSummary().undoChanges();
- locLoadedDep.getChangeSummary().undoChanges();
- CheckEquals( 0, locDep.getChangeSummary().getChangedDataObjects().size());
- CheckEquals( 0, locLoadedDep.getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locDep, locLoadedDep),'Object');
- end;
- procedure TSDOSerializer_Test.save_to_file_changesummary_object_delete_nested();
- var
- locFac : ISDODataFactory;
- locA, locB, locC, locD : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName('change_summary_object_delete_nested.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,'a',[]);
- locFac.AddType(s_uri,'b',[]);
- locFac.AddType(s_uri,'c',[]);
- locFac.AddType(s_uri,'d',[]);
- locFac.addProperty(s_uri,'a','p_a_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFac.addProperty(s_uri,'a','p_ab',s_uri,'b',[pfIsContainment]);
- locFac.addProperty(s_uri,'a','p_ac',s_uri,'c',[]);
- locFac.addProperty(s_uri,'a','p_ad',s_uri,'d',[]);
- locFac.addProperty(s_uri,'a',s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFac.addProperty(s_uri,'b','p_bc',s_uri,'c',[pfIsContainment]);
- locFac.addProperty(s_uri,'b','p_b_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFac.addProperty(s_uri,'c','p_cd',s_uri,'d',[pfIsContainment]);
- locFac.addProperty(s_uri,'c','p_c_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFac.addProperty(s_uri,'d','p_d_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locA := locFac.createNew(s_uri,'a');
- locA.setString('p_a_str','sample A'' property.');
- locB := locA.createDataObject('p_ab');
- locB.setString('p_b_str','Inoussa O.');
- locC := locB.createDataObject('p_bc');
- locC.setString('p_c_str','azerty');
- locD := locC.createDataObject('p_cd');
- locD.setString('p_d_str','D value');
- locA.setDataObject('p_ac',locC);
- locA.setDataObject('p_ad',locD);
- locCS := locA.getChangeSummary();
- locCS.beginLogging();
- locC.setDataObject('p_cd',nil);
- locA.setDataObject('p_ab',nil);
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save('a',locA,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + 'change_summary_object_delete_nested.xml'));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_prop_list_integer();
- const
- FILE_NAME = 'changesummary_prop_list_integer.xml';
- var
- locFac, tmpFactory : ISDODataFactory;
- locDep, locLoadedDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_list_int,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setInteger(s_number,1210);
- ls := locDep.getList(s_list_int);
- ls.append(1);
- ls.append(2);
- ls.append(3);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setInteger(0,10);
- ls.append(123);
- ls.append(456);
- ls.setInteger(1,20);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, 1076);
- ls.append(789);
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create())as ISDOSerializer).save(locDep,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
- localFileName := sdoExpandLocalFileName(TestFilesPath + FILE_NAME);
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDOBaseDataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- locLoadedDep := s.load(localFileName);
- Check(TSDOEqualityHelper.equal(locDep, locLoadedDep),'Object');
- Compare(
- locDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- end;
- {$IFDEF HAS_SDO_LONG}
- procedure TSDOSerializer_Test.load_from_file_changesummary_prop_list_long();
- const
- PROP_NAME = s_list_long;
- PROP_TYPE = LongType;
- FILE_NAME = 'changesummary_prop_list_long.xml';
- var
- locFac, tmpFactory : ISDODataFactory;
- locDep, locLoadedDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(PROP_NAME);
- ls.append(TSDOLong(11111111111111111));
- ls.append(TSDOLong(-2222222222222222));
- ls.append(TSDOLong(333333333333333333));
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setLong(0,4444444444444444444);
- ls.append(TSDOLong(5555555555555555555));
- ls.append(TSDOLong(-6666666666666666666));
- ls.setLong(1,7777777777777777777);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, TSDOLong(8));
- ls.append(TSDOLong(-9));
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create())as ISDOSerializer).save(locDep,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
-
- localFileName := sdoExpandLocalFileName(TestFilesPath + FILE_NAME);
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDOBaseDataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- locLoadedDep := s.load(localFileName);
- Check(TSDOEqualityHelper.equal(locDep, locLoadedDep),'Object');
- Compare(
- locDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- end;
- {$ENDIF HAS_SDO_LONG}
- {$IFDEF HAS_SDO_SHORT}
- procedure TSDOSerializer_Test.load_from_file_changesummary_prop_list_short();
- const
- PROP_NAME = s_list_short;
- PROP_TYPE = ShortType;
- FILE_NAME = 'changesummary_prop_list_short.xml';
- var
- locFac, tmpFactory : ISDODataFactory;
- locDep, locLoadedDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(PROP_NAME);
- ls.append(TSDOShort(1));
- ls.append(TSDOShort(2));
- ls.append(TSDOShort(3));
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setShort(0,10);
- ls.append(TSDOShort(12345));
- ls.append(TSDOShort(-5245));
- ls.setShort(1,20);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, TSDOShort(107));
- ls.append(TSDOShort(89));
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create())as ISDOSerializer).save(locDep,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
-
- localFileName := sdoExpandLocalFileName(TestFilesPath + FILE_NAME);
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDOBaseDataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- locLoadedDep := s.load(localFileName);
- Check(TSDOEqualityHelper.equal(locDep, locLoadedDep),'Object');
- Compare(
- locDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- end;
- {$ENDIF HAS_SDO_SHORT}
- procedure TSDOSerializer_Test.load_from_file_changesummary_object_delete_nested();
- var
- locFac, tmpFactory : ISDODataFactory;
- locA, locB, locC, locD, locLoadedA : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + 'change_summary_object_delete_nested.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,'a',[]);
- locFac.AddType(s_uri,'b',[]);
- locFac.AddType(s_uri,'c',[]);
- locFac.AddType(s_uri,'d',[]);
- locFac.addProperty(s_uri,'a','p_a_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], []);
- locFac.addProperty(s_uri,'a','p_ab',s_uri,'b',[pfIsContainment]);
- locFac.addProperty(s_uri,'a','p_ac',s_uri,'c',[]);
- locFac.addProperty(s_uri,'a','p_ad',s_uri,'d',[]);
- locFac.addProperty(s_uri,'a',s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFac.addProperty(s_uri,'b','p_bc',s_uri,'c',[pfIsContainment]);
- locFac.addProperty(s_uri,'b','p_b_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], []);
- locFac.addProperty(s_uri,'c','p_cd',s_uri,'d',[pfIsContainment]);
- locFac.addProperty(s_uri,'c','p_c_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], []);
- locFac.addProperty(s_uri,'d','p_d_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], []);
- locA := locFac.createNew(s_uri,'a');
- locA.setString('p_a_str','sample A'' property.');
- locB := locA.createDataObject('p_ab');
- locB.setString('p_b_str','Inoussa O.');
- locC := locB.createDataObject('p_bc');
- locC.setString('p_c_str','azerty');
- locD := locC.createDataObject('p_cd');
- locD.setString('p_d_str','D value');
- locA.setDataObject('p_ac',locC);
- locA.setDataObject('p_ad',locD);
- locCS := locA.getChangeSummary();
- locCS.beginLogging();
- locC.setDataObject('p_cd',nil);
- locA.setDataObject('p_ab',nil);
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDOBaseDataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- locLoadedA := s.load(localFileName);
- Check(TSDOEqualityHelper.equal(locA,locLoadedA),'Object');
- Compare(
- locA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locA.getChangeSummary().undoChanges();
- locLoadedA.getChangeSummary().undoChanges();
- CheckEquals( 0, locA.getChangeSummary().getChangedDataObjects().size());
- CheckEquals( 0, locLoadedA.getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locA, locLoadedA),'Object');
- end;
- procedure TSDOSerializer_Test.save_to_file_changesummary_object_delete_2_objects_same_type();
- var
- locFac : ISDODataFactory;
- locA, locB : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName('changesummary_object_delete_2_objects_same_type.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,'a',[]);
- locFac.AddType(s_uri,'b',[]);
- locFac.addProperty(s_uri,'a','p_a_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFac.addProperty(s_uri,'a','p_ab1',s_uri,'b',[pfIsContainment]);
- locFac.addProperty(s_uri,'a','p_ab2',s_uri,'b',[pfIsContainment]);
- locFac.addProperty(s_uri,'a',s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFac.addProperty(s_uri,'b','p_b_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locA := locFac.createNew(s_uri,'a');
- locA.setString('p_a_str','sample A'' property.');
- locB := locA.createDataObject('p_ab1');
- locB.setString('p_b_str','p_ab1\p_b_str value');
- locB := locA.createDataObject('p_ab2');
- locB.setString('p_b_str','p_ab2\p_b_str value');
- locCS := locA.getChangeSummary();
- locCS.beginLogging();
- locA.setDataObject('p_ab1',nil);
- locA.setDataObject('p_ab2',nil);
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save('a',locA,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + 'changesummary_object_delete_2_objects_same_type.xml'));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_object_delete_2_objects_same_type();
- var
- locFac, tmpFactory : ISDODataFactory;
- locA, locB, locLoadedA : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + 'changesummary_object_delete_2_objects_same_type.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,'a',[]);
- locFac.AddType(s_uri,'b',[]);
- locFac.addProperty(s_uri,'a','p_a_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], []);
- locFac.addProperty(s_uri,'a','p_ab1',s_uri,'b',[pfIsContainment]);
- locFac.addProperty(s_uri,'a','p_ab2',s_uri,'b',[pfIsContainment]);
- locFac.addProperty(s_uri,'a',s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFac.addProperty(s_uri,'b','p_b_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], []);
- locA := locFac.createNew(s_uri,'a');
- locA.setString('p_a_str','sample A'' property.');
- locB := locA.createDataObject('p_ab1');
- locB.setString('p_b_str','p_ab1\p_b_str value');
- locB := locA.createDataObject('p_ab2');
- locB.setString('p_b_str','p_ab2\p_b_str value');
- locCS := locA.getChangeSummary();
- locCS.beginLogging();
- locA.setDataObject('p_ab1',nil);
- locA.setDataObject('p_ab2',nil);
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDOBaseDataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- locLoadedA := s.load(localFileName);
- Check(TSDOEqualityHelper.equal(locA,locLoadedA),'Object');
- Compare(
- locA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locA.getChangeSummary().undoChanges();
- locLoadedA.getChangeSummary().undoChanges();
- CheckEquals( 0, locA.getChangeSummary().getChangedDataObjects().size());
- CheckEquals( 0, locLoadedA.getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locA, locLoadedA),'Object');
- end;
- procedure TSDOSerializer_Test.save_to_file_changesummary_object_2_objects_same_type_del_upd();
- var
- locFac : ISDODataFactory;
- locA, locB : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName('changesummary_object_2_objects_same_type_del_upd.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,'a',[]);
- locFac.AddType(s_uri,'b',[]);
- locFac.addProperty(s_uri,'a','p_a_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locFac.addProperty(s_uri,'a','p_ab1',s_uri,'b',[pfIsContainment]);
- locFac.addProperty(s_uri,'a','p_ab2',s_uri,'b',[pfIsContainment]);
- locFac.addProperty(s_uri,'a','p_ab3',s_uri,'b',[pfIsContainment]);
- locFac.addProperty(s_uri,'a',s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFac.addProperty(s_uri,'b','p_b_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], [pfIsAttribute]);
- locA := locFac.createNew(s_uri,'a');
- locA.setString('p_a_str','sample A'' property.');
- locB := locA.createDataObject('p_ab1');
- locB.setString('p_b_str','p_ab1\p_b_str value');
- locB := locA.createDataObject('p_ab2');
- locB.setString('p_b_str','p_ab2\p_b_str value before');
- locB := locA.createDataObject('p_ab3');
- locB.setString('p_b_str','p_ab3\p_b_str value');
- locCS := locA.getChangeSummary();
- locCS.beginLogging();
- locA.setDataObject('p_ab1',nil);
- locA.setString('p_ab2/p_b_str','p_ab3\p_b_str value after');
- locA.setDataObject('p_ab3',nil);
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save('a',locA,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + 'changesummary_object_2_objects_same_type_del_upd.xml'));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_object_2_objects_same_type_del_upd();
- var
- locFac, tmpFactory : ISDODataFactory;
- locA, locB, locLoadedA : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + 'changesummary_object_2_objects_same_type_del_upd.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,'a',[]);
- locFac.AddType(s_uri,'b',[]);
- locFac.addProperty(s_uri,'a','p_a_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], []);
- locFac.addProperty(s_uri,'a','p_ab1',s_uri,'b',[pfIsContainment]);
- locFac.addProperty(s_uri,'a','p_ab2',s_uri,'b',[pfIsContainment]);
- locFac.addProperty(s_uri,'a','p_ab3',s_uri,'b',[pfIsContainment]);
- locFac.addProperty(s_uri,'a',s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locFac.addProperty(s_uri,'b','p_b_str',sdo_namespace,SDOTypeDefaultTypeNames[StringType], []);
- locA := locFac.createNew(s_uri,'a');
- locA.setString('p_a_str','sample A'' property.');
- locB := locA.createDataObject('p_ab1');
- locB.setString('p_b_str','p_ab1\p_b_str value');
- locB := locA.createDataObject('p_ab2');
- locB.setString('p_b_str','p_ab2\p_b_str value before');
- locB := locA.createDataObject('p_ab3');
- locB.setString('p_b_str','p_ab3\p_b_str value');
- locCS := locA.getChangeSummary();
- locCS.beginLogging();
- locA.setDataObject('p_ab1',nil);
- locA.setString('p_ab2/p_b_str','p_ab3\p_b_str value after');
- locA.setDataObject('p_ab3',nil);
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDOBaseDataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- locLoadedA := s.load(localFileName);
- Check(TSDOEqualityHelper.equal(locA,locLoadedA),'Object');
- Compare(
- locA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedA.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locA.getChangeSummary().undoChanges();
- locLoadedA.getChangeSummary().undoChanges();
- CheckEquals( 0, locA.getChangeSummary().getChangedDataObjects().size());
- CheckEquals( 0, locLoadedA.getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locA, locLoadedA),'Object');
- end;
- procedure TSDOSerializer_Test.save_to_file_changesummary_prop_list_object();
- function create_employee(
- const AFac : ISDODataFactory;
- const AName, ASN : TSDOString;
- const AManager : Boolean
- ) : ISDODataObject;
- begin
- Result := AFac.createNew(s_uri, s_EmployeeType);
- Result.setString(s_name, AName);
- Result.setString(s_sn, ASN);
- Result.setBoolean(s_manager, AManager);
- end;
- var
- locFac : ISDODataFactory;
- locDep, e1, e2 : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName('changesummary_prop_list_object.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_EmployeeType,[]);
- locFac.addProperty(s_uri, s_EmployeeType,'name',sdo_namespace,'string',[]);
- locFac.addProperty(s_uri, s_EmployeeType,'SN',sdo_namespace,'string',[]);
- locFac.addProperty(s_uri, s_EmployeeType,'manager',sdo_namespace,'boolean',[]);
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_list_object,s_uri,s_EmployeeType,[pfIsMany,pfIsContainment]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setInteger(s_number,1210);
- ls := locDep.getList(s_list_object);
- ls.append(create_employee(locFac,'Inoussa O.', '0001', True));
- ls.append(create_employee(locFac,'Kis O.', '0002', False));
- ls.append(create_employee(locFac,'WST', '0003', False));
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- e1 := create_employee(locFac,'FPC', '0010', False);
- e2 := create_employee(locFac,'Lazarus', '0011', False);
- ls.setDataObject(0,e1);
- ls.append(create_employee(locFac,'FPC 2 ', '0020', True));
- ls.insert(3,create_employee(locFac,'FPC 5', '0050', False));
- ls.append(create_employee(locFac,'FPC 3', '0030', False));
- ls.setDataObject(1,e2);
- ls.delete(0);
- ls.delete(1);
- ls.append(create_employee(locFac,'FPC 4', '0040', True));
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_DepartmentType,locDep,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + 'changesummary_prop_list_object.xml'));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_prop_list_object();
- function create_employee(
- const AFac : ISDODataFactory;
- const AName, ASN : TSDOString;
- const AManager : Boolean
- ) : ISDODataObject;
- begin
- Result := AFac.createNew(s_uri, s_EmployeeType);
- Result.setString(s_name, AName);
- Result.setString(s_sn, ASN);
- Result.setBoolean(s_manager, AManager);
- end;
- var
- locFac, tmpFactory : ISDODataFactory;
- locDep, locLoadedDep, e1, e2 : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_EmployeeType,[]);
- locFac.addProperty(s_uri, s_EmployeeType,'name',sdo_namespace,'string',[]);
- locFac.addProperty(s_uri, s_EmployeeType,'SN',sdo_namespace,'string',[]);
- locFac.addProperty(s_uri, s_EmployeeType,'manager',sdo_namespace,'boolean',[]);
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_list_object,s_uri,s_EmployeeType,[pfIsMany,pfIsContainment]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setInteger(s_number,1210);
- ls := locDep.getList(s_list_object);
- ls.append(create_employee(locFac,'Inoussa O.', '0001', True));
- ls.append(create_employee(locFac,'Kis O.', '0002', False));
- ls.append(create_employee(locFac,'WST', '0003', False));
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- e1 := create_employee(locFac,'FPC', '0010', False);
- e2 := create_employee(locFac,'Lazarus', '0011', False);
- ls.setDataObject(0,e1);
- ls.append(create_employee(locFac,'FPC 2 ', '0020', True));
- ls.insert(3,create_employee(locFac,'FPC 5', '0050', False));
- ls.append(create_employee(locFac,'FPC 3', '0030', False));
- ls.setDataObject(1,e2);
- ls.delete(0);
- ls.delete(1);
- ls.append(create_employee(locFac,'FPC 4', '0040', True));
- localFileName := sdoExpandLocalFileName(TestFilesPath + 'changesummary_prop_list_object.xml');
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDOBaseDataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- locLoadedDep := s.load(localFileName);
- locDep.getChangeSummary().getOldValues(locDep);
- locLoadedDep.getChangeSummary().getOldValues(locLoadedDep);
- Check(TSDOEqualityHelper.equal(locDep,locLoadedDep),'Object');
- {Compare(
- locDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );}
- locDep.getChangeSummary().undoChanges();
- locLoadedDep.getChangeSummary().undoChanges();
- CheckEquals( 0, locDep.getChangeSummary().getChangedDataObjects().size());
- CheckEquals( 0, locLoadedDep.getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locDep, locLoadedDep),'Object');
- end;
- procedure TSDOSerializer_Test.save_to_file_changesummary_prop_list_bool();
- var
- locFac : ISDODataFactory;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName('changesummary_prop_list_bool.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_list_bool,sdo_namespace,SDOTypeDefaultTypeNames[BooleanType],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setInteger(s_number,1210);
- ls := locDep.getList(s_list_bool);
- ls.append(False);
- ls.append(True);
- ls.append(False);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setBoolean(0,True);
- ls.append(True);
- ls.append(True);
- ls.setBoolean(1,False);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, False);
- ls.append(False);
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_DepartmentType,locDep,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + 'changesummary_prop_list_bool.xml'));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_prop_list_bool();
- var
- locFac, tmpFactory : ISDODataFactory;
- locDep, locLoadedDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_list_bool,sdo_namespace,SDOTypeDefaultTypeNames[BooleanType],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setInteger(s_number,1210);
- ls := locDep.getList(s_list_bool);
- ls.append(False);
- ls.append(True);
- ls.append(False);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setBoolean(0,True);
- ls.append(True);
- ls.append(True);
- ls.setBoolean(1,False);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, False);
- ls.append(False);
- localFileName := sdoExpandLocalFileName(TestFilesPath + 'changesummary_prop_list_bool.xml');
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDOBaseDataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- locLoadedDep := s.load(localFileName);
- Check(TSDOEqualityHelper.equal(locDep, locLoadedDep),'Object');
- Compare(
- locDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- end;
- procedure TSDOSerializer_Test.save_to_file_changesummary_prop_list_string();
- var
- locFac : ISDODataFactory;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName('changesummary_prop_list_string.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_list_string,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setInteger(s_number,1210);
- ls := locDep.getList(s_list_string);
- ls.append('wst');
- ls.append('sdo');
- ls.append('fpc-lazarus');
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setString(0,'azerty');
- ls.append('Ouagadougou');
- ls.append('BF');
- ls.setString(1,'kis');
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, '107612');
- ls.append('this is a multi words text. Lets test it!');
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_DepartmentType,locDep,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + 'changesummary_prop_list_string.xml'));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_prop_list_string();
- var
- locFac, tmpFactory : ISDODataFactory;
- locDep, locLoadedDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_list_string,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setInteger(s_number,1210);
- ls := locDep.getList(s_list_string);
- ls.append('wst');
- ls.append('sdo');
- ls.append('fpc-lazarus');
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setString(0,'azerty');
- ls.append('Ouagadougou');
- ls.append('BF');
- ls.setString(1,'kis');
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, '107612');
- ls.append('this is a multi words text. Lets test it!');
- localFileName := sdoExpandLocalFileName(TestFilesPath + 'changesummary_prop_list_string.xml');
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDOBaseDataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- locLoadedDep := s.load(localFileName);
- Check(TSDOEqualityHelper.equal(locDep, locLoadedDep),'Object');
- Compare(
- locDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- end;
- procedure TSDOSerializer_Test.save_to_file_changesummary_prop_list_object_nested();
- function create_employee(
- const AFac : ISDODataFactory;
- const AName, ASN : TSDOString;
- const AManager : Boolean;
- const AJobCount : Integer
- ) : ISDODataObject;
- var
- jb : ISDODataObject;
- k : Integer;
- begin
- Result := AFac.createNew(s_uri, s_EmployeeType);
- Result.setString(s_name, AName);
- Result.setString(s_sn, ASN);
- Result.setBoolean(s_manager, AManager);
- for k := 0 to Pred(AJobCount) do begin
- jb := Result.createDataObject('jobs');
- jb.setString('title', Format('%s''s job #%d',[AName,k]));
- jb.setByte('MaxEmployeeCount',( k * AJobCount ) mod High(TSDOByte));
- Result.getList('jobs').append(jb);
- end;
- end;
- var
- locFac : ISDODataFactory;
- locDep, e1, e2 : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName('changesummary_prop_list_object_nested.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,'job',[]);
- locFac.addProperty(s_uri, 'job','title',sdo_namespace,'string',[]);
- locFac.addProperty(s_uri, 'job','MaxEmployeeCount',sdo_namespace,'byte',[]);
- locFac.AddType(s_uri,s_EmployeeType,[]);
- locFac.addProperty(s_uri, s_EmployeeType,'name',sdo_namespace,'string',[]);
- locFac.addProperty(s_uri, s_EmployeeType,'SN',sdo_namespace,'string',[]);
- locFac.addProperty(s_uri, s_EmployeeType,'manager',sdo_namespace,'boolean',[]);
- locFac.addProperty(s_uri, s_EmployeeType,'jobs',s_uri,'job',[pfIsMany,pfIsContainment]);
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_list_object,s_uri,s_EmployeeType,[pfIsMany,pfIsContainment]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setInteger(s_number,1210);
- ls := locDep.getList(s_list_object);
- ls.append(create_employee(locFac,'Inoussa O.', '0001', True,3));
- ls.append(create_employee(locFac,'Kis O.', '0002', False,2));
- ls.append(create_employee(locFac,'WST', '0003', False,4));
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- e1 := create_employee(locFac,'FPC', '0010', False,1);
- e2 := create_employee(locFac,'Lazarus', '0011', False,3);
- ls.setDataObject(0,e1);
- ls.append(create_employee(locFac,'FPC 2 ', '0020', True,0));
- ls.insert(3,create_employee(locFac,'FPC 5', '0050', False,1));
- ls.append(create_employee(locFac,'FPC 3', '0030', False,0));
- ls.setDataObject(1,e2);
- ls.delete(0);
- ls.delete(1);
- ls.append(create_employee(locFac,'FPC 4', '0040', True,1));
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_DepartmentType,locDep,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + 'changesummary_prop_list_object_nested.xml'));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_prop_list_object_nested();
- function create_employee(
- const AFac : ISDODataFactory;
- const AName, ASN : TSDOString;
- const AManager : Boolean;
- const AJobCount : Integer
- ) : ISDODataObject;
- var
- jb : ISDODataObject;
- k : Integer;
- begin
- Result := AFac.createNew(s_uri, s_EmployeeType);
- Result.setString(s_name, AName);
- Result.setString(s_sn, ASN);
- Result.setBoolean(s_manager, AManager);
- for k := 0 to Pred(AJobCount) do begin
- jb := Result.createDataObject('jobs');
- jb.setString('title', Format('%s''s job #%d',[AName,k]));
- jb.setByte('MaxEmployeeCount',( k * AJobCount ) mod High(TSDOByte));
- Result.getList('jobs').append(jb);
- end;
- end;
- var
- locFac, tmpFactory : ISDODataFactory;
- locDep, e1, e2, locLoadedDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,'job',[]);
- locFac.addProperty(s_uri, 'job','title',sdo_namespace,'string',[]);
- locFac.addProperty(s_uri, 'job','MaxEmployeeCount',sdo_namespace,'byte',[]);
- locFac.AddType(s_uri,s_EmployeeType,[]);
- locFac.addProperty(s_uri, s_EmployeeType,'name',sdo_namespace,'string',[]);
- locFac.addProperty(s_uri, s_EmployeeType,'SN',sdo_namespace,'string',[]);
- locFac.addProperty(s_uri, s_EmployeeType,'manager',sdo_namespace,'boolean',[]);
- locFac.addProperty(s_uri, s_EmployeeType,'jobs',s_uri,'job',[pfIsMany,pfIsContainment]);
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[IntegerType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_list_object,s_uri,s_EmployeeType,[pfIsMany,pfIsContainment]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setInteger(s_number,1210);
- ls := locDep.getList(s_list_object);
- ls.append(create_employee(locFac,'Inoussa O.', '0001', True,3));
- ls.append(create_employee(locFac,'Kis O.', '0002', False,2));
- ls.append(create_employee(locFac,'WST', '0003', False,4));
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- e1 := create_employee(locFac,'FPC', '0010', False,1);
- e2 := create_employee(locFac,'Lazarus', '0011', False,3);
- ls.setDataObject(0,e1);
- ls.append(create_employee(locFac,'FPC 2 ', '0020', True,0));
- ls.insert(3,create_employee(locFac,'FPC 5', '0050', False,1));
- ls.append(create_employee(locFac,'FPC 3', '0030', False,0));
- ls.setDataObject(1,e2);
- ls.delete(0);
- ls.delete(1);
- ls.append(create_employee(locFac,'FPC 4', '0040', True,1));
- localFileName := sdoExpandLocalFileName(TestFilesPath + 'changesummary_prop_list_object_nested.xml');
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDOBaseDataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- locLoadedDep := s.load(localFileName);
- locDep.getChangeSummary().getOldValues(locDep);
- locLoadedDep.getChangeSummary().getOldValues(locLoadedDep);
- Check(TSDOEqualityHelper.equal(locDep,locLoadedDep),'Object');
- {Compare(
- locDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );}
- locDep.getChangeSummary().undoChanges();
- locLoadedDep.getChangeSummary().undoChanges();
- CheckEquals( 0, locDep.getChangeSummary().getChangedDataObjects().size());
- CheckEquals( 0, locLoadedDep.getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locDep, locLoadedDep),'Object');
- end;
- procedure TSDOSerializer_Test.save_to_and_load_file_ref_prop_crash_1();
- var
- locFac : ISDODataFactory;
- locPL, locPL1, locPJ0, locPJ1, locP1, locP2, locP3 : ISDODataObject;
- locCS : ISDOChangeSummary;
- serializer : ISDOSerializer;
- begin
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,'ProjectList',[]);
- locFac.AddType(s_uri,'ProjectType',[]);
- locFac.AddType(s_uri,'Person',[]);
- locFac.addProperty(s_uri,'ProjectList','Project',s_uri,'ProjectType',[pfIsContainment,pfIsMany]);
- locFac.addProperty(s_uri,'ProjectList',s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly]);
- locFac.addProperty(s_uri,'ProjectType','Member',s_uri,'Person',[pfIsContainment,pfIsMany]);
- locFac.addProperty(s_uri,'Person','Manager',s_uri,'Person',[]);
- locFac.addProperty(s_uri,'Person','Name',sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locPL := locFac.createNew(s_uri,'ProjectList');
- locCS := locPL.getChangeSummary();
- locCS.endLogging();
- locPJ0 := locPL.createDataObject('Project');
- locPL.getList('Project').append(locPJ0);
- locPJ1 := locPL.createDataObject('Project');
- locPL.getList('Project').append(locPJ1);
- locP1 := locPJ1.createDataObject('Member');
- locPJ1.getList('Member').append(locP1);
- locP1.setString('Name', 'P1 person');
- locP2 := locPJ1.createDataObject('Member');
- locPJ1.getList('Member').append(locP2);
- locP2.setString('Name', 'P2 person');
- locP2.setDataObject('Manager', locPJ1.getDataObject('Member[Name="P1 person"]'));
- locP3 := locPJ1.createDataObject('Member');
- locPJ1.getList('Member').append(locP3);
- locP3.setString('Name', 'P3 person');
- locP1.setDataObject('Manager', locPJ1.getDataObject('Member[Name="P3 person"]'));
- locCS.beginLogging();
- locPL.getList('Project').delete(1);
- serializer := TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create());
- serializer.save('ProjectList',locPL,'save_to_and_load_file_ref_prop_crash_1.xml');
- serializer := TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create());
- locPL1 := serializer.load('save_to_and_load_file_ref_prop_crash_1.xml');
- end;
- procedure TSDOSerializer_Test.save_to_and_load_file_ref_prop_crash_2();
- var
- locFac : ISDODataFactory;
- locPL, locPL1, locPJ0, locPJ1, locP1, locP2, locP3 : ISDODataObject;
- locCS : ISDOChangeSummary;
- serializer : ISDOSerializer;
- begin
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,'ProjectList',[]);
- locFac.AddType(s_uri,'ProjectType',[]);
- locFac.AddType(s_uri,'Person',[]);
- locFac.addProperty(s_uri,'ProjectList','Project',s_uri,'ProjectType',[pfIsContainment,pfIsMany]);
- locFac.addProperty(s_uri,'ProjectList',s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly]);
- locFac.addProperty(s_uri,'ProjectType','Member',s_uri,'Person',[pfIsContainment,pfIsMany]);
- locFac.addProperty(s_uri,'Person','Manager',s_uri,'Person',[]);
- locFac.addProperty(s_uri,'Person','Name',sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locPL := locFac.createNew(s_uri,'ProjectList');
- locCS := locPL.getChangeSummary();
- locCS.endLogging();
- locPJ0 := locPL.createDataObject('Project');
- locPL.getList('Project').append(locPJ0);
- locPJ1 := locPL.createDataObject('Project');
- locPL.getList('Project').append(locPJ1);
- locP1 := locPJ1.createDataObject('Member');
- locPJ1.getList('Member').append(locP1);
- locP1.setString('Name', 'P1 person');
- locP2 := locPJ1.createDataObject('Member');
- locPJ1.getList('Member').append(locP2);
- locP2.setString('Name', 'P2 person');
- locP2.setDataObject('Manager', locPJ1.getDataObject('Member[Name="P1 person"]'));
- locCS.beginLogging();
- locP3 := locPJ1.createDataObject('Member');
- locPJ1.getList('Member').append(locP3);
- locP3.setString('Name', 'P3 person');
- locP1.setDataObject('Manager', locPJ1.getDataObject('Member[Name="P3 person"]'));
- locPL.getList('Project').delete(1);
- serializer := TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create());
- serializer.save('ProjectList',locPL,'save_to_and_load_file_ref_prop_crash_2.xml');
- serializer := TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create());
- locPL1 := serializer.load('save_to_and_load_file_ref_prop_crash_2.xml');
- end;
- procedure TSDOSerializer_Test.load_from_file_reference_property();
- var
- locFac : ISDODataFactory;
- locLoadedObj : ISDODataObject;
- s : ISDOSerializer;
- localFileName : string;
- locType : ISDOType;
- p : ISDOProperty;
- projObj, user1, user2, man : ISDODataObject;
- begin
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- localFileName := sdoExpandLocalFileName(TestFilesPath + 'load_from_file_reference_property.xml');
- s := TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create());
- locLoadedObj := s.load(localFileName);
- locType := locFac.getType('uri:sample','ProjectType');
- Check(( locType <> nil ),'ProjectType');
- p := locType.getProperty('ProjectLeader');
- Check(p <> nil,'ProjectLeader');
- Check(p.isReference(),'"ProjectLeader" should be a "Reference" property');
- Check(p.getType() = locFac.getType('uri:sample','Person'),'"ProjectLeader" should be a "Person" type property');
- Check(locLoadedObj <> nil,'ProjectList');
- projObj := locLoadedObj.getDataObject('Project[ProjectName="WST"]');
- Check(projObj <> nil,'Project');
- user1 := projObj.getDataObject('Member[Name="wst user 1"]');
- Check(user1 <> nil,'Member[Name="wst user 1"]');
- user2 := projObj.getDataObject('Member[Name="wst user 2"]');
- Check(user1 <> nil,'Member[Name="wst user 2"]');
- man := projObj.getDataObject('Member[Name="Inoussa O."]');
- Check(user1 <> nil,'Member[Name="Inoussa O."]');
- Check( man = projObj.getDataObject('ProjectLeader'), 'ProjectLeader');
- Check( man = user2.getDataObject('Manager'), 'user Manager');
- end;
- procedure TSDOSerializer_Test.save_object_open_type();
- var
- fact : ISDODataFactory;
- dst, row : ISDODataObject;
- ser : ISDOSerializer;
- stream : TMemoryStream;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- fact := TSDODataFactory.Create() as ISDODataFactory;
- fact.AddType(s_uri,'Datarow',[tfIsOpen]);
- fact.AddType(s_uri,'Dataset',[tfIsOpen]);
- fact.addProperty(s_uri,'Dataset','rows',s_uri,'Datarow',[pfIsMany,pfIsContainment]);
- dst := fact.createNew(s_uri,'Dataset');
- row := dst.createDataObject('rows');
- row.setString('Name','SDO-Pascal');
- row.setString('Description','Object Pascal implementation of SDO');
- row.setInteger('Order',1);
- dst.getList('rows').append(row);
- row := dst.createDataObject('rows');
- row.setString('Name','WST');
- row.setString('Description','Object Pascal Web Services Toolkit');
- row.setInteger('Order',2);
- dst.getList('rows').append(row);
- existDoc := nil;
- serialDoc := nil;
- ser := TSDOSerializer.Create(fact,TSDOSerializerStreamXML.Create());
- stream := TMemoryStream.Create();
- try
- ser.save(dst,stream);
- {$IFDEF TEST_GENERATE_FILE}
- stream.SaveToFile(sdoExpandLocalFileName('open_type.xml'));
- {$ENDIF TEST_GENERATE_FILE}
- stream.Position := 0;
- ReadXMLFile(serialDoc,stream);
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + 'open_type.xml'));
- CheckEquals(True, CompareNodes(existDoc,serialDoc),'generated document differs from the existent one.');
- finally
- stream.Free();
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.load_object_open_type();
- var
- fact, factGen : ISDODataFactory;
- ser : ISDOSerializer;
- loadedObj, dstGen, row : ISDODataObject;
- begin
- // Load the existing file
- fact := TSDODataFactory.Create();
- ser := TSDOSerializer.Create(fact,TSDOSerializerStreamXML.Create());
- loadedObj := ser.load(sdoExpandLocalFileName(TestFilesPath + 'open_type.xml'));
- Check(( loadedObj <> nil ), 'Root object is NULL.');
- CheckEquals('Dataset',loadedObj.getType().getName());
- CheckEquals(2,loadedObj.getList('rows').size());
- // Generate the object copy
- factGen := TSDODataFactory.Create() as ISDODataFactory;
- factGen.AddType(s_uri,'Datarow',[tfIsOpen]);
- factGen.AddType(s_uri,'Dataset',[tfIsOpen]);
- factGen.addProperty(s_uri,'Dataset','rows',s_uri,'Datarow',[pfIsMany,pfIsContainment]);
- dstGen := factGen.createNew(s_uri,'Dataset');
- row := dstGen.createDataObject('rows');
- row.setString('Name','SDO-Pascal');
- row.setString('Description','Object Pascal implementation of SDO');
- row.setInteger('Order',1);
- dstGen.getList('rows').append(row);
- row := dstGen.createDataObject('rows');
- row.setString('Name','WST');
- row.setString('Description','Object Pascal Web Services Toolkit');
- row.setInteger('Order',2);
- dstGen.getList('rows').append(row);
- // ... compare them now
- Check(TSDOEqualityHelper.equal(dstGen,loadedObj), 'Loaded object differs from generated object');
- end;
- procedure TSDOSerializer_Test.save_to_file_changesummary_prop_list_byte();
- const
- LIST_PROP_NAME = s_list_byte;
- LIST_PROP_TYPE = ByteType;
- FILE_NAME = 'changesummary_prop_list_byte.xml';
- var
- locFac : ISDODataFactory;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName(FILE_NAME);
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,LIST_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[LIST_PROP_TYPE],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(LIST_PROP_NAME);
- ls.append(TSDOByte(1));
- ls.append(TSDOByte(2));
- ls.append(TSDOByte(3));
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setByte(0,10);
- ls.append(TSDOByte(123));
- ls.append(TSDOByte(45));
- ls.setByte(1,20);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, TSDOByte(107));
- ls.append(TSDOByte(89));
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_DepartmentType,locDep,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + FILE_NAME));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.save_to_file_changesummary_prop_list_date();
- const VAL_1 : TSDODate = ( Date : 0; HourOffset : 0; MinuteOffset : 0; );
- VAL_2 : TSDODate = ( Date : 0; HourOffset : 0; MinuteOffset : 0; );
- VAL_3 : TSDODate = ( Date : 0; HourOffset : 0; MinuteOffset : 0; );
- VAL_4 : TSDODate = ( Date : 0; HourOffset : 0; MinuteOffset : 0; );
- VAL_5 : TSDODate = ( Date : 0; HourOffset : 0; MinuteOffset : 0; );
- procedure SetConstants();
- var
- d : TSDODate;
- begin
- FillChar(d,SizeOf(TSDODate),#0);
- d.Date := EncodeDateTime(1976,10,12,23,34,45,56);
- d.HourOffset := 5;
- d.MinuteOffset := 6;
- PSDODate(@VAL_1)^ := d;
- FillChar(d,SizeOf(TSDODate),#0);
- d.Date := EncodeDateTime(2008,7,8,9,10,11,12);
- d.HourOffset := 0;
- d.MinuteOffset := 13;
- PSDODate(@VAL_3)^ := d;
- FillChar(d,SizeOf(TSDODate),#0);
- d.Date := EncodeDateTime(2009,9,1,2,3,0,1);
- d.HourOffset := 0;
- d.MinuteOffset := 13;
- PSDODate(@VAL_4)^ := d;
- FillChar(d,SizeOf(TSDODate),#0);
- d.Date := EncodeDateTime(1900,11,8,1,2,0,0);
- d.HourOffset := 0;
- d.MinuteOffset := 13;
- PSDODate(@VAL_5)^ := d;
- end;
- var
- locFac : ISDODataFactory;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- SetConstants();
- localFileName := sdoExpandLocalFileName('changesummary_prop_list_date.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_birthDate,sdo_namespace,SDOTypeDefaultTypeNames[DateTimeType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_list_date,sdo_namespace,SDOTypeDefaultTypeNames[DateTimeType],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setDate(s_birthDate,VAL_1);
- ls := locDep.getList(s_list_date);
- ls.append(VAL_1);
- ls.append(VAL_2);
- ls.append(VAL_3);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setDate(0,VAL_4);
- ls.append(VAL_5);
- ls.append(VAL_1);
- ls.setDate(1,VAL_2);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, VAL_3);
- ls.append(VAL_4);
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_DepartmentType,locDep,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + 'changesummary_prop_list_date.xml'));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- {$IFDEF HAS_SDO_BYTES}
- procedure TSDOSerializer_Test.save_to_file_changesummary_prop_list_bytes();
- const
- FILE_NAME = 'changesummary_prop_list_bytes.xml';
- LIST_PROP_NAME = s_list_bytes;
- PROP_TYPE = BytesType;
-
- var
- VAL_1, VAL_2, VAL_3, VAL_4, VAL_5 : TSDOBytes;
- procedure SetConstants();
- var
- v : TSDOBytes;
- k : Integer;
- begin
- SetLength(v,10);
- for k := 0 to High(v) do
- v[k] := k mod High(Byte);
- VAL_1 := v;
- v := nil;
- VAL_2 := nil;
- SetLength(v,20);
- for k := 0 to High(v) do
- v[k] := ( ( 3 * k ) + 1 ) mod High(Byte);
- VAL_3 := v;
- v := nil;
- SetLength(v,30);
- for k := 0 to High(v) do
- v[k] := ( ( 3 * k ) + 1 ) mod High(Byte);
- VAL_4 := v;
- v := nil;
- SetLength(v,40);
- for k := 0 to High(v) do
- v[k] := ( ( 3 * k ) + 1 ) mod High(Byte);
- VAL_5 := v;
- v := nil;
- end;
-
- var
- locFac : ISDODataFactory;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- SetConstants();
- localFileName := sdoExpandLocalFileName(FILE_NAME);
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_birthDate,sdo_namespace,SDOTypeDefaultTypeNames[DateTimeType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,LIST_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- //locDep.setBytes(s_birthDate,VAL_1);
- ls := locDep.getList(LIST_PROP_NAME);
- ls.appendBytes(VAL_1);
- ls.appendBytes(VAL_2);
- ls.appendBytes(VAL_3);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setBytes(0,VAL_4);
- ls.appendBytes(VAL_5);
- ls.appendBytes(VAL_1);
- ls.setBytes(1,VAL_2);
- ls.delete(0);
- ls.delete(1);
- ls.insertBytes(2, VAL_3);
- ls.appendBytes(VAL_4);
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create()) as ISDOSerializer).save(locDep,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
-
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_DepartmentType,locDep,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + FILE_NAME));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_bytes();
- const
- PROP_NAME = 'sampleProperty';
- PROP_TYPE = BytesType;
- FILE_NAME = 'change_summary_bytes.xml';
- var
- VAL_1, VAL_2 : TSDOBytes;
- procedure SetConstants();
- var
- v : TSDOBytes;
- k : Integer;
- begin
- SetLength(v,10);
- for k := 0 to High(v) do
- v[k] := k mod High(Byte);
- VAL_1 := v;
- v := nil;
- SetLength(v,20);
- for k := 0 to High(v) do
- v[k] := ( ( 3 * k ) + 1 ) mod High(Byte);
- VAL_2 := v;
- end;
- var
- locFac, tmpFactory : ISDODataFactory;
- locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- ol : ISDODataObjectList;
- begin
- SetConstants();
- localFileName := sdoExpandLocalFileName(TestFilesPath + FILE_NAME);
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_Employee,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[]);
- locFac.addProperty(s_uri,s_Employee,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locEmployee := locFac.createNew(s_uri,s_Employee);
- locEmployee.setBytes(PROP_NAME,VAL_1);
- locCS := locEmployee.getChangeSummary();
- locCS.beginLogging();
- locEmployee.setBytes(PROP_NAME,VAL_2);
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create()) as ISDOSerializer).save(locEmployee,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(localFileName,ol);
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- Compare(
- locEmployee.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- ol.getDataObject(0).getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locEmployee.getChangeSummary().undoChanges();
- ol.getDataObject(0).getChangeSummary().undoChanges();
- CheckEquals(0, locEmployee.getChangeSummary().getChangedDataObjects().size());
- CheckEquals(0, ol.getDataObject(0).getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_prop_list_bytes();
- const
- FILE_NAME = 'changesummary_prop_list_bytes.xml';
- LIST_PROP_NAME = s_list_bytes;
- PROP_TYPE = BytesType;
- var
- VAL_1, VAL_2, VAL_3, VAL_4, VAL_5 : TSDOBytes;
- procedure SetConstants();
- var
- v : TSDOBytes;
- k : Integer;
- begin
- SetLength(v,10);
- for k := 0 to High(v) do
- v[k] := k mod High(Byte);
- VAL_1 := v;
- v := nil;
- VAL_2 := nil;
- SetLength(v,20);
- for k := 0 to High(v) do
- v[k] := ( ( 3 * k ) + 1 ) mod High(Byte);
- VAL_3 := v;
- v := nil;
- SetLength(v,30);
- for k := 0 to High(v) do
- v[k] := ( ( 3 * k ) + 1 ) mod High(Byte);
- VAL_4 := v;
- v := nil;
- SetLength(v,40);
- for k := 0 to High(v) do
- v[k] := ( ( 3 * k ) + 1 ) mod High(Byte);
- VAL_5 := v;
- v := nil;
- end;
- var
- locFac, tmpFactory : ISDODataFactory;
- locDep, locLoadedDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- SetConstants();
- localFileName := sdoExpandLocalFileName(FILE_NAME);
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_birthDate,sdo_namespace,SDOTypeDefaultTypeNames[DateTimeType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,LIST_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- //locDep.setBytes(s_birthDate,VAL_1);
- ls := locDep.getList(LIST_PROP_NAME);
- ls.appendBytes(VAL_1);
- ls.appendBytes(VAL_2);
- ls.appendBytes(VAL_3);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setBytes(0,VAL_4);
- ls.appendBytes(VAL_5);
- ls.appendBytes(VAL_1);
- ls.setBytes(1,VAL_2);
- ls.delete(0);
- ls.delete(1);
- ls.insertBytes(2, VAL_3);
- ls.appendBytes(VAL_4);
- localFileName := sdoExpandLocalFileName(TestFilesPath + FILE_NAME);
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDOBaseDataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- locLoadedDep := s.load(localFileName);
- Check(TSDOEqualityHelper.equal(locDep, locLoadedDep),'Object');
- Compare(
- locDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- end;
- {$ENDIF HAS_SDO_BYTES}
- {$IFDEF HAS_SDO_CHAR}
- procedure TSDOSerializer_Test.save_to_file_changesummary_prop_list_char();
- const
- LIST_PROP_NAME = s_list_char;
- LIST_PROP_TYPE = CharacterType;
- FILE_NAME = 'changesummary_prop_list_char.xml';
- var
- locFac : ISDODataFactory;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName(FILE_NAME);
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,LIST_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[LIST_PROP_TYPE],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(LIST_PROP_NAME);
- ls.append(TSDOChar('k'));
- ls.append(TSDOChar('y'));
- ls.append(TSDOChar('g'));
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setCharacter(0,TSDOChar('j'));
- ls.append(TSDOChar('a'));
- ls.append(TSDOChar('x'));
- ls.setCharacter(1,TSDOChar('v'));
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, TSDOChar('A'));
- ls.append(TSDOChar('Z'));
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create()) as ISDOSerializer).save(locDep,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
-
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_DepartmentType,locDep,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + FILE_NAME));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- {$ENDIF HAS_SDO_CHAR}
- {$IFDEF HAS_SDO_LONG}
- procedure TSDOSerializer_Test.save_to_file_changesummary_prop_list_long();
- const
- LIST_PROP_NAME = s_list_long;
- LIST_PROP_TYPE = LongType;
- FILE_NAME = 'changesummary_prop_list_long.xml';
- var
- locFac : ISDODataFactory;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName(FILE_NAME);
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,LIST_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[LIST_PROP_TYPE],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(LIST_PROP_NAME);
- ls.append(TSDOLong(11111111111111111));
- ls.append(TSDOLong(-2222222222222222));
- ls.append(TSDOLong(333333333333333333));
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setLong(0,4444444444444444444);
- ls.append(TSDOLong(5555555555555555555));
- ls.append(TSDOLong(-6666666666666666666));
- ls.setLong(1,7777777777777777777);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, TSDOLong(8));
- ls.append(TSDOLong(-9));
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create()) as ISDOSerializer).save(locDep,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_DepartmentType,locDep,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + FILE_NAME));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- {$ENDIF HAS_SDO_LONG}
- {$IFDEF HAS_SDO_SHORT}
- procedure TSDOSerializer_Test.save_to_file_changesummary_prop_list_short();
- const
- LIST_PROP_NAME = s_list_short;
- LIST_PROP_TYPE = ShortType;
- FILE_NAME = 'changesummary_prop_list_short.xml';
- var
- locFac : ISDODataFactory;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName(FILE_NAME);
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,LIST_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[LIST_PROP_TYPE],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(LIST_PROP_NAME);
- ls.append(TSDOShort(1));
- ls.append(TSDOShort(2));
- ls.append(TSDOShort(3));
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setShort(0,10);
- ls.append(TSDOShort(12345));
- ls.append(TSDOShort(-5245));
- ls.setShort(1,20);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, TSDOShort(107));
- ls.append(TSDOShort(89));
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create()) as ISDOSerializer).save(locDep,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
-
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_DepartmentType,locDep,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + FILE_NAME));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- {$ENDIF HAS_SDO_SHORT}
- {$IFDEF HAS_SDO_CURRENCY}
- procedure TSDOSerializer_Test.save_to_file_changesummary_prop_list_currency();
- const
- LIST_PROP_NAME = s_list_currency;
- LIST_PROP_TYPE = CurrencyType;
- FILE_NAME = 'changesummary_prop_list_currency.xml';
- var
- locFac : ISDODataFactory;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName(FILE_NAME);
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,LIST_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[LIST_PROP_TYPE],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(LIST_PROP_NAME);
- ls.appendCurrency(CURRENCY_VALUES_REPEATED_DIGITED[0]);
- ls.appendCurrency(CURRENCY_VALUES_REPEATED_DIGITED[1]);
- ls.appendCurrency(CURRENCY_VALUES_REPEATED_DIGITED[2]);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setCurrency(0,CURRENCY_VALUES_REPEATED_DIGITED[3]);
- ls.appendCurrency(CURRENCY_VALUES_REPEATED_DIGITED[4]);
- ls.appendCurrency(CURRENCY_VALUES_REPEATED_DIGITED[5]);
- ls.setCurrency(1,CURRENCY_VALUES_REPEATED_DIGITED[6]);
- ls.delete(0);
- ls.delete(1);
- ls.insertCurrency(2, CURRENCY_VALUES_REPEATED_DIGITED[7]);
- ls.appendCurrency(CURRENCY_VALUES_REPEATED_DIGITED[8]);
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create()) as ISDOSerializer).save(locDep,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_DepartmentType,locDep,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + FILE_NAME));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_currency();
- const
- PROP_NAME = 'sampleProperty';
- PROP_TYPE = CurrencyType;
- FILE_NAME = 'change_summary_currency.xml';
- VAL_1 : TSDOCurrency = 12398745632145.6987;
- VAL_2 : TSDOCurrency = -45821568.7422;
- var
- locFac, tmpFactory : ISDODataFactory;
- locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- ol : ISDODataObjectList;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + FILE_NAME);
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_Employee,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[]);
- locFac.addProperty(s_uri,s_Employee,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locEmployee := locFac.createNew(s_uri,s_Employee);
- locEmployee.setCurrency(PROP_NAME,VAL_1);
- locCS := locEmployee.getChangeSummary();
- locCS.beginLogging();
- locEmployee.setCurrency(PROP_NAME,VAL_2);
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create())as ISDOSerializer).save(locEmployee,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(localFileName,ol);
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- Compare(
- locEmployee.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- ol.getDataObject(0).getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locEmployee.getChangeSummary().undoChanges();
- ol.getDataObject(0).getChangeSummary().undoChanges();
- CheckEquals(0, locEmployee.getChangeSummary().getChangedDataObjects().size());
- CheckEquals(0, ol.getDataObject(0).getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_prop_list_currency();
- const
- PROP_NAME = s_list_currency;
- PROP_TYPE = CurrencyType;
- FILE_NAME = 'changesummary_prop_list_currency.xml';
- var
- locFac, tmpFactory : ISDODataFactory;
- locDep, locLoadedDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(PROP_NAME);
- ls.appendCurrency(CURRENCY_VALUES_REPEATED_DIGITED[0]);
- ls.appendCurrency(CURRENCY_VALUES_REPEATED_DIGITED[1]);
- ls.appendCurrency(CURRENCY_VALUES_REPEATED_DIGITED[2]);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setCurrency(0,CURRENCY_VALUES_REPEATED_DIGITED[3]);
- ls.appendCurrency(CURRENCY_VALUES_REPEATED_DIGITED[4]);
- ls.appendCurrency(CURRENCY_VALUES_REPEATED_DIGITED[5]);
- ls.setCurrency(1,CURRENCY_VALUES_REPEATED_DIGITED[6]);
- ls.delete(0);
- ls.delete(1);
- ls.insertCurrency(2, CURRENCY_VALUES_REPEATED_DIGITED[7]);
- ls.appendCurrency(CURRENCY_VALUES_REPEATED_DIGITED[8]);
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create())as ISDOSerializer).save(locDep,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
-
- localFileName := sdoExpandLocalFileName(TestFilesPath + FILE_NAME);
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDOBaseDataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- locLoadedDep := s.load(localFileName);
- Check(TSDOEqualityHelper.equal(locDep, locLoadedDep),'Object');
- Compare(
- locDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- end;
- {$ENDIF HAS_SDO_CURRENCY}
- {$IFDEF HAS_SDO_DOUBLE}
- procedure TSDOSerializer_Test.save_to_file_changesummary_prop_list_double();
- const
- LIST_PROP_NAME = s_list_double;
- LIST_PROP_TYPE = DoubleType;
- FILE_NAME = 'changesummary_prop_list_double.xml';
- var
- locFac : ISDODataFactory;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName(FILE_NAME);
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,LIST_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[LIST_PROP_TYPE],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(LIST_PROP_NAME);
- ls.append(DOUBLE_VALUES_REPEATED_DIGITED[0]);
- ls.append(DOUBLE_VALUES_REPEATED_DIGITED[1]);
- ls.append(DOUBLE_VALUES_REPEATED_DIGITED[2]);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setDouble(0,DOUBLE_VALUES_REPEATED_DIGITED[3]);
- ls.append(DOUBLE_VALUES_REPEATED_DIGITED[4]);
- ls.append(DOUBLE_VALUES_REPEATED_DIGITED[5]);
- ls.setDouble(1,DOUBLE_VALUES_REPEATED_DIGITED[6]);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, DOUBLE_VALUES_REPEATED_DIGITED[7]);
- ls.append(DOUBLE_VALUES_REPEATED_DIGITED[8]);
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create()) as ISDOSerializer).save(locDep,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_DepartmentType,locDep,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + FILE_NAME));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_double();
- const
- PROP_NAME = 'sampleProperty';
- PROP_TYPE = DoubleType;
- FILE_NAME = 'change_summary_double.xml';
- VAL_1 : TSDODouble = 1239874567;
- VAL_2 : TSDODouble = -4582152;
- var
- locFac, tmpFactory : ISDODataFactory;
- locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- ol : ISDODataObjectList;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + FILE_NAME);
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_Employee,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[]);
- locFac.addProperty(s_uri,s_Employee,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locEmployee := locFac.createNew(s_uri,s_Employee);
- locEmployee.setDouble(PROP_NAME,VAL_1);
- locCS := locEmployee.getChangeSummary();
- locCS.beginLogging();
- locEmployee.setDouble(PROP_NAME,VAL_2);
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create())as ISDOSerializer).save(locEmployee,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(localFileName,ol);
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- Compare(
- locEmployee.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- ol.getDataObject(0).getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locEmployee.getChangeSummary().undoChanges();
- ol.getDataObject(0).getChangeSummary().undoChanges();
- CheckEquals(0, locEmployee.getChangeSummary().getChangedDataObjects().size());
- CheckEquals(0, ol.getDataObject(0).getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_prop_list_double();
- const
- PROP_NAME = s_list_double;
- PROP_TYPE = DoubleType;
- FILE_NAME = 'changesummary_prop_list_double.xml';
- var
- locFac, tmpFactory : ISDODataFactory;
- locDep, locLoadedDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(PROP_NAME);
- ls.append(DOUBLE_VALUES_REPEATED_DIGITED[0]);
- ls.append(DOUBLE_VALUES_REPEATED_DIGITED[1]);
- ls.append(DOUBLE_VALUES_REPEATED_DIGITED[2]);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setDouble(0,DOUBLE_VALUES_REPEATED_DIGITED[3]);
- ls.append(DOUBLE_VALUES_REPEATED_DIGITED[4]);
- ls.append(DOUBLE_VALUES_REPEATED_DIGITED[5]);
- ls.setDouble(1,DOUBLE_VALUES_REPEATED_DIGITED[6]);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, DOUBLE_VALUES_REPEATED_DIGITED[7]);
- ls.append(DOUBLE_VALUES_REPEATED_DIGITED[8]);
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create())as ISDOSerializer).save(locDep,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
-
- localFileName := sdoExpandLocalFileName(TestFilesPath + FILE_NAME);
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDOBaseDataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- locLoadedDep := s.load(localFileName);
- Check(TSDOEqualityHelper.equal(locDep, locLoadedDep),'Object');
- Compare(
- locDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- end;
- {$ENDIF HAS_SDO_DOUBLE}
- {$IFDEF HAS_SDO_FLOAT}
- procedure TSDOSerializer_Test.save_to_file_changesummary_prop_list_float();
- const
- LIST_PROP_NAME = s_list_float;
- LIST_PROP_TYPE = FloatType;
- FILE_NAME = 'changesummary_prop_list_float.xml';
- var
- locFac : ISDODataFactory;
- locDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- existDoc, serialDoc : TSDOXMLDocument;
- begin
- localFileName := sdoExpandLocalFileName(FILE_NAME);
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,LIST_PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[LIST_PROP_TYPE],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(LIST_PROP_NAME);
- ls.append(FLOAT_VALUES_REPEATED_DIGITED[0]);
- ls.append(FLOAT_VALUES_REPEATED_DIGITED[1]);
- ls.append(FLOAT_VALUES_REPEATED_DIGITED[2]);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setFloat(0,FLOAT_VALUES_REPEATED_DIGITED[3]);
- ls.append(FLOAT_VALUES_REPEATED_DIGITED[4]);
- ls.append(FLOAT_VALUES_REPEATED_DIGITED[5]);
- ls.setFloat(1,FLOAT_VALUES_REPEATED_DIGITED[6]);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, FLOAT_VALUES_REPEATED_DIGITED[7]);
- ls.append(FLOAT_VALUES_REPEATED_DIGITED[8]);
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create()) as ISDOSerializer).save(locDep,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
- f := TSDOSerializerStreamXML.Create();
- s := TSDOSerializer.Create(locFac,f);
- s.save(s_DepartmentType,locDep,localFileName);
- existDoc := nil;
- serialDoc := nil;
- ReadXMLFile(existDoc,sdoExpandLocalFileName(TestFilesPath + FILE_NAME));
- try
- ReadXMLFile(serialDoc,localFileName);
- CheckEquals(True, CompareNodes(existDoc,serialDoc));
- finally
- ReleaseDomNode(existDoc);
- ReleaseDomNode(serialDoc);
- end;
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_float();
- const
- PROP_NAME = 'sampleProperty';
- PROP_TYPE = FloatType;
- FILE_NAME = 'change_summary_float.xml';
- VAL_1 : TSDOFloat = 1239874567;
- VAL_2 : TSDOFloat = -4582152;
- var
- locFac, tmpFactory : ISDODataFactory;
- locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- ol : ISDODataObjectList;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + FILE_NAME);
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_Employee,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[]);
- locFac.addProperty(s_uri,s_Employee,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locEmployee := locFac.createNew(s_uri,s_Employee);
- locEmployee.setFloat(PROP_NAME,VAL_1);
- locCS := locEmployee.getChangeSummary();
- locCS.beginLogging();
- locEmployee.setFloat(PROP_NAME,VAL_2);
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create())as ISDOSerializer).save(locEmployee,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(localFileName,ol);
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- Compare(
- locEmployee.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- ol.getDataObject(0).getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locEmployee.getChangeSummary().undoChanges();
- ol.getDataObject(0).getChangeSummary().undoChanges();
- CheckEquals(0, locEmployee.getChangeSummary().getChangedDataObjects().size());
- CheckEquals(0, ol.getDataObject(0).getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_prop_list_float();
- const
- PROP_NAME = s_list_float;
- PROP_TYPE = FloatType;
- FILE_NAME = 'changesummary_prop_list_float.xml';
- var
- locFac, tmpFactory : ISDODataFactory;
- locDep, locLoadedDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(PROP_NAME);
- ls.append(FLOAT_VALUES_REPEATED_DIGITED[0]);
- ls.append(FLOAT_VALUES_REPEATED_DIGITED[1]);
- ls.append(FLOAT_VALUES_REPEATED_DIGITED[2]);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setFloat(0,FLOAT_VALUES_REPEATED_DIGITED[3]);
- ls.append(FLOAT_VALUES_REPEATED_DIGITED[4]);
- ls.append(FLOAT_VALUES_REPEATED_DIGITED[5]);
- ls.setFloat(1,FLOAT_VALUES_REPEATED_DIGITED[6]);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, FLOAT_VALUES_REPEATED_DIGITED[7]);
- ls.append(FLOAT_VALUES_REPEATED_DIGITED[8]);
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create())as ISDOSerializer).save(locDep,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
-
- localFileName := sdoExpandLocalFileName(TestFilesPath + FILE_NAME);
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDOBaseDataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- locLoadedDep := s.load(localFileName);
- Check(TSDOEqualityHelper.equal(locDep, locLoadedDep),'Object');
- Compare(
- locDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- end;
- {$ENDIF HAS_SDO_FLOAT}
- procedure TSDOSerializer_Test.load_from_file_changesummary_bool();
- const
- PROP_NAME = 'sampleProperty';
- PROP_TYPE = BooleanType;
- VAL_1 : TSDOBoolean = True;
- VAL_2 : TSDOBoolean = False;
- var
- locFac, tmpFactory : ISDODataFactory;
- locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- ol : ISDODataObjectList;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + 'change_summary_bool.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_Employee,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[]);
- locFac.addProperty(s_uri,s_Employee,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locEmployee := locFac.createNew(s_uri,s_Employee);
- locEmployee.setBoolean(PROP_NAME,VAL_1);
- locCS := locEmployee.getChangeSummary();
- locCS.beginLogging();
- locEmployee.setBoolean(PROP_NAME,VAL_2);
- //(TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create())as ISDOSerializer).save(locEmployee,sdoExpandLocalFileName('change_summary_bool.xml'));
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(localFileName,ol);
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- Compare(
- locEmployee.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- ol.getDataObject(0).getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locEmployee.getChangeSummary().undoChanges();
- ol.getDataObject(0).getChangeSummary().undoChanges();
- CheckEquals(0, locEmployee.getChangeSummary().getChangedDataObjects().size());
- CheckEquals(0, ol.getDataObject(0).getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_byte();
- const
- PROP_NAME = 'sampleProperty';
- PROP_TYPE = ByteType;
- FILE_NAME = 'change_summary_byte.xml';
- VAL_1 : TSDOByte = 200;
- VAL_2 : TSDOByte = 123;
- var
- locFac, tmpFactory : ISDODataFactory;
- locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- ol : ISDODataObjectList;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + FILE_NAME);
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_Employee,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[]);
- locFac.addProperty(s_uri,s_Employee,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locEmployee := locFac.createNew(s_uri,s_Employee);
- locEmployee.setByte(PROP_NAME,VAL_1);
- locCS := locEmployee.getChangeSummary();
- locCS.beginLogging();
- locEmployee.setByte(PROP_NAME,VAL_2);
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create())as ISDOSerializer).save(locEmployee,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(localFileName,ol);
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- Compare(
- locEmployee.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- ol.getDataObject(0).getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locEmployee.getChangeSummary().undoChanges();
- ol.getDataObject(0).getChangeSummary().undoChanges();
- CheckEquals(0, locEmployee.getChangeSummary().getChangedDataObjects().size());
- CheckEquals(0, ol.getDataObject(0).getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- end;
- {$IFDEF HAS_SDO_CHAR}
- procedure TSDOSerializer_Test.load_from_file_changesummary_char();
- const
- PROP_NAME = 'sampleProperty';
- PROP_TYPE = CharacterType;
- FILE_NAME = 'change_summary_char.xml';
- VAL_1 : TSDOChar = 'a';
- VAL_2 : TSDOChar = 'z';
- var
- locFac, tmpFactory : ISDODataFactory;
- locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- ol : ISDODataObjectList;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + FILE_NAME);
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_Employee,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[]);
- locFac.addProperty(s_uri,s_Employee,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locEmployee := locFac.createNew(s_uri,s_Employee);
- locEmployee.setCharacter(PROP_NAME,VAL_1);
- locCS := locEmployee.getChangeSummary();
- locCS.beginLogging();
- locEmployee.setCharacter(PROP_NAME,VAL_2);
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create())as ISDOSerializer).save(locEmployee,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(localFileName,ol);
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- Compare(
- locEmployee.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- ol.getDataObject(0).getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locEmployee.getChangeSummary().undoChanges();
- ol.getDataObject(0).getChangeSummary().undoChanges();
- CheckEquals(0, locEmployee.getChangeSummary().getChangedDataObjects().size());
- CheckEquals(0, ol.getDataObject(0).getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- end;
- {$ENDIF HAS_SDO_CHAR}
- procedure TSDOSerializer_Test.load_from_file_changesummary_date();
- const
- PROP_NAME = 'sampleProperty';
- PROP_TYPE = DateTimeType;
- VAL_1 : TSDODate = ( Date : 45123; HourOffset : 0; MinuteOffset : 5; );
- VAL_2 : TSDODate = ( Date : 39000; HourOffset : -8; MinuteOffset : 0; );
- var
- locFac, tmpFactory : ISDODataFactory;
- locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- ol : ISDODataObjectList;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + 'change_summary_date.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_Employee,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[]);
- locFac.addProperty(s_uri,s_Employee,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locEmployee := locFac.createNew(s_uri,s_Employee);
- locEmployee.setDate(PROP_NAME,VAL_1);
- locCS := locEmployee.getChangeSummary();
- locCS.beginLogging();
- locEmployee.setDate(PROP_NAME,VAL_2);
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(localFileName,ol);
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- Compare(
- locEmployee.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- ol.getDataObject(0).getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locEmployee.getChangeSummary().undoChanges();
- ol.getDataObject(0).getChangeSummary().undoChanges();
- CheckEquals(0, locEmployee.getChangeSummary().getChangedDataObjects().size());
- CheckEquals(0, ol.getDataObject(0).getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_integer();
- const
- PROP_NAME = 'sampleProperty';
- PROP_TYPE = IntegerType;
- VAL_1 : TSDOInteger = 12345;
- VAL_2 : TSDOInteger = -789;
- var
- locFac, tmpFactory : ISDODataFactory;
- locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- ol : ISDODataObjectList;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + 'change_summary_integer.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_Employee,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[]);
- locFac.addProperty(s_uri,s_Employee,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locEmployee := locFac.createNew(s_uri,s_Employee);
- locEmployee.setInteger(PROP_NAME,VAL_1);
- locCS := locEmployee.getChangeSummary();
- locCS.beginLogging();
- locEmployee.setInteger(PROP_NAME,VAL_2);
- //(TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create())as ISDOSerializer).save(locEmployee,sdoExpandLocalFileName('change_summary_integer.xml'));
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(localFileName,ol);
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- Compare(
- locEmployee.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- ol.getDataObject(0).getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locEmployee.getChangeSummary().undoChanges();
- ol.getDataObject(0).getChangeSummary().undoChanges();
- CheckEquals(0, locEmployee.getChangeSummary().getChangedDataObjects().size());
- CheckEquals(0, ol.getDataObject(0).getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- end;
- {$IFDEF HAS_SDO_LONG}
- procedure TSDOSerializer_Test.load_from_file_changesummary_long();
- const
- PROP_NAME = 'sampleProperty';
- PROP_TYPE = LongType;
- FILE_NAME = 'change_summary_long.xml';
- VAL_1 : TSDOLong = 123987456321456987;
- VAL_2 : TSDOLong = -458215687422;
- var
- locFac, tmpFactory : ISDODataFactory;
- locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- ol : ISDODataObjectList;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + FILE_NAME);
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_Employee,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[]);
- locFac.addProperty(s_uri,s_Employee,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locEmployee := locFac.createNew(s_uri,s_Employee);
- locEmployee.setLong(PROP_NAME,VAL_1);
- locCS := locEmployee.getChangeSummary();
- locCS.beginLogging();
- locEmployee.setLong(PROP_NAME,VAL_2);
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create())as ISDOSerializer).save(locEmployee,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(localFileName,ol);
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- Compare(
- locEmployee.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- ol.getDataObject(0).getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locEmployee.getChangeSummary().undoChanges();
- ol.getDataObject(0).getChangeSummary().undoChanges();
- CheckEquals(0, locEmployee.getChangeSummary().getChangedDataObjects().size());
- CheckEquals(0, ol.getDataObject(0).getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- end;
- {$ENDIF HAS_SDO_LONG}
- {$IFDEF HAS_SDO_SHORT}
- procedure TSDOSerializer_Test.load_from_file_changesummary_short();
- const
- PROP_NAME = 'sampleProperty';
- PROP_TYPE = ShortType;
- FILE_NAME = 'change_summary_short.xml';
- VAL_1 : TSDOShort = 1592;
- VAL_2 : TSDOShort = -9876;
- var
- locFac, tmpFactory : ISDODataFactory;
- locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- ol : ISDODataObjectList;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + FILE_NAME);
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_Employee,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[]);
- locFac.addProperty(s_uri,s_Employee,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locEmployee := locFac.createNew(s_uri,s_Employee);
- locEmployee.setShort(PROP_NAME,VAL_1);
- locCS := locEmployee.getChangeSummary();
- locCS.beginLogging();
- locEmployee.setShort(PROP_NAME,VAL_2);
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create())as ISDOSerializer).save(locEmployee,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(localFileName,ol);
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- Compare(
- locEmployee.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- ol.getDataObject(0).getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locEmployee.getChangeSummary().undoChanges();
- ol.getDataObject(0).getChangeSummary().undoChanges();
- CheckEquals(0, locEmployee.getChangeSummary().getChangedDataObjects().size());
- CheckEquals(0, ol.getDataObject(0).getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- end;
- {$ENDIF HAS_SDO_SHORT}
- procedure TSDOSerializer_Test.load_from_file_changesummary_string();
- const
- PROP_NAME = 'sampleProperty';
- PROP_TYPE = StringType;
- VAL_1 : TSDOString = 'Inoussa.O';
- VAL_2 : TSDOString = 'sdo.fpc.delphi';
- var
- locFac, tmpFactory : ISDODataFactory;
- locEmployee : ISDODataObject;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- ol : ISDODataObjectList;
- begin
- localFileName := sdoExpandLocalFileName(TestFilesPath + 'change_summary_string.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_Employee,[]);
- locFac.addProperty(s_uri,s_Employee,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[]);
- locFac.addProperty(s_uri,s_Employee,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locEmployee := locFac.createNew(s_uri,s_Employee);
- locEmployee.setString(PROP_NAME,VAL_1);
- locCS := locEmployee.getChangeSummary();
- locCS.beginLogging();
- locEmployee.setString(PROP_NAME,VAL_2);
- //(TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create())as ISDOSerializer).save(locEmployee,sdoExpandLocalFileName('change_summary_string.xml'));
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDODataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- ol := TSDODataObjectList.Create(tmpFactory.getType(sdo_namespace,SDOTypeDefaultTypeNames[ObjectType]));
- s.load(localFileName,ol);
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- Compare(
- locEmployee.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- ol.getDataObject(0).getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- locEmployee.getChangeSummary().undoChanges();
- ol.getDataObject(0).getChangeSummary().undoChanges();
- CheckEquals(0, locEmployee.getChangeSummary().getChangedDataObjects().size());
- CheckEquals(0, ol.getDataObject(0).getChangeSummary().getChangedDataObjects().size());
- Check(TSDOEqualityHelper.equal(locEmployee,ol.getDataObject(0)));
- end;
- procedure TSDOSerializer_Test.load_from_file_changesummary_prop_list_byte();
- const
- PROP_NAME = s_list_byte;
- PROP_TYPE = ByteType;
- FILE_NAME = 'changesummary_prop_list_byte.xml';
- var
- locFac, tmpFactory : ISDODataFactory;
- locDep, locLoadedDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(PROP_NAME);
- ls.append(TSDOByte(1));
- ls.append(TSDOByte(2));
- ls.append(TSDOByte(3));
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setByte(0,10);
- ls.append(TSDOByte(123));
- ls.append(TSDOByte(45));
- ls.setByte(1,20);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, TSDOByte(107));
- ls.append(TSDOByte(89));
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create())as ISDOSerializer).save(locDep,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
-
- localFileName := sdoExpandLocalFileName(TestFilesPath + FILE_NAME);
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDOBaseDataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- locLoadedDep := s.load(localFileName);
- Check(TSDOEqualityHelper.equal(locDep, locLoadedDep),'Object');
- Compare(
- locDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- end;
- {$IFDEF HAS_SDO_CHAR}
- procedure TSDOSerializer_Test.load_from_file_changesummary_prop_list_char();
- const
- PROP_NAME = s_list_char;
- PROP_TYPE = CharacterType;
- FILE_NAME = 'changesummary_prop_list_char.xml';
- var
- locFac, tmpFactory : ISDODataFactory;
- locDep, locLoadedDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_number,sdo_namespace,SDOTypeDefaultTypeNames[ByteType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,PROP_NAME,sdo_namespace,SDOTypeDefaultTypeNames[PROP_TYPE],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setByte(s_number,123);
- ls := locDep.getList(PROP_NAME);
- ls.append(TSDOChar('k'));
- ls.append(TSDOChar('y'));
- ls.append(TSDOChar('g'));
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setCharacter(0,TSDOChar('j'));
- ls.append(TSDOChar('a'));
- ls.append(TSDOChar('x'));
- ls.setCharacter(1,TSDOChar('v'));
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, TSDOChar('A'));
- ls.append(TSDOChar('Z'));
- {$IFDEF TEST_GENERATE_FILE}
- (TSDOSerializer.Create(locFac,TSDOSerializerStreamXML.Create())as ISDOSerializer).save(locDep,sdoExpandLocalFileName(FILE_NAME));
- {$ENDIF TEST_GENERATE_FILE}
-
- localFileName := sdoExpandLocalFileName(TestFilesPath + FILE_NAME);
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDOBaseDataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- locLoadedDep := s.load(localFileName);
- Check(TSDOEqualityHelper.equal(locDep, locLoadedDep),'Object');
- Compare(
- locDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- end;
- {$ENDIF HAS_SDO_CHAR}
- procedure TSDOSerializer_Test.load_from_file_changesummary_prop_list_date();
- const VAL_1 : TSDODate = ( Date : 0; HourOffset : 0; MinuteOffset : 0; );
- VAL_2 : TSDODate = ( Date : 0; HourOffset : 0; MinuteOffset : 0; );
- VAL_3 : TSDODate = ( Date : 0; HourOffset : 0; MinuteOffset : 0; );
- VAL_4 : TSDODate = ( Date : 0; HourOffset : 0; MinuteOffset : 0; );
- VAL_5 : TSDODate = ( Date : 0; HourOffset : 0; MinuteOffset : 0; );
- procedure SetConstants();
- var
- d : TSDODate;
- begin
- FillChar(d,SizeOf(TSDODate),#0);
- d.Date := EncodeDateTime(1976,10,12,23,34,45,56);
- d.HourOffset := 5;
- d.MinuteOffset := 6;
- PSDODate(@VAL_1)^ := d;
- FillChar(d,SizeOf(TSDODate),#0);
- d.Date := EncodeDateTime(2008,7,8,9,10,11,12);
- d.HourOffset := 0;
- d.MinuteOffset := 13;
- PSDODate(@VAL_3)^ := d;
- FillChar(d,SizeOf(TSDODate),#0);
- d.Date := EncodeDateTime(2009,9,1,2,3,0,1);
- d.HourOffset := 0;
- d.MinuteOffset := 13;
- PSDODate(@VAL_4)^ := d;
- FillChar(d,SizeOf(TSDODate),#0);
- d.Date := EncodeDateTime(1900,11,8,1,2,0,0);
- d.HourOffset := 0;
- d.MinuteOffset := 13;
- PSDODate(@VAL_5)^ := d;
- end;
- var
- locFac, tmpFactory : ISDODataFactory;
- locDep, locLoadedDep : ISDODataObject;
- ls : ISDODataObjectList;
- locCS : ISDOChangeSummary;
- f : ISDOSerializerStream;
- s : ISDOSerializer;
- localFileName : string;
- begin
- SetConstants();
- localFileName := sdoExpandLocalFileName('changesummary_prop_list_date.xml');
- locFac := TSDODataFactory.Create() as ISDODataFactory;
- locFac.AddType(s_uri,s_DepartmentType,[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_name,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_location,sdo_namespace,SDOTypeDefaultTypeNames[StringType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_birthDate,sdo_namespace,SDOTypeDefaultTypeNames[DateTimeType],[]);
- locFac.addProperty(s_uri,s_DepartmentType,s_list_date,sdo_namespace,SDOTypeDefaultTypeNames[DateTimeType],[pfIsMany]);
- locFac.addProperty(s_uri,s_DepartmentType,s_changeSummary,sdo_namespace,SDOTypeDefaultTypeNames[ChangeSummaryType],[pfIsReadOnly,pfIsNotNullable]);
- locDep := locFac.createNew(s_uri,s_DepartmentType);
- locDep.setString(s_name,'R & D');
- locDep.setString(s_location,'Ouaga, BF');
- locDep.setDate(s_birthDate,VAL_1);
- ls := locDep.getList(s_list_date);
- ls.append(VAL_1);
- ls.append(VAL_2);
- ls.append(VAL_3);
- locCS := locDep.getChangeSummary();
- locCS.beginLogging();
- locDep.setString(s_name,'R & D Department');
- locDep.setString(s_location,'Ouaga 01, BF');
- ls.setDate(0,VAL_4);
- ls.append(VAL_5);
- ls.append(VAL_1);
- ls.setDate(1,VAL_2);
- ls.delete(0);
- ls.delete(1);
- ls.insert(2, VAL_3);
- ls.append(VAL_4);
- localFileName := sdoExpandLocalFileName(TestFilesPath + 'changesummary_prop_list_date.xml');
- f := TSDOSerializerStreamXML.Create();
- tmpFactory := TSDOBaseDataFactory.Create();
- s := TSDOSerializer.Create(tmpFactory,f);
- locLoadedDep := s.load(localFileName);
- Check(TSDOEqualityHelper.equal(locDep, locLoadedDep),'Object');
- Compare(
- locDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx,
- locLoadedDep.getChangeSummary().getChangedDataObjects() as ISDOChangedDataObjectListEx
- );
- end;
- { TSDOSerializerXML_Test }
- class function TSDOSerializerXML_Test.CreateSerializerStream: ISDOSerializerStream;
- begin
- Result := TSDOSerializerStreamXML.Create();
- end;
- initialization
- RegisterTest('Helpers',TSDOSerializerXML_Test.Suite);
- RegisterTest('Helpers',TSDOSerializerBinary_Test.Suite);
- end.
|