tccompstreaming.pp 63 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943
  1. { Component streaming tests.
  2. Copyright (C) 2020 Michael Van Canneyt [email protected]
  3. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public
  4. License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version
  5. with the following modification:
  6. As a special exception, the copyright holders of this library give you permission to link this library with independent modules
  7. to produce an executable, regardless of the license terms of these independent modules,and to copy and distribute the resulting
  8. executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions
  9. of the license of that module. An independent module is a module which is not derived from or based on this library. If you
  10. modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do
  11. not wish to do so, delete this exception statement from your version.
  12. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.
  14. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free
  15. Software Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1335, USA.
  16. }
  17. Unit tccompstreaming;
  18. interface
  19. Uses
  20. SysUtils, Classes, tcstreaming, fpcunit, testregistry, testcomps;
  21. Type
  22. { TTestComponentStream }
  23. TTestComponentStream = Class(TTestStreaming)
  24. Published
  25. Procedure TestTEmptyComponent;
  26. Procedure TestTEmptyComponentText;
  27. Procedure TestTIntegerComponent;
  28. Procedure TestTIntegerComponentText;
  29. Procedure TestTIntegerComponent2;
  30. Procedure TestTIntegerComponent2Text;
  31. Procedure TestTIntegerComponent3;
  32. Procedure TestTIntegerComponent3Text;
  33. Procedure TestTIntegerComponent4;
  34. Procedure TestTIntegerComponent5;
  35. Procedure TestTInt64Component;
  36. Procedure TestTInt64ComponentText;
  37. Procedure TestTInt64Component2;
  38. Procedure TestTInt64Component2Text;
  39. Procedure TestTInt64Component3;
  40. Procedure TestTInt64Component3Text;
  41. Procedure TestTInt64Component4;
  42. Procedure TestTInt64Component4Text;
  43. Procedure TestTInt64Component5;
  44. Procedure TestTInt64Component6;
  45. Procedure TestTStringComponent;
  46. Procedure TestTStringComponentText;
  47. Procedure TestTStringComponent2;
  48. Procedure TestTStringComponent3;
  49. Procedure TestTStringComponent3Text;
  50. Procedure TestTWideStringComponent;
  51. Procedure TestTWideStringComponentText;
  52. Procedure TestTWideStringComponent2;
  53. Procedure TestTSingleComponent;
  54. Procedure TestTDoubleComponent;
  55. Procedure TestTDoubleComponentText;
  56. Procedure TestTExtendedComponent;
  57. // Procedure TestTCompComponent;
  58. Procedure TestTCurrencyComponent;
  59. procedure TestTCurrencyComponentText;
  60. Procedure TestTDateTimeComponent;
  61. Procedure TestTDateTimeComponent2;
  62. Procedure TestTDateTimeComponent3;
  63. Procedure TestTEnumComponent;
  64. Procedure TestTEnumComponentText;
  65. Procedure TestTEnumComponent2;
  66. Procedure TestTEnumComponent3;
  67. Procedure TestTEnumComponent4;
  68. Procedure TestTEnumComponent5;
  69. Procedure TestTSetComponent;
  70. Procedure TestTSetComponentText;
  71. Procedure TestTSetComponent2;
  72. Procedure TestTSetComponent3;
  73. Procedure TestTSetComponent4;
  74. Procedure TestTMultipleComponent;
  75. Procedure TestTMultipleComponentText;
  76. Procedure TestTPersistentComponent;
  77. Procedure TestTPersistentComponentText;
  78. Procedure TestTCollectionComponent;
  79. Procedure TestTCollectionComponentText;
  80. Procedure TestTCollectionComponent2;
  81. Procedure TestTCollectionComponent2Text;
  82. Procedure TestTCollectionComponent3;
  83. Procedure TestTCollectionComponent4;
  84. Procedure TestTCollectionComponent5;
  85. Procedure TestTOwnedComponent;
  86. Procedure TestTOwnedComponentText;
  87. Procedure TestTStreamedOwnedComponent;
  88. Procedure TestTStreamedOwnedComponentText;
  89. Procedure TestTStreamedOwnedComponents;
  90. Procedure TestTStreamedOwnedComponentsText;
  91. Procedure TestTMethodComponent;
  92. Procedure TestTMethodComponentText;
  93. Procedure TestTMethodComponent2;
  94. Procedure TestTMethodComponent2Text;
  95. // Read
  96. // ReadText will convert to text by calling text version, and read back after objecttexttobinary.
  97. Procedure TestTEmptyComponentRead;
  98. procedure TestTEmptyComponentReadText;
  99. Procedure TestTIntegerComponentRead;
  100. procedure TestTIntegerComponentReadText;
  101. Procedure TestTIntegerComponent2Read;
  102. Procedure TestTIntegerComponent2ReadText;
  103. Procedure TestTIntegerComponent3Read;
  104. Procedure TestTIntegerComponent3ReadText;
  105. Procedure TestTIntegerComponent4Read;
  106. Procedure TestTIntegerComponent5Read;
  107. Procedure TestTInt64ComponentRead;
  108. Procedure TestTInt64ComponentReadText;
  109. Procedure TestTInt64Component2Read;
  110. Procedure TestTInt64Component2ReadText;
  111. Procedure TestTInt64Component3Read;
  112. Procedure TestTInt64Component3ReadText;
  113. Procedure TestTInt64Component4Read;
  114. Procedure TestTInt64Component4ReadText;
  115. Procedure TestTInt64Component5Read;
  116. Procedure TestTInt64Component6Read;
  117. Procedure TestTStringComponentRead;
  118. Procedure TestTStringComponentReadText;
  119. Procedure TestTStringComponent2Read;
  120. Procedure TestTWideStringComponentRead;
  121. Procedure TestTWideStringComponentReadText;
  122. Procedure TestTWideStringComponent2Read;
  123. Procedure TestTSingleComponentRead;
  124. Procedure TestTDoubleComponentRead;
  125. Procedure TestTDoubleComponentReadText;
  126. Procedure TestTExtendedComponentRead;
  127. // Procedure TestTCompComponent;
  128. Procedure TestTCurrencyComponentRead;
  129. Procedure TestTDateTimeComponentRead;
  130. Procedure TestTDateTimeComponent2Read;
  131. Procedure TestTDateTimeComponent3Read;
  132. Procedure TestTEnumComponentRead;
  133. Procedure TestTEnumComponentReadText;
  134. Procedure TestTEnumComponent2Read;
  135. Procedure TestTEnumComponent3Read;
  136. Procedure TestTEnumComponent4Read;
  137. Procedure TestTEnumComponent5Read;
  138. Procedure TestTSetComponentRead;
  139. Procedure TestTSetComponentReadText;
  140. Procedure TestTSetComponent2Read;
  141. Procedure TestTSetComponent3Read;
  142. Procedure TestTSetComponent4Read;
  143. Procedure TestTMultipleComponentRead;
  144. Procedure TestTMultipleComponentReadText;
  145. Procedure TestTPersistentComponentRead;
  146. Procedure TestTPersistentComponentReadText;
  147. Procedure TestTCollectionComponentRead;
  148. Procedure TestTCollectionComponentReadText;
  149. Procedure TestTCollectionComponent2Read;
  150. Procedure TestTCollectionComponent2ReadText;
  151. Procedure TestTCollectionComponent3Read;
  152. Procedure TestTCollectionComponent4Read;
  153. Procedure TestTCollectionComponent5Read;
  154. Procedure TestTOwnedComponentRead;
  155. Procedure TestTOwnedComponentReadText;
  156. Procedure TestTStreamedOwnedComponentRead;
  157. Procedure TestTStreamedOwnedComponentReadText;
  158. Procedure TestTStreamedOwnedComponentsRead;
  159. Procedure TestTStreamedOwnedComponentsReadText;
  160. end;
  161. { TTestCollectionStream }
  162. TTestCollectionStream = Class(TTestCase)
  163. private
  164. procedure CompareColl(CA, CB: TMyColl);
  165. function CreateColl(Anr: Integer): TCollComp;
  166. function EmptyComp: TCollComp;
  167. procedure TestNr(ACount: Integer);
  168. Published
  169. procedure Test1;
  170. procedure Test2;
  171. procedure Test3;
  172. procedure TestClear;
  173. procedure TestEmpty;
  174. end;
  175. Implementation
  176. Const
  177. LE = sLineBreak;
  178. Procedure TTestComponentStream.TestTEmptyComponent;
  179. Var
  180. C : TComponent;
  181. begin
  182. C:=TEmptyComponent.Create(Nil);
  183. Try
  184. SaveToStream(C);
  185. ExpectSignature;
  186. ExpectFlags([],0);
  187. ExpectBareString('TEmptyComponent');
  188. ExpectBareString('TestTEmptyComponent');
  189. ExpectEndOfList;
  190. ExpectEndOfList;
  191. Finally
  192. C.Free;
  193. end;
  194. end;
  195. procedure TTestComponentStream.TestTEmptyComponentText;
  196. Const
  197. SData = 'object TestTEmptyComponent: TEmptyComponent'+sLineBreak+'end'+sLineBreak;
  198. begin
  199. TestTEmptyComponent;
  200. CheckAsString(sData);
  201. end;
  202. procedure TTestComponentStream.TestTEmptyComponentRead;
  203. Var
  204. C : TEmptyComponent;
  205. begin
  206. TestTEmptyComponent;
  207. C:=TEmptyComponent.Create(Nil);
  208. try
  209. LoadFromStream(C);
  210. AssertEquals('Name','TestTEmptyComponent',C.Name);
  211. finally
  212. C.Free;
  213. end;
  214. end;
  215. procedure TTestComponentStream.TestTEmptyComponentReadText;
  216. Var
  217. C : TEmptyComponent;
  218. begin
  219. TestTEmptyComponentText;
  220. C:=TEmptyComponent.Create(Nil);
  221. try
  222. LoadFromtextStream(C);
  223. AssertEquals('Name','TestTEmptyComponent',C.Name);
  224. finally
  225. C.Free;
  226. end;
  227. end;
  228. Procedure TTestComponentStream.TestTIntegerComponent;
  229. Var
  230. C : TComponent;
  231. begin
  232. C:=TIntegerComponent.Create(Nil);
  233. Try
  234. SaveToStream(C);
  235. ExpectSignature;
  236. ExpectFlags([],0);
  237. ExpectBareString('TIntegerComponent');
  238. ExpectBareString('TestTIntegerComponent');
  239. ExpectBareString('IntProp');
  240. ExpectInteger(3);
  241. ExpectEndOfList;
  242. ExpectEndOfList;
  243. Finally
  244. C.Free;
  245. end;
  246. end;
  247. procedure TTestComponentStream.TestTIntegerComponentText;
  248. Const
  249. SData =
  250. 'object TestTIntegerComponent: TIntegerComponent'+sLineBreak+
  251. ' IntProp = 3'+sLineBreak+
  252. 'end'+sLineBreak;
  253. begin
  254. TestTIntegerComponent;
  255. CheckAsString(sData);
  256. end;
  257. procedure TTestComponentStream.TestTIntegerComponentRead;
  258. Var
  259. C : TIntegerComponent;
  260. begin
  261. TestTIntegerComponent;
  262. C:=TIntegerComponent.Create(Nil);
  263. Try
  264. LoadFromStream(C);
  265. AssertEquals('Name','TestTIntegerComponent',C.Name);
  266. AssertEquals('IntProp',3,C.IntProp);
  267. Finally
  268. C.Free;
  269. end;
  270. end;
  271. procedure TTestComponentStream.TestTIntegerComponentReadText;
  272. Var
  273. C : TIntegerComponent;
  274. begin
  275. TestTIntegerComponentText;
  276. C:=TIntegerComponent.Create(Nil);
  277. Try
  278. LoadFromTextStream(C);
  279. AssertEquals('Name','TestTIntegerComponent',C.Name);
  280. AssertEquals('IntProp',3,C.IntProp);
  281. Finally
  282. C.Free;
  283. end;
  284. end;
  285. procedure TTestComponentStream.TestTIntegerComponent2Read;
  286. Var
  287. C : TIntegerComponent2;
  288. begin
  289. TestTIntegerComponent2;
  290. C:=TIntegerComponent2.Create(Nil);
  291. Try
  292. LoadFromStream(C);
  293. AssertEquals('Name','TestTIntegerComponent2',C.Name);
  294. AssertEquals('IntProp',1024,C.IntProp);
  295. Finally
  296. C.Free;
  297. end;
  298. end;
  299. procedure TTestComponentStream.TestTIntegerComponent2ReadText;
  300. Var
  301. C : TIntegerComponent2;
  302. begin
  303. TestTIntegerComponent2Text;
  304. C:=TIntegerComponent2.Create(Nil);
  305. Try
  306. LoadFromTextStream(C);
  307. AssertEquals('Name','TestTIntegerComponent2',C.Name);
  308. AssertEquals('IntProp',1024,C.IntProp);
  309. Finally
  310. C.Free;
  311. end;
  312. end;
  313. procedure TTestComponentStream.TestTIntegerComponent3Read;
  314. Var
  315. C : TIntegerComponent3;
  316. begin
  317. TestTIntegerComponent3;
  318. C:=TIntegerComponent3.Create(Nil);
  319. Try
  320. LoadFromStream(C);
  321. AssertEquals('Name','TestTIntegerComponent3',C.Name);
  322. AssertEquals('IntProp',262144,C.IntProp);
  323. Finally
  324. C.Free;
  325. end;
  326. end;
  327. procedure TTestComponentStream.TestTIntegerComponent3ReadText;
  328. Var
  329. C : TIntegerComponent3;
  330. begin
  331. TestTIntegerComponent3Text;
  332. C:=TIntegerComponent3.Create(Nil);
  333. Try
  334. LoadFromTextStream(C);
  335. AssertEquals('Name','TestTIntegerComponent3',C.Name);
  336. AssertEquals('IntProp',262144,C.IntProp);
  337. Finally
  338. C.Free;
  339. end;
  340. end;
  341. procedure TTestComponentStream.TestTIntegerComponent4Read;
  342. Var
  343. C : TIntegerComponent4;
  344. begin
  345. TestTIntegerComponent4;
  346. C:=TIntegerComponent4.Create(Nil);
  347. Try
  348. LoadFromStream(C);
  349. AssertEquals('Name','TestTIntegerComponent4',C.Name);
  350. AssertEquals('IntProp',6,C.IntProp);
  351. Finally
  352. C.Free;
  353. end;
  354. end;
  355. procedure TTestComponentStream.TestTIntegerComponent5Read;
  356. Var
  357. C : TIntegerComponent5;
  358. begin
  359. TestTIntegerComponent5;
  360. C:=TIntegerComponent5.Create(Nil);
  361. Try
  362. LoadFromStream(C);
  363. AssertEquals('Name','TestTIntegerComponent5',C.Name);
  364. AssertEquals('IntProp',5,C.IntProp);
  365. Finally
  366. C.Free;
  367. end;
  368. end;
  369. procedure TTestComponentStream.TestTInt64ComponentRead;
  370. Var
  371. C : TInt64Component;
  372. begin
  373. TestTInt64Component;
  374. C:=TInt64Component.Create(Nil);
  375. Try
  376. C.Int64Prop:=0;
  377. LoadFromStream(C);
  378. AssertEquals('Name','TestTInt64Component',C.Name);
  379. AssertEquals('Int64Prop',4,C.Int64Prop);
  380. Finally
  381. C.Free;
  382. end;
  383. end;
  384. procedure TTestComponentStream.TestTInt64ComponentReadText;
  385. Var
  386. C : TInt64Component;
  387. begin
  388. TestTInt64ComponentText;
  389. C:=TInt64Component.Create(Nil);
  390. Try
  391. C.Int64Prop:=0;
  392. LoadFromTextStream(C);
  393. AssertEquals('Name','TestTInt64Component',C.Name);
  394. AssertEquals('Int64Prop',4,C.Int64Prop);
  395. Finally
  396. C.Free;
  397. end;
  398. end;
  399. procedure TTestComponentStream.TestTInt64Component2Read;
  400. Var
  401. C : TInt64Component2;
  402. begin
  403. TestTInt64Component2;
  404. C:=TInt64Component2.Create(Nil);
  405. Try
  406. C.Int64Prop:=0;
  407. LoadFromStream(C);
  408. AssertEquals('Name','TestTInt64Component2',C.Name);
  409. AssertEquals('Int64Prop',2 shl 9,C.Int64Prop);
  410. Finally
  411. C.Free;
  412. end;
  413. end;
  414. procedure TTestComponentStream.TestTInt64Component2ReadText;
  415. Var
  416. C : TInt64Component2;
  417. begin
  418. TestTInt64Component2Text;
  419. C:=TInt64Component2.Create(Nil);
  420. Try
  421. C.Int64Prop:=0;
  422. LoadFromTextStream(C);
  423. AssertEquals('Name','TestTInt64Component2',C.Name);
  424. AssertEquals('Int64Prop',2 shl 9,C.Int64Prop);
  425. Finally
  426. C.Free;
  427. end;
  428. end;
  429. procedure TTestComponentStream.TestTInt64Component3Read;
  430. Var
  431. C : TInt64Component3;
  432. begin
  433. TestTInt64Component3;
  434. C:=TInt64Component3.Create(Nil);
  435. Try
  436. C.Int64Prop:=0;
  437. LoadFromStream(C);
  438. AssertEquals('Name','TestTInt64Component3',C.Name);
  439. AssertEquals('Int64Prop',2 shl 17,C.Int64Prop);
  440. Finally
  441. C.Free;
  442. end;
  443. end;
  444. procedure TTestComponentStream.TestTInt64Component3ReadText;
  445. Var
  446. C : TInt64Component3;
  447. begin
  448. TestTInt64Component3Text;
  449. C:=TInt64Component3.Create(Nil);
  450. Try
  451. C.Int64Prop:=0;
  452. LoadFromTextStream(C);
  453. AssertEquals('Name','TestTInt64Component3',C.Name);
  454. AssertEquals('Int64Prop',2 shl 17,C.Int64Prop);
  455. Finally
  456. C.Free;
  457. end;
  458. end;
  459. procedure TTestComponentStream.TestTInt64Component4Read;
  460. Var
  461. C : TInt64Component4;
  462. begin
  463. TestTInt64Component4;
  464. C:=TInt64Component4.Create(Nil);
  465. Try
  466. C.Int64Prop:=0;
  467. LoadFromStream(C);
  468. AssertEquals('Name','TestTInt64Component4',C.Name);
  469. AssertEquals('Int64Prop',NativeInt(MaxInt)+NativeInt(2 shl 14),C.Int64Prop);
  470. Finally
  471. C.Free;
  472. end;
  473. end;
  474. procedure TTestComponentStream.TestTInt64Component4ReadText;
  475. Var
  476. C : TInt64Component4;
  477. begin
  478. TestTInt64Component4Text;
  479. C:=TInt64Component4.Create(Nil);
  480. Try
  481. C.Int64Prop:=0;
  482. LoadFromTextStream(C);
  483. AssertEquals('Name','TestTInt64Component4',C.Name);
  484. AssertEquals('Int64Prop',NativeInt(MaxInt)+NativeInt(2 shl 14),C.Int64Prop);
  485. Finally
  486. C.Free;
  487. end;
  488. end;
  489. procedure TTestComponentStream.TestTInt64Component5Read;
  490. Var
  491. C : TInt64Component5;
  492. begin
  493. TestTInt64Component5;
  494. C:=TInt64Component5.Create(Nil);
  495. Try
  496. C.Int64Prop:=0;
  497. LoadFromStream(C);
  498. AssertEquals('Name','TestTInt64Component5',C.Name);
  499. // Not written, so zero remains
  500. AssertEquals('Int64Prop',0,C.Int64Prop);
  501. Finally
  502. C.Free;
  503. end;
  504. end;
  505. procedure TTestComponentStream.TestTInt64Component6Read;
  506. Var
  507. C : TInt64Component6;
  508. begin
  509. TestTInt64Component6;
  510. C:=TInt64Component6.Create(Nil);
  511. Try
  512. C.Int64Prop:=0;
  513. LoadFromStream(C);
  514. AssertEquals('Name','TestTInt64Component6',C.Name);
  515. AssertEquals('Int64Prop',8,C.Int64Prop);
  516. Finally
  517. C.Free;
  518. end;
  519. end;
  520. procedure TTestComponentStream.TestTStringComponentRead;
  521. Var
  522. C : TStringComponent;
  523. begin
  524. TestTStringComponent;
  525. C:=TStringComponent.Create(Nil);
  526. Try
  527. C.StringProp:='';
  528. LoadFromStream(C);
  529. AssertEquals('Name','TestTStringComponent',C.Name);
  530. AssertEquals('StringProp','A string',C.StringProp);
  531. Finally
  532. C.Free;
  533. end;
  534. end;
  535. procedure TTestComponentStream.TestTStringComponentReadText;
  536. Var
  537. C : TStringComponent;
  538. begin
  539. TestTStringComponentText;
  540. C:=TStringComponent.Create(Nil);
  541. Try
  542. C.StringProp:='';
  543. LoadFromTextStream(C);
  544. AssertEquals('Name','TestTStringComponent',C.Name);
  545. AssertEquals('StringProp','A string',C.StringProp);
  546. Finally
  547. C.Free;
  548. end;
  549. end;
  550. procedure TTestComponentStream.TestTStringComponent2Read;
  551. Var
  552. C : TStringComponent2;
  553. begin
  554. TestTStringComponent2;
  555. C:=TStringComponent2.Create(Nil);
  556. Try
  557. C.StringProp:='abc';
  558. LoadFromStream(C);
  559. AssertEquals('Name','TestTStringComponent2',C.Name);
  560. AssertEquals('StringProp','abc',C.StringProp);
  561. Finally
  562. C.Free;
  563. end;
  564. end;
  565. procedure TTestComponentStream.TestTWideStringComponentRead;
  566. Var
  567. C : TWideStringComponent;
  568. begin
  569. TestTWideStringComponent;
  570. C:=TWideStringComponent.Create(Nil);
  571. Try
  572. C.WideStringProp:='abc';
  573. LoadFromStream(C);
  574. AssertEquals('Name','TestTWideStringComponent',C.Name);
  575. AssertEquals('WideStringProp','Some WideString',C.WideStringProp);
  576. Finally
  577. C.Free;
  578. end;
  579. end;
  580. procedure TTestComponentStream.TestTWideStringComponentReadText;
  581. Var
  582. C : TWideStringComponent;
  583. begin
  584. TestTWideStringComponentText;
  585. C:=TWideStringComponent.Create(Nil);
  586. Try
  587. C.WideStringProp:='abc';
  588. LoadFromTextStream(C);
  589. AssertEquals('Name','TestTWideStringComponent',C.Name);
  590. AssertEquals('WideStringProp','Some WideString',C.WideStringProp);
  591. Finally
  592. C.Free;
  593. end;
  594. end;
  595. procedure TTestComponentStream.TestTWideStringComponent2Read;
  596. Var
  597. C : TWideStringComponent2;
  598. begin
  599. TestTWideStringComponent2;
  600. C:=TWideStringComponent2.Create(Nil);
  601. Try
  602. C.WideStringProp:='abc';
  603. LoadFromStream(C);
  604. AssertEquals('Name','TestTWideStringComponent2',C.Name);
  605. AssertEquals('WideStringProp','abc',C.WideStringProp);
  606. Finally
  607. C.Free;
  608. end;
  609. end;
  610. procedure TTestComponentStream.TestTSingleComponentRead;
  611. Var
  612. C : TSingleComponent;
  613. begin
  614. TestTSingleComponent;
  615. C:=TSingleComponent.Create(Nil);
  616. Try
  617. C.SingleProp:=0;
  618. LoadFromStream(C);
  619. AssertEquals('Name','TestTSingleComponent',C.Name);
  620. AssertEquals('SingleProp',1.23,C.SingleProp,0.01);
  621. Finally
  622. C.Free;
  623. end;
  624. end;
  625. procedure TTestComponentStream.TestTDoubleComponentRead;
  626. Var
  627. C : TDoubleComponent;
  628. begin
  629. TestTDoubleComponent;
  630. C:=TDoubleComponent.Create(Nil);
  631. Try
  632. C.DoubleProp:=0;
  633. LoadFromStream(C);
  634. AssertEquals('Name','TestTDoubleComponent',C.Name);
  635. AssertEquals('DoubleProp',2.34,C.DoubleProp,0.01);
  636. Finally
  637. C.Free;
  638. end;
  639. end;
  640. procedure TTestComponentStream.TestTDoubleComponentReadText;
  641. Var
  642. C : TDoubleComponent;
  643. begin
  644. TestTDoubleComponentText;
  645. C:=TDoubleComponent.Create(Nil);
  646. Try
  647. C.DoubleProp:=0;
  648. LoadFromTextStream(C);
  649. AssertEquals('Name','TestTDoubleComponent',C.Name);
  650. // TODO: extend precision to 0.1
  651. AssertEquals('DoubleProp',2.34,C.DoubleProp,0.1);
  652. Finally
  653. C.Free;
  654. end;
  655. end;
  656. procedure TTestComponentStream.TestTExtendedComponentRead;
  657. Var
  658. C : TExtendedComponent;
  659. begin
  660. TestTExtendedComponent;
  661. C:=TExtendedComponent.Create(Nil);
  662. Try
  663. C.ExtendedProp:=0;
  664. LoadFromStream(C);
  665. AssertEquals('Name','TestTExtendedComponent',C.Name);
  666. AssertEquals('ExtendedProp',3.45,C.ExtendedProp,0.01);
  667. Finally
  668. C.Free;
  669. end;
  670. end;
  671. procedure TTestComponentStream.TestTCurrencyComponentRead;
  672. Var
  673. C : TCurrencyComponent;
  674. begin
  675. TestTCurrencyComponent;
  676. C:=TCurrencyComponent.Create(Nil);
  677. Try
  678. C.CurrencyProp:=0;
  679. LoadFromStream(C);
  680. AssertEquals('Name','TestTCurrencyComponent',C.Name);
  681. AssertEquals('CurrencyProp',5.67,C.CurrencyProp,0.01);
  682. Finally
  683. C.Free;
  684. end;
  685. end;
  686. procedure TTestComponentStream.TestTDateTimeComponentRead;
  687. Var
  688. C : TDateTimeComponent;
  689. begin
  690. TestTDateTimeComponent;
  691. C:=TDateTimeComponent.Create(Nil);
  692. Try
  693. C.DateTimeProp:=0;
  694. LoadFromStream(C);
  695. AssertEquals('Name','TestTDateTimeComponent',C.Name);
  696. AssertEquals('DateTimeProp',35278.00,C.DateTimeProp,0.01);
  697. Finally
  698. C.Free;
  699. end;
  700. end;
  701. procedure TTestComponentStream.TestTDateTimeComponent2Read;
  702. Var
  703. C : TDateTimeComponent2;
  704. begin
  705. TestTDateTimeComponent2;
  706. C:=TDateTimeComponent2.Create(Nil);
  707. Try
  708. C.DateTimeProp:=0;
  709. LoadFromStream(C);
  710. AssertEquals('Name','TestTDateTimeComponent2',C.Name);
  711. AssertEquals('DateTimeProp',0.97,C.DateTimeProp,0.01);
  712. Finally
  713. C.Free;
  714. end;
  715. end;
  716. procedure TTestComponentStream.TestTDateTimeComponent3Read;
  717. Var
  718. C : TDateTimeComponent3;
  719. begin
  720. TestTDateTimeComponent3;
  721. C:=TDateTimeComponent3.Create(Nil);
  722. Try
  723. C.DateTimeProp:=0;
  724. LoadFromStream(C);
  725. AssertEquals('Name','TestTDateTimeComponent3',C.Name);
  726. AssertEquals('DateTimeProp',35278.97,C.DateTimeProp,0.01);
  727. Finally
  728. C.Free;
  729. end;
  730. end;
  731. procedure TTestComponentStream.TestTEnumComponentRead;
  732. Var
  733. C : TEnumComponent;
  734. begin
  735. TestTEnumComponent;
  736. C:=TEnumComponent.Create(Nil);
  737. Try
  738. C.Dice:=One;
  739. LoadFromStream(C);
  740. AssertEquals('Name','TestTEnumComponent',C.Name);
  741. AssertTrue('Dice',four=C.Dice);
  742. Finally
  743. C.Free;
  744. end;
  745. end;
  746. procedure TTestComponentStream.TestTEnumComponentReadText;
  747. Var
  748. C : TEnumComponent;
  749. begin
  750. TestTEnumComponentText;
  751. C:=TEnumComponent.Create(Nil);
  752. Try
  753. C.Dice:=One;
  754. LoadFromTextStream(C);
  755. AssertEquals('Name','TestTEnumComponent',C.Name);
  756. AssertTrue('Dice',four=C.Dice);
  757. Finally
  758. C.Free;
  759. end;
  760. end;
  761. procedure TTestComponentStream.TestTEnumComponent2Read;
  762. Var
  763. C : TEnumComponent2;
  764. begin
  765. TestTEnumComponent2;
  766. C:=TEnumComponent2.Create(Nil);
  767. Try
  768. C.Dice:=Three;
  769. LoadFromStream(C);
  770. AssertEquals('Name','TestTEnumComponent2',C.Name);
  771. // Stream does a value
  772. AssertTrue('Dice',One=C.Dice);
  773. Finally
  774. C.Free;
  775. end;
  776. end;
  777. procedure TTestComponentStream.TestTEnumComponent3Read;
  778. Var
  779. C : TEnumComponent3;
  780. begin
  781. TestTEnumComponent3;
  782. C:=TEnumComponent3.Create(Nil);
  783. Try
  784. LoadFromStream(C);
  785. AssertEquals('Name','TestTEnumComponent3',C.Name);
  786. // Stream does not contain a value
  787. AssertTrue('Dice',Three=C.Dice);
  788. Finally
  789. C.Free;
  790. end;
  791. end;
  792. procedure TTestComponentStream.TestTEnumComponent4Read;
  793. Var
  794. C : TEnumComponent4;
  795. begin
  796. TestTEnumComponent4;
  797. C:=TEnumComponent4.Create(Nil);
  798. Try
  799. C.Dice:=six;
  800. LoadFromStream(C);
  801. AssertEquals('Name','TestTEnumComponent4',C.Name);
  802. // Stream does not contain a value
  803. AssertTrue('Dice',Six=C.Dice);
  804. Finally
  805. C.Free;
  806. end;
  807. end;
  808. procedure TTestComponentStream.TestTEnumComponent5Read;
  809. Var
  810. C : TEnumComponent5;
  811. begin
  812. TestTEnumComponent5;
  813. C:=TEnumComponent5.Create(Nil);
  814. Try
  815. C.Dice:=six;
  816. LoadFromStream(C);
  817. AssertEquals('Name','TestTEnumComponent5',C.Name);
  818. // Stream does not contain a value
  819. AssertTrue('Dice',Six=C.Dice);
  820. Finally
  821. C.Free;
  822. end;
  823. end;
  824. procedure TTestComponentStream.TestTSetComponentRead;
  825. Var
  826. C : TSetComponent;
  827. begin
  828. TestTSetComponent;
  829. C:=TSetComponent.Create(Nil);
  830. Try
  831. C.Throw:=[];
  832. LoadFromStream(C);
  833. AssertEquals('Name','TestTSetComponent',C.Name);
  834. AssertTrue('Throw',[two,five]=C.Throw);
  835. Finally
  836. C.Free;
  837. end;
  838. end;
  839. procedure TTestComponentStream.TestTSetComponentReadText;
  840. Var
  841. C : TSetComponent;
  842. begin
  843. TestTSetComponentText;
  844. C:=TSetComponent.Create(Nil);
  845. Try
  846. C.Throw:=[];
  847. LoadFromTextStream(C);
  848. AssertEquals('Name','TestTSetComponent',C.Name);
  849. AssertTrue('Throw',[two,five]=C.Throw);
  850. Finally
  851. C.Free;
  852. end;
  853. end;
  854. procedure TTestComponentStream.TestTSetComponent2Read;
  855. Var
  856. C : TSetComponent2;
  857. begin
  858. TestTSetComponent2;
  859. C:=TSetComponent2.Create(Nil);
  860. Try
  861. C.Throw:=[one,six];
  862. LoadFromStream(C);
  863. AssertEquals('Name','TestTSetComponent2',C.Name);
  864. // Nothing was streamed
  865. AssertTrue('Throw',[one,six]=C.Throw);
  866. Finally
  867. C.Free;
  868. end;
  869. end;
  870. procedure TTestComponentStream.TestTSetComponent3Read;
  871. Var
  872. C : TSetComponent3;
  873. begin
  874. TestTSetComponent3;
  875. C:=TSetComponent3.Create(Nil);
  876. Try
  877. C.Throw:=[two,six];
  878. LoadFromStream(C);
  879. AssertEquals('Name','TestTSetComponent3',C.Name);
  880. // Nothing was streamed
  881. AssertTrue('Throw',[one,four]=C.Throw);
  882. Finally
  883. C.Free;
  884. end;
  885. end;
  886. procedure TTestComponentStream.TestTSetComponent4Read;
  887. Var
  888. C : TSetComponent4;
  889. begin
  890. TestTSetComponent4;
  891. C:=TSetComponent4.Create(Nil);
  892. Try
  893. C.Throw:=[two,six];
  894. LoadFromStream(C);
  895. AssertEquals('Name','TestTSetComponent4',C.Name);
  896. // Nothing was streamed
  897. AssertTrue('Throw',[two,six]=C.Throw);
  898. Finally
  899. C.Free;
  900. end;
  901. end;
  902. procedure TTestComponentStream.TestTMultipleComponentRead;
  903. Var
  904. C : TMultipleComponent;
  905. begin
  906. TestTMultipleComponent;
  907. C:=TMultipleComponent.Create(Nil);
  908. Try
  909. c.IntProp:=23;
  910. C.Dice:=six;
  911. C.CurrencyProp:=12.3;
  912. C.StringProp:='abc';
  913. LoadFromStream(C);
  914. AssertEquals('Name','TestTMultipleComponent',C.Name);
  915. AssertEquals('IntProp',1,C.IntProp);
  916. AssertEquals('StringProp','A String',C.StringProp);
  917. AssertEquals('CurrencyProp',2.3,C.CurrencyProp,0.1);
  918. AssertTrue('Dice',two=C.Dice);
  919. AssertTrue('Throw',[three,four]=C.Throw);
  920. Finally
  921. C.Free;
  922. end;
  923. end;
  924. procedure TTestComponentStream.TestTMultipleComponentReadText;
  925. Var
  926. C : TMultipleComponent;
  927. begin
  928. TestTMultipleComponentText;
  929. C:=TMultipleComponent.Create(Nil);
  930. Try
  931. c.IntProp:=23;
  932. C.Dice:=six;
  933. C.CurrencyProp:=12.3;
  934. C.StringProp:='abc';
  935. LoadFromTextStream(C);
  936. AssertEquals('Name','TestTMultipleComponent',C.Name);
  937. AssertEquals('IntProp',1,C.IntProp);
  938. AssertEquals('StringProp','A String',C.StringProp);
  939. AssertEquals('CurrencyProp',2.3,C.CurrencyProp,0.1);
  940. AssertTrue('Dice',two=C.Dice);
  941. AssertTrue('Throw',[three,four]=C.Throw);
  942. Finally
  943. C.Free;
  944. end;
  945. end;
  946. procedure TTestComponentStream.TestTPersistentComponentRead;
  947. Var
  948. C : TPersistentComponent;
  949. begin
  950. TestTPersistentComponent;
  951. C:=TPersistentComponent.Create(Nil);
  952. Try
  953. C.Persist.AInteger:=36;
  954. C.Persist.AString:='nono';
  955. LoadFromStream(C);
  956. AssertEquals('Name','TestTPersistentComponent',C.Name);
  957. AssertEquals('Persist.AInteger',3,C.Persist.AInteger);
  958. AssertEquals('Persist.AString','A persistent string',C.Persist.AString);
  959. Finally
  960. C.Free;
  961. end;
  962. end;
  963. procedure TTestComponentStream.TestTPersistentComponentReadText;
  964. Var
  965. C : TPersistentComponent;
  966. begin
  967. TestTPersistentComponentText;
  968. C:=TPersistentComponent.Create(Nil);
  969. Try
  970. C.Persist.AInteger:=36;
  971. C.Persist.AString:='nono';
  972. LoadFromTextStream(C);
  973. AssertEquals('Name','TestTPersistentComponent',C.Name);
  974. AssertEquals('Persist.AInteger',3,C.Persist.AInteger);
  975. AssertEquals('Persist.AString','A persistent string',C.Persist.AString);
  976. Finally
  977. C.Free;
  978. end;
  979. end;
  980. procedure TTestComponentStream.TestTCollectionComponentRead;
  981. Var
  982. C : TCollectionComponent;
  983. begin
  984. TestTCollectionComponent;
  985. C:=TCollectionComponent.Create(Nil);
  986. Try
  987. C.Coll.Add;
  988. LoadFromStream(C);
  989. AssertEquals('Name','TestTCollectionComponent',C.Name);
  990. // If the stream does not have a collection, it does not get cleared
  991. AssertEquals('Coll count',1,C.Coll.Count);
  992. Finally
  993. C.Free;
  994. end;
  995. end;
  996. procedure TTestComponentStream.TestTCollectionComponentReadText;
  997. Var
  998. C : TCollectionComponent;
  999. begin
  1000. TestTCollectionComponentText;
  1001. C:=TCollectionComponent.Create(Nil);
  1002. Try
  1003. C.Coll.Add;
  1004. LoadFromTextStream(C);
  1005. AssertEquals('Name','TestTCollectionComponent',C.Name);
  1006. // If the stream does not have a collection, it does not get cleared
  1007. AssertEquals('Coll count',1,C.Coll.Count);
  1008. Finally
  1009. C.Free;
  1010. end;
  1011. end;
  1012. procedure TTestComponentStream.TestTCollectionComponent2Read;
  1013. Var
  1014. C : TCollectionComponent2;
  1015. begin
  1016. TestTCollectionComponent2;
  1017. C:=TCollectionComponent2.Create(Nil);
  1018. Try
  1019. C.Coll.Add;
  1020. LoadFromStream(C);
  1021. AssertEquals('Name','TestTCollectionComponent2',C.Name);
  1022. AssertEquals('Coll count',3,C.Coll.Count);
  1023. AssertEquals('Correct class type',TTestItem,C.Coll.Items[0].ClassType);
  1024. AssertEquals('Coll 0 Property','First',TTestItem(C.Coll.items[0]).StrProp);
  1025. AssertEquals('Coll 1 Property','Second',TTestItem(C.Coll.Items[1]).StrProp);
  1026. AssertEquals('Coll 2 Property','Third',TTestItem(C.Coll.Items[2]).StrProp);
  1027. Finally
  1028. C.Free;
  1029. end;
  1030. end;
  1031. procedure TTestComponentStream.TestTCollectionComponent2ReadText;
  1032. Var
  1033. C : TCollectionComponent2;
  1034. begin
  1035. TestTCollectionComponent2Text;
  1036. C:=TCollectionComponent2.Create(Nil);
  1037. Try
  1038. C.Coll.Add;
  1039. LoadFromTextStream(C);
  1040. AssertEquals('Name','TestTCollectionComponent2',C.Name);
  1041. AssertEquals('Coll count',3,C.Coll.Count);
  1042. AssertEquals('Correct class type',TTestItem,C.Coll.Items[0].ClassType);
  1043. AssertEquals('Coll 0 Property','First',TTestItem(C.Coll.items[0]).StrProp);
  1044. AssertEquals('Coll 1 Property','Second',TTestItem(C.Coll.Items[1]).StrProp);
  1045. AssertEquals('Coll 2 Property','Third',TTestItem(C.Coll.Items[2]).StrProp);
  1046. Finally
  1047. C.Free;
  1048. end;
  1049. end;
  1050. procedure TTestComponentStream.TestTCollectionComponent3Read;
  1051. Var
  1052. C : TCollectionComponent3;
  1053. begin
  1054. TestTCollectionComponent3;
  1055. C:=TCollectionComponent3.Create(Nil);
  1056. Try
  1057. C.Coll.Add;
  1058. LoadFromStream(C);
  1059. AssertEquals('Name','TestTCollectionComponent3',C.Name);
  1060. AssertEquals('Coll count',3,C.Coll.Count);
  1061. AssertEquals('Correct class type',TTestItem,C.Coll.Items[0].ClassType);
  1062. AssertEquals('Coll 0 Property','First',TTestItem(C.Coll.items[0]).StrProp);
  1063. AssertEquals('Coll 1 Property','',TTestItem(C.Coll.Items[1]).StrProp);
  1064. AssertEquals('Coll 2 Property','Third',TTestItem(C.Coll.Items[2]).StrProp);
  1065. Finally
  1066. C.Free;
  1067. end;
  1068. end;
  1069. procedure TTestComponentStream.TestTCollectionComponent4Read;
  1070. Var
  1071. C : TCollectionComponent4;
  1072. begin
  1073. TestTCollectionComponent4;
  1074. C:=TCollectionComponent4.Create(Nil);
  1075. Try
  1076. C.Coll.Add;
  1077. LoadFromStream(C);
  1078. AssertEquals('Name','TestTCollectionComponent4',C.Name);
  1079. AssertEquals('Coll count',1,C.Coll.Count);
  1080. AssertEquals('Correct class type',TTestItem,C.Coll.Items[0].ClassType);
  1081. AssertEquals('Coll 0 Property','Something',TTestItem(C.Coll.items[0]).StrProp);
  1082. Finally
  1083. C.Free;
  1084. end;
  1085. end;
  1086. procedure TTestComponentStream.TestTCollectionComponent5Read;
  1087. Var
  1088. C : TCollectionComponent5;
  1089. begin
  1090. TestTCollectionComponent5;
  1091. C:=TCollectionComponent5.Create(Nil);
  1092. Try
  1093. C.Coll.Add;
  1094. LoadFromStream(C);
  1095. AssertEquals('Name','TestTCollectionComponent5',C.Name);
  1096. AssertEquals('Coll count',2,C.Coll.Count);
  1097. AssertEquals('Correct class type',TTest2Item,C.Coll.Items[0].ClassType);
  1098. AssertEquals('Coll 0 Property 1','Something',TTest2Item(C.Coll.items[0]).StrProp1);
  1099. AssertEquals('Coll 0 Property 2','Otherthing',TTest2Item(C.Coll.items[0]).StrProp2);
  1100. AssertEquals('Coll 1 property 1','Something 2',TTest2Item(C.Coll.items[1]).StrProp1);
  1101. AssertEquals('Coll 1 property 2','Otherthing 2',TTest2Item(C.Coll.items[1]).StrProp2);
  1102. Finally
  1103. C.Free;
  1104. end;
  1105. end;
  1106. procedure TTestComponentStream.TestTOwnedComponentRead;
  1107. Var
  1108. C : TOwnedComponent;
  1109. C2 : TComponent;
  1110. begin
  1111. TestTOwnedComponent;
  1112. C:=TOwnedComponent.Create(Nil);
  1113. try
  1114. C2:=C.CompProp;
  1115. C.CompProp:=nil;
  1116. LoadFromStream(C);
  1117. AssertEquals('Name','TestTOwnedComponent',C.Name);
  1118. AssertEquals('ComponentCount',1,C.ComponentCount);
  1119. AssertSame('ComponentCount',C2,C.CompProp);
  1120. finally
  1121. C.Free;
  1122. end;
  1123. end;
  1124. procedure TTestComponentStream.TestTOwnedComponentReadText;
  1125. Var
  1126. C : TOwnedComponent;
  1127. C2 : TComponent;
  1128. begin
  1129. TestTOwnedComponentText;
  1130. C:=TOwnedComponent.Create(Nil);
  1131. try
  1132. C2:=C.CompProp;
  1133. C.CompProp:=nil;
  1134. LoadFromTextStream(C);
  1135. AssertEquals('Name','TestTOwnedComponent',C.Name);
  1136. AssertEquals('ComponentCount',1,C.ComponentCount);
  1137. AssertSame('ComponentCount',C2,C.CompProp);
  1138. finally
  1139. C.Free;
  1140. end;
  1141. end;
  1142. procedure TTestComponentStream.TestTStreamedOwnedComponentRead;
  1143. Var
  1144. C : TStreamedOwnedComponent;
  1145. begin
  1146. TestTStreamedOwnedComponent;
  1147. C:=TStreamedOwnedComponent.Create(Nil);
  1148. Try
  1149. C.Sub.Free;
  1150. C.Sub:=Nil;
  1151. LoadFromStream(C);
  1152. AssertEquals('Name','TestTStreamedOwnedComponent',C.Name);
  1153. AssertNotNull('Have sub',C.Sub);
  1154. AssertEquals('Correct class',TIntegerComponent,C.Sub.ClassType);
  1155. AssertEquals('Name','Sub',C.Sub.Name);
  1156. AssertEquals('Name',3,C.Sub.IntProp);
  1157. Finally
  1158. C.Free;
  1159. end;
  1160. end;
  1161. procedure TTestComponentStream.TestTStreamedOwnedComponentReadText;
  1162. Var
  1163. C : TStreamedOwnedComponent;
  1164. begin
  1165. TestTStreamedOwnedComponentText;
  1166. C:=TStreamedOwnedComponent.Create(Nil);
  1167. Try
  1168. C.Sub.Free;
  1169. C.Sub:=Nil;
  1170. LoadFromTextStream(C);
  1171. AssertEquals('Name','TestTStreamedOwnedComponent',C.Name);
  1172. AssertNotNull('Have sub',C.Sub);
  1173. AssertEquals('Correct class',TIntegerComponent,C.Sub.ClassType);
  1174. AssertEquals('Name','Sub',C.Sub.Name);
  1175. AssertEquals('Name',3,C.Sub.IntProp);
  1176. Finally
  1177. C.Free;
  1178. end;
  1179. end;
  1180. procedure TTestComponentStream.TestTStreamedOwnedComponentsRead;
  1181. Var
  1182. C : TStreamedOwnedComponents;
  1183. begin
  1184. TestTStreamedOwnedComponents;
  1185. C:=TStreamedOwnedComponents.Create(Nil);
  1186. Try
  1187. C.SubA.Free;
  1188. C.SubA:=Nil;
  1189. C.SubB.Free;
  1190. C.SubB:=Nil;
  1191. LoadFromStream(C);
  1192. AssertEquals('Name','TestTStreamedOwnedComponents',C.Name);
  1193. AssertNotNull('Have sub A',C.SubA);
  1194. AssertEquals('Correct sub A class',TIntegerComponent,C.SubA.ClassType);
  1195. AssertEquals('Name','SubA',C.SubA.Name);
  1196. AssertEquals('Name',3,C.SubA.IntProp);
  1197. AssertNotNull('Have sub B',C.SubB);
  1198. AssertEquals('Correct sub B class',TStringComponent,C.SubB.ClassType);
  1199. AssertEquals('Name','SubB',C.SubB.Name);
  1200. AssertEquals('Name','A string',C.SubB.StringProp);
  1201. Finally
  1202. C.Free;
  1203. end;
  1204. end;
  1205. procedure TTestComponentStream.TestTStreamedOwnedComponentsReadText;
  1206. Var
  1207. C : TStreamedOwnedComponents;
  1208. begin
  1209. TestTStreamedOwnedComponentsText;
  1210. C:=TStreamedOwnedComponents.Create(Nil);
  1211. Try
  1212. C.SubA.Free;
  1213. C.SubA:=Nil;
  1214. C.SubB.Free;
  1215. C.SubB:=Nil;
  1216. LoadFromTextStream(C);
  1217. AssertEquals('Name','TestTStreamedOwnedComponents',C.Name);
  1218. AssertNotNull('Have sub A',C.SubA);
  1219. AssertEquals('Correct sub A class',TIntegerComponent,C.SubA.ClassType);
  1220. AssertEquals('Name','SubA',C.SubA.Name);
  1221. AssertEquals('Name',3,C.SubA.IntProp);
  1222. AssertNotNull('Have sub B',C.SubB);
  1223. AssertEquals('Correct sub B class',TStringComponent,C.SubB.ClassType);
  1224. AssertEquals('Name','SubB',C.SubB.Name);
  1225. AssertEquals('Name','A string',C.SubB.StringProp);
  1226. Finally
  1227. C.Free;
  1228. end;
  1229. end;
  1230. Procedure TTestComponentStream.TestTIntegerComponent2;
  1231. Var
  1232. C : TComponent;
  1233. begin
  1234. C:=TIntegerComponent2.Create(Nil);
  1235. Try
  1236. SaveToStream(C);
  1237. ExpectSignature;
  1238. ExpectFlags([],0);
  1239. ExpectBareString('TIntegerComponent2');
  1240. ExpectBareString('TestTIntegerComponent2');
  1241. ExpectBareString('IntProp');
  1242. ExpectInteger(1024);
  1243. ExpectEndOfList;
  1244. ExpectEndOfList;
  1245. Finally
  1246. C.Free;
  1247. end;
  1248. end;
  1249. procedure TTestComponentStream.TestTIntegerComponent2Text;
  1250. Const
  1251. SData3 =
  1252. 'object TestTIntegerComponent2: TIntegerComponent2'+sLineBreak+
  1253. ' IntProp = 1024'+sLineBreak+
  1254. 'end'+sLineBreak;
  1255. begin
  1256. TestTIntegerComponent2;
  1257. CheckAsString(SData3);
  1258. end;
  1259. Procedure TTestComponentStream.TestTIntegerComponent3;
  1260. Var
  1261. C : TComponent;
  1262. begin
  1263. C:=TIntegerComponent3.Create(Nil);
  1264. Try
  1265. SaveToStream(C);
  1266. ExpectSignature;
  1267. ExpectFlags([],0);
  1268. ExpectBareString('TIntegerComponent3');
  1269. ExpectBareString('TestTIntegerComponent3');
  1270. ExpectBareString('IntProp');
  1271. ExpectInteger(262144);
  1272. ExpectEndOfList;
  1273. ExpectEndOfList;
  1274. Finally
  1275. C.Free;
  1276. end;
  1277. end;
  1278. procedure TTestComponentStream.TestTIntegerComponent3Text;
  1279. Const
  1280. SData4 =
  1281. 'object TestTIntegerComponent3: TIntegerComponent3'+sLineBreak+
  1282. ' IntProp = 262144'+sLineBreak+
  1283. 'end'+sLineBreak;
  1284. begin
  1285. TestTIntegerComponent3;
  1286. CheckAsString(SData4);
  1287. end;
  1288. Procedure TTestComponentStream.TestTIntegerComponent4;
  1289. Var
  1290. C : TComponent;
  1291. begin
  1292. C:=TIntegerComponent4.Create(Nil);
  1293. Try
  1294. SaveToStream(C);
  1295. ExpectSignature;
  1296. ExpectFlags([],0);
  1297. ExpectBareString('TIntegerComponent4');
  1298. ExpectBareString('TestTIntegerComponent4');
  1299. ExpectEndOfList;
  1300. ExpectEndOfList;
  1301. Finally
  1302. C.Free;
  1303. end;
  1304. end;
  1305. Procedure TTestComponentStream.TestTIntegerComponent5;
  1306. Var
  1307. C : TComponent;
  1308. begin
  1309. C:=TIntegerComponent5.Create(Nil);
  1310. Try
  1311. SaveToStream(C);
  1312. ExpectSignature;
  1313. ExpectFlags([],0);
  1314. ExpectBareString('TIntegerComponent5');
  1315. ExpectBareString('TestTIntegerComponent5');
  1316. ExpectBareString('IntProp');
  1317. ExpectInteger(5);
  1318. ExpectEndOfList;
  1319. ExpectEndOfList;
  1320. Finally
  1321. C.Free;
  1322. end;
  1323. end;
  1324. Procedure TTestComponentStream.TestTInt64Component;
  1325. Var
  1326. C : TComponent;
  1327. begin
  1328. C:=TInt64Component.Create(Nil);
  1329. Try
  1330. SaveToStream(C);
  1331. ExpectSignature;
  1332. ExpectFlags([],0);
  1333. ExpectBareString('TInt64Component');
  1334. ExpectBareString('TestTInt64Component');
  1335. ExpectBareString('Int64Prop');
  1336. ExpectInteger(4);
  1337. ExpectEndOfList;
  1338. ExpectEndOfList;
  1339. Finally
  1340. C.Free;
  1341. end;
  1342. end;
  1343. procedure TTestComponentStream.TestTInt64ComponentText;
  1344. Const
  1345. SData5 =
  1346. 'object TestTInt64Component: TInt64Component'+sLineBreak+
  1347. ' Int64Prop = 4'+sLineBreak+
  1348. 'end'+sLineBreak;
  1349. begin
  1350. TestTInt64Component;
  1351. CheckAsString(SData5);
  1352. end;
  1353. Procedure TTestComponentStream.TestTInt64Component2;
  1354. Var
  1355. C : TComponent;
  1356. begin
  1357. C:=TInt64Component2.Create(Nil);
  1358. Try
  1359. SaveToStream(C);
  1360. ExpectSignature;
  1361. ExpectFlags([],0);
  1362. ExpectBareString('TInt64Component2');
  1363. ExpectBareString('TestTInt64Component2');
  1364. ExpectBareString('Int64Prop');
  1365. ExpectInteger(1024);
  1366. ExpectEndOfList;
  1367. ExpectEndOfList;
  1368. Finally
  1369. C.Free;
  1370. end;
  1371. end;
  1372. procedure TTestComponentStream.TestTInt64Component2Text;
  1373. Const
  1374. SData6 =
  1375. 'object TestTInt64Component2: TInt64Component2'+sLineBreak+
  1376. ' Int64Prop = 1024'+sLineBreak+
  1377. 'end'+sLineBreak;
  1378. begin
  1379. TestTInt64Component2;
  1380. CheckAsString(SData6);
  1381. end;
  1382. Procedure TTestComponentStream.TestTInt64Component3;
  1383. Var
  1384. C : TComponent;
  1385. begin
  1386. C:=TInt64Component3.Create(Nil);
  1387. Try
  1388. SaveToStream(C);
  1389. ExpectSignature;
  1390. ExpectFlags([],0);
  1391. ExpectBareString('TInt64Component3');
  1392. ExpectBareString('TestTInt64Component3');
  1393. ExpectBareString('Int64Prop');
  1394. ExpectInteger(262144);
  1395. ExpectEndOfList;
  1396. ExpectEndOfList;
  1397. Finally
  1398. C.Free;
  1399. end;
  1400. end;
  1401. procedure TTestComponentStream.TestTInt64Component3Text;
  1402. Const
  1403. SData7 =
  1404. 'object TestTInt64Component3: TInt64Component3'+sLineBreak+
  1405. ' Int64Prop = 262144'+sLineBreak+
  1406. 'end'+sLineBreak;
  1407. begin
  1408. TestTInt64Component3;
  1409. CheckAsString(SData7);
  1410. end;
  1411. Procedure TTestComponentStream.TestTInt64Component4;
  1412. Var
  1413. C : TComponent;
  1414. begin
  1415. C:=TInt64Component4.Create(Nil);
  1416. Try
  1417. SaveToStream(C);
  1418. ExpectSignature;
  1419. ExpectFlags([],0);
  1420. ExpectBareString('TInt64Component4');
  1421. ExpectBareString('TestTInt64Component4');
  1422. ExpectBareString('Int64Prop');
  1423. ExpectInt64(2147516415{ 2147745791});
  1424. ExpectEndOfList;
  1425. ExpectEndOfList;
  1426. Finally
  1427. C.Free;
  1428. end;
  1429. end;
  1430. procedure TTestComponentStream.TestTInt64Component4Text;
  1431. Const
  1432. SData8 =
  1433. 'object TestTInt64Component4: TInt64Component4'+sLineBreak+
  1434. ' Int64Prop = 2147516415'+sLineBreak+
  1435. 'end'+sLineBreak;
  1436. begin
  1437. TestTInt64Component4;
  1438. CheckAsString(SData8);
  1439. end;
  1440. Procedure TTestComponentStream.TestTInt64Component5;
  1441. Var
  1442. C : TComponent;
  1443. begin
  1444. C:=TInt64Component5.Create(Nil);
  1445. Try
  1446. SaveToStream(C);
  1447. ExpectSignature;
  1448. ExpectFlags([],0);
  1449. ExpectBareString('TInt64Component5');
  1450. ExpectBareString('TestTInt64Component5');
  1451. // ExpectBareString('Int64Prop');
  1452. // ExpectInteger(7);
  1453. ExpectEndOfList;
  1454. ExpectEndOfList;
  1455. Finally
  1456. C.Free;
  1457. end;
  1458. end;
  1459. Procedure TTestComponentStream.TestTInt64Component6;
  1460. Var
  1461. C : TComponent;
  1462. begin
  1463. C:=TInt64Component6.Create(Nil);
  1464. Try
  1465. SaveToStream(C);
  1466. ExpectSignature;
  1467. ExpectFlags([],0);
  1468. ExpectBareString('TInt64Component6');
  1469. ExpectBareString('TestTInt64Component6');
  1470. ExpectBareString('Int64Prop');
  1471. ExpectInteger(8);
  1472. ExpectEndOfList;
  1473. ExpectEndOfList;
  1474. Finally
  1475. C.Free;
  1476. end;
  1477. end;
  1478. Procedure TTestComponentStream.TestTStringComponent;
  1479. Var
  1480. C : TComponent;
  1481. begin
  1482. C:=TStringComponent.Create(Nil);
  1483. Try
  1484. SaveToStream(C);
  1485. ExpectSignature;
  1486. ExpectFlags([],0);
  1487. ExpectBareString('TStringComponent');
  1488. ExpectBareString('TestTStringComponent');
  1489. ExpectBareString('StringProp');
  1490. ExpectString('A string');
  1491. ExpectEndOfList;
  1492. ExpectEndOfList;
  1493. Finally
  1494. C.Free;
  1495. end;
  1496. end;
  1497. procedure TTestComponentStream.TestTStringComponentText;
  1498. Const
  1499. SData9 =
  1500. 'object TestTStringComponent: TStringComponent'+sLineBreak+
  1501. ' StringProp = ''A string'''+sLineBreak+
  1502. 'end'+sLineBreak;
  1503. begin
  1504. TestTStringComponent;
  1505. CheckAsString(SData9);
  1506. end;
  1507. Procedure TTestComponentStream.TestTStringComponent2;
  1508. Var
  1509. C : TComponent;
  1510. begin
  1511. C:=TStringComponent2.Create(Nil);
  1512. Try
  1513. SaveToStream(C);
  1514. ExpectSignature;
  1515. ExpectFlags([],0);
  1516. ExpectBareString('TStringComponent2');
  1517. ExpectBareString('TestTStringComponent2');
  1518. ExpectEndOfList;
  1519. ExpectEndOfList;
  1520. Finally
  1521. C.Free;
  1522. end;
  1523. end;
  1524. procedure TTestComponentStream.TestTStringComponent3;
  1525. Var
  1526. C : TComponent;
  1527. begin
  1528. C:=TStringComponent3.Create(Nil);
  1529. Try
  1530. SaveToStream(C);
  1531. ExpectSignature;
  1532. ExpectFlags([],0);
  1533. ExpectBareString('TStringComponent3');
  1534. ExpectBareString('TestTStringComponent3');
  1535. ExpectBareString('StringProp');
  1536. ExpectString('A ''quoted'' string');
  1537. ExpectEndOfList;
  1538. ExpectEndOfList;
  1539. Finally
  1540. C.Free;
  1541. end;
  1542. end;
  1543. procedure TTestComponentStream.TestTStringComponent3Text;
  1544. Const
  1545. SData10 =
  1546. 'object TestTStringComponent3: TStringComponent3'+sLineBreak+
  1547. ' StringProp = ''A ''''quoted'''' string'''+sLineBreak+
  1548. 'end'+sLineBreak;
  1549. begin
  1550. TestTStringComponent3;
  1551. CheckAsString(SData10);
  1552. end;
  1553. Procedure TTestComponentStream.TestTWideStringComponent;
  1554. Var
  1555. C : TComponent;
  1556. begin
  1557. C:=TWideStringComponent.Create(Nil);
  1558. Try
  1559. SaveToStream(C);
  1560. ExpectSignature;
  1561. ExpectFlags([],0);
  1562. ExpectBareString('TWideStringComponent');
  1563. ExpectBareString('TestTWideStringComponent');
  1564. ExpectBareString('WideStringProp');
  1565. ExpectString('Some WideString');
  1566. ExpectEndOfList;
  1567. ExpectEndOfList;
  1568. Finally
  1569. C.Free;
  1570. end;
  1571. end;
  1572. procedure TTestComponentStream.TestTWideStringComponentText;
  1573. Const
  1574. SData11 =
  1575. 'object TestTWideStringComponent: TWideStringComponent'+sLineBreak+
  1576. ' WideStringProp = ''Some WideString'''+sLineBreak+
  1577. 'end'+sLineBreak;
  1578. begin
  1579. TestTWideStringComponent;
  1580. CheckAsString(SData11);
  1581. end;
  1582. Procedure TTestComponentStream.TestTWideStringComponent2;
  1583. Var
  1584. C : TComponent;
  1585. begin
  1586. C:=TWideStringComponent2.Create(Nil);
  1587. Try
  1588. SaveToStream(C);
  1589. ExpectSignature;
  1590. ExpectFlags([],0);
  1591. ExpectBareString('TWideStringComponent2');
  1592. ExpectBareString('TestTWideStringComponent2');
  1593. ExpectEndOfList;
  1594. ExpectEndOfList;
  1595. Finally
  1596. C.Free;
  1597. end;
  1598. end;
  1599. Procedure TTestComponentStream.TestTSingleComponent;
  1600. Var
  1601. C : TComponent;
  1602. begin
  1603. C:=TSingleComponent.Create(Nil);
  1604. Try
  1605. SaveToStream(C);
  1606. ExpectSignature;
  1607. ExpectFlags([],0);
  1608. ExpectBareString('TSingleComponent');
  1609. ExpectBareString('TestTSingleComponent');
  1610. ExpectBareString('SingleProp');
  1611. ExpectExtended(1.23);
  1612. ExpectEndOfList;
  1613. ExpectEndOfList;
  1614. Finally
  1615. C.Free;
  1616. end;
  1617. end;
  1618. Procedure TTestComponentStream.TestTDoubleComponent;
  1619. Var
  1620. C : TComponent;
  1621. begin
  1622. C:=TDoubleComponent.Create(Nil);
  1623. Try
  1624. SaveToStream(C);
  1625. ExpectSignature;
  1626. ExpectFlags([],0);
  1627. ExpectBareString('TDoubleComponent');
  1628. ExpectBareString('TestTDoubleComponent');
  1629. ExpectBareString('DoubleProp');
  1630. ExpectExtended(2.34);
  1631. ExpectEndOfList;
  1632. ExpectEndOfList;
  1633. Finally
  1634. C.Free;
  1635. end;
  1636. end;
  1637. procedure TTestComponentStream.TestTDoubleComponentText;
  1638. Const
  1639. SData12 =
  1640. 'object TestTDoubleComponent: TDoubleComponent'+sLineBreak+
  1641. ' DoubleProp = 2.3E+000'+sLineBreak+
  1642. 'end'+sLineBreak;
  1643. begin
  1644. TestTDoubleComponent;
  1645. CheckAsString(SData12);
  1646. end;
  1647. Procedure TTestComponentStream.TestTExtendedComponent;
  1648. Var
  1649. C : TComponent;
  1650. begin
  1651. C:=TExtendedComponent.Create(Nil);
  1652. Try
  1653. SaveToStream(C);
  1654. ExpectSignature;
  1655. ExpectFlags([],0);
  1656. ExpectBareString('TExtendedComponent');
  1657. ExpectBareString('TestTExtendedComponent');
  1658. ExpectBareString('ExtendedProp');
  1659. ExpectExtended(3.45);
  1660. ExpectEndOfList;
  1661. ExpectEndOfList;
  1662. Finally
  1663. C.Free;
  1664. end;
  1665. end;
  1666. (*
  1667. Procedure TTestComponentStream.TestTCompComponent;
  1668. Var
  1669. C : TComponent;
  1670. begin
  1671. C:=TCompComponent.Create(Nil);
  1672. Try
  1673. SaveToStream(C);
  1674. ExpectSignature;
  1675. ExpectFlags([],0);
  1676. ExpectBareString('TCompComponent');
  1677. ExpectBareString('TestTCompComponent');
  1678. ExpectBareString('ExtendedProp');
  1679. ExpectExtended(5.00);
  1680. ExpectEndOfList;
  1681. ExpectEndOfList;
  1682. Finally
  1683. C.Free;
  1684. end;
  1685. end;
  1686. *)
  1687. Procedure TTestComponentStream.TestTCurrencyComponent;
  1688. Var
  1689. C : TComponent;
  1690. begin
  1691. C:=TCurrencyComponent.Create(Nil);
  1692. Try
  1693. SaveToStream(C);
  1694. ExpectSignature;
  1695. ExpectFlags([],0);
  1696. ExpectBareString('TCurrencyComponent');
  1697. ExpectBareString('TestTCurrencyComponent');
  1698. ExpectBareString('CurrencyProp');
  1699. ExpectInteger(56700);
  1700. // Natively, this is:
  1701. // ExpectExtended(5.67);
  1702. ExpectEndOfList;
  1703. ExpectEndOfList;
  1704. Finally
  1705. C.Free;
  1706. end;
  1707. end;
  1708. procedure TTestComponentStream.TestTCurrencyComponentTExt;
  1709. Const
  1710. SData13 =
  1711. 'object TestTCurrencyComponent: TCurrencyComponent'+sLineBreak+
  1712. ' CurrencyProp = 56700'+sLineBreak+
  1713. 'end'+sLineBreak;
  1714. begin
  1715. TestTCurrencyComponent;
  1716. CheckAsString(SData13);
  1717. end;
  1718. Procedure TTestComponentStream.TestTDateTimeComponent;
  1719. Var
  1720. C : TComponent;
  1721. begin
  1722. C:=TDateTimeComponent.Create(Nil);
  1723. Try
  1724. SaveToStream(C);
  1725. ExpectSignature;
  1726. ExpectFlags([],0);
  1727. ExpectBareString('TDateTimeComponent');
  1728. ExpectBareString('TestTDateTimeComponent');
  1729. ExpectBareString('DateTimeProp');
  1730. ExpectExtended(35278.00);
  1731. ExpectEndOfList;
  1732. ExpectEndOfList;
  1733. Finally
  1734. C.Free;
  1735. end;
  1736. end;
  1737. Procedure TTestComponentStream.TestTDateTimeComponent2;
  1738. Var
  1739. C : TComponent;
  1740. begin
  1741. C:=TDateTimeComponent2.Create(Nil);
  1742. Try
  1743. SaveToStream(C);
  1744. ExpectSignature;
  1745. ExpectFlags([],0);
  1746. ExpectBareString('TDateTimeComponent2');
  1747. ExpectBareString('TestTDateTimeComponent2');
  1748. ExpectBareString('DateTimeProp');
  1749. ExpectExtended(0.97);
  1750. ExpectEndOfList;
  1751. ExpectEndOfList;
  1752. Finally
  1753. C.Free;
  1754. end;
  1755. end;
  1756. Procedure TTestComponentStream.TestTDateTimeComponent3;
  1757. Var
  1758. C : TComponent;
  1759. begin
  1760. C:=TDateTimeComponent3.Create(Nil);
  1761. Try
  1762. SaveToStream(C);
  1763. ExpectSignature;
  1764. ExpectFlags([],0);
  1765. ExpectBareString('TDateTimeComponent3');
  1766. ExpectBareString('TestTDateTimeComponent3');
  1767. ExpectBareString('DateTimeProp');
  1768. ExpectExtended(35278.97);
  1769. ExpectEndOfList;
  1770. ExpectEndOfList;
  1771. Finally
  1772. C.Free;
  1773. end;
  1774. end;
  1775. Procedure TTestComponentStream.TestTEnumComponent;
  1776. Var
  1777. C : TComponent;
  1778. begin
  1779. C:=TEnumComponent.Create(Nil);
  1780. Try
  1781. SaveToStream(C);
  1782. ExpectSignature;
  1783. ExpectFlags([],0);
  1784. ExpectBareString('TEnumComponent');
  1785. ExpectBareString('TestTEnumComponent');
  1786. ExpectBareString('Dice');
  1787. ExpectIdent('four');
  1788. ExpectEndOfList;
  1789. ExpectEndOfList;
  1790. Finally
  1791. C.Free;
  1792. end;
  1793. end;
  1794. procedure TTestComponentStream.TestTEnumComponentText;
  1795. Const
  1796. SData14 =
  1797. 'object TestTEnumComponent: TEnumComponent'+sLineBreak+
  1798. ' Dice = four'+sLineBreak+
  1799. 'end'+sLineBreak;
  1800. begin
  1801. TestTEnumComponent;
  1802. CheckAsString(SData14);
  1803. end;
  1804. Procedure TTestComponentStream.TestTEnumComponent2;
  1805. Var
  1806. C : TComponent;
  1807. begin
  1808. C:=TEnumComponent2.Create(Nil);
  1809. Try
  1810. SaveToStream(C);
  1811. ExpectSignature;
  1812. ExpectFlags([],0);
  1813. ExpectBareString('TEnumComponent2');
  1814. ExpectBareString('TestTEnumComponent2');
  1815. {$ifndef FPC}
  1816. // FPC does not stream an undeclared default value, it assumes the
  1817. // 0-the value is the default.
  1818. ExpectBareString('Dice');
  1819. ExpectIdent('one');
  1820. {$endif FPC}
  1821. ExpectEndOfList;
  1822. ExpectEndOfList;
  1823. Finally
  1824. C.Free;
  1825. end;
  1826. end;
  1827. Procedure TTestComponentStream.TestTEnumComponent3;
  1828. Var
  1829. C : TComponent;
  1830. begin
  1831. C:=TEnumComponent3.Create(Nil);
  1832. Try
  1833. SaveToStream(C);
  1834. ExpectSignature;
  1835. ExpectFlags([],0);
  1836. ExpectBareString('TEnumComponent3');
  1837. ExpectBareString('TestTEnumComponent3');
  1838. ExpectBareString('Dice');
  1839. ExpectIdent('three');
  1840. ExpectEndOfList;
  1841. ExpectEndOfList;
  1842. Finally
  1843. C.Free;
  1844. end;
  1845. end;
  1846. Procedure TTestComponentStream.TestTEnumComponent4;
  1847. Var
  1848. C : TComponent;
  1849. begin
  1850. C:=TEnumComponent4.Create(Nil);
  1851. Try
  1852. SaveToStream(C);
  1853. ExpectSignature;
  1854. ExpectFlags([],0);
  1855. ExpectBareString('TEnumComponent4');
  1856. ExpectBareString('TestTEnumComponent4');
  1857. ExpectEndOfList;
  1858. ExpectEndOfList;
  1859. Finally
  1860. C.Free;
  1861. end;
  1862. end;
  1863. Procedure TTestComponentStream.TestTEnumComponent5;
  1864. Var
  1865. C : TComponent;
  1866. begin
  1867. C:=TEnumComponent5.Create(Nil);
  1868. Try
  1869. SaveToStream(C);
  1870. ExpectSignature;
  1871. ExpectFlags([],0);
  1872. ExpectBareString('TEnumComponent5');
  1873. ExpectBareString('TestTEnumComponent5');
  1874. ExpectEndOfList;
  1875. ExpectEndOfList;
  1876. Finally
  1877. C.Free;
  1878. end;
  1879. end;
  1880. Procedure TTestComponentStream.TestTSetComponent;
  1881. Var
  1882. C : TComponent;
  1883. begin
  1884. C:=TSetComponent.Create(Nil);
  1885. Try
  1886. SaveToStream(C);
  1887. ExpectSignature;
  1888. ExpectFlags([],0);
  1889. ExpectBareString('TSetComponent');
  1890. ExpectBareString('TestTSetComponent');
  1891. ExpectBareString('Throw');
  1892. ExpectValue(vaSet);
  1893. ExpectBareString('two');
  1894. ExpectBareString('five');
  1895. ExpectBareString('');
  1896. ExpectEndOfList;
  1897. ExpectEndOfList;
  1898. Finally
  1899. C.Free;
  1900. end;
  1901. end;
  1902. procedure TTestComponentStream.TestTSetComponentText;
  1903. Const
  1904. SData15 =
  1905. 'object TestTSetComponent: TSetComponent'+sLineBreak+
  1906. ' Throw = [two, five]'+sLineBreak+
  1907. 'end'+sLineBreak;
  1908. begin
  1909. TestTSetComponent;
  1910. CheckAsString(SData15);
  1911. end;
  1912. Procedure TTestComponentStream.TestTSetComponent2;
  1913. Var
  1914. C : TComponent;
  1915. begin
  1916. C:=TSetComponent2.Create(Nil);
  1917. Try
  1918. SaveToStream(C);
  1919. ExpectSignature;
  1920. ExpectFlags([],0);
  1921. ExpectBareString('TSetComponent2');
  1922. ExpectBareString('TestTSetComponent2');
  1923. {$ifdef delphi}
  1924. // Same as for sets: a set with undeclared default is regarded as
  1925. // A set with default [], and is not streamed if it is empty.
  1926. ExpectBareString('Throw');
  1927. ExpectValue(vaSet);
  1928. ExpectBareString('');
  1929. {$endif delphi}
  1930. ExpectEndOfList;
  1931. ExpectEndOfList;
  1932. Finally
  1933. C.Free;
  1934. end;
  1935. end;
  1936. Procedure TTestComponentStream.TestTSetComponent3;
  1937. Var
  1938. C : TComponent;
  1939. begin
  1940. C:=TSetComponent3.Create(Nil);
  1941. Try
  1942. SaveToStream(C);
  1943. ExpectSignature;
  1944. ExpectFlags([],0);
  1945. ExpectBareString('TSetComponent3');
  1946. ExpectBareString('TestTSetComponent3');
  1947. ExpectBareString('Throw');
  1948. ExpectValue(vaSet);
  1949. ExpectBareString('one');
  1950. ExpectBareString('four');
  1951. ExpectBareString('');
  1952. ExpectEndOfList;
  1953. ExpectEndOfList;
  1954. Finally
  1955. C.Free;
  1956. end;
  1957. end;
  1958. Procedure TTestComponentStream.TestTSetComponent4;
  1959. Var
  1960. C : TComponent;
  1961. begin
  1962. // Writeln('Start test');
  1963. C:=TSetComponent4.Create(Nil);
  1964. Try
  1965. SaveToStream(C);
  1966. ExpectSignature;
  1967. ExpectFlags([],0);
  1968. ExpectBareString('TSetComponent4');
  1969. ExpectBareString('TestTSetComponent4');
  1970. ExpectEndOfList;
  1971. ExpectEndOfList;
  1972. Finally
  1973. C.Free;
  1974. end;
  1975. end;
  1976. Procedure TTestComponentStream.TestTMultipleComponent;
  1977. Var
  1978. C : TComponent;
  1979. begin
  1980. C:=TMultipleComponent.Create(Nil);
  1981. Try
  1982. SaveToStream(C);
  1983. ExpectSignature;
  1984. ExpectFlags([],0);
  1985. ExpectBareString('TMultipleComponent');
  1986. ExpectBareString('TestTMultipleComponent');
  1987. ExpectBareString('IntProp');
  1988. ExpectInteger(1);
  1989. ExpectBareString('StringProp');
  1990. ExpectString('A String');
  1991. ExpectBareString('CurrencyProp');
  1992. ExpectInteger(23000);
  1993. // ExpectExtended(2.30);
  1994. ExpectBareString('Dice');
  1995. ExpectIdent('two');
  1996. ExpectBareString('Throw');
  1997. ExpectValue(vaSet);
  1998. ExpectBareString('three');
  1999. ExpectBareString('four');
  2000. ExpectBareString('');
  2001. ExpectEndOfList;
  2002. ExpectEndOfList;
  2003. Finally
  2004. C.Free;
  2005. end;
  2006. end;
  2007. procedure TTestComponentStream.TestTMultipleComponentText;
  2008. Const
  2009. SData16 =
  2010. 'object TestTMultipleComponent: TMultipleComponent'+sLineBreak+
  2011. ' IntProp = 1'+sLineBreak+
  2012. ' StringProp = ''A String'''+sLineBreak+
  2013. ' CurrencyProp = 23000'+sLineBreak+
  2014. ' Dice = two'+sLineBreak+
  2015. ' Throw = [three, four]'+sLineBreak+
  2016. 'end'+sLineBreak;
  2017. begin
  2018. TestTMultipleComponent;
  2019. CheckAsString(SData16);
  2020. end;
  2021. Procedure TTestComponentStream.TestTPersistentComponent;
  2022. Var
  2023. C : TComponent;
  2024. begin
  2025. C:=TPersistentComponent.Create(Nil);
  2026. Try
  2027. SaveToStream(C);
  2028. ExpectSignature;
  2029. ExpectFlags([],0);
  2030. ExpectBareString('TPersistentComponent');
  2031. ExpectBareString('TestTPersistentComponent');
  2032. ExpectBareString('Persist.AInteger');
  2033. ExpectInteger(3);
  2034. ExpectBareString('Persist.AString');
  2035. ExpectString('A persistent string');
  2036. ExpectEndOfList;
  2037. ExpectEndOfList;
  2038. Finally
  2039. C.Free;
  2040. end;
  2041. end;
  2042. procedure TTestComponentStream.TestTPersistentComponentText;
  2043. Const
  2044. SData17 =
  2045. 'object TestTPersistentComponent: TPersistentComponent'+sLineBreak+
  2046. ' Persist.AInteger = 3'+sLineBreak+
  2047. ' Persist.AString = ''A persistent string'''+sLineBreak+
  2048. 'end'+sLineBreak;
  2049. begin
  2050. TestTPersistentComponent;
  2051. CheckAsString(SData17);
  2052. end;
  2053. Procedure TTestComponentStream.TestTCollectionComponent;
  2054. Var
  2055. C : TComponent;
  2056. begin
  2057. C:=TCollectionComponent.Create(Nil);
  2058. Try
  2059. SaveToStream(C);
  2060. ExpectSignature;
  2061. ExpectFlags([],0);
  2062. ExpectBareString('TCollectionComponent');
  2063. ExpectBareString('TestTCollectionComponent');
  2064. ExpectBareString('Coll');
  2065. ExpectValue(vaCollection);
  2066. ExpectEndOfList;
  2067. ExpectEndOfList;
  2068. ExpectEndOfList;
  2069. Finally
  2070. C.Free;
  2071. end;
  2072. end;
  2073. procedure TTestComponentStream.TestTCollectionComponentText;
  2074. Const
  2075. SData18 =
  2076. 'object TestTCollectionComponent: TCollectionComponent'+sLineBreak+
  2077. ' Coll = <>'+sLineBreak+
  2078. 'end'+sLineBreak;
  2079. begin
  2080. TestTCollectionComponent;
  2081. CheckAsString(SData18);
  2082. end;
  2083. Procedure TTestComponentStream.TestTCollectionComponent2;
  2084. Var
  2085. C : TComponent;
  2086. begin
  2087. C:=TCollectionComponent2.Create(Nil);
  2088. Try
  2089. SaveToStream(C);
  2090. ExpectSignature;
  2091. ExpectFlags([],0);
  2092. ExpectBareString('TCollectionComponent2');
  2093. ExpectBareString('TestTCollectionComponent2');
  2094. ExpectBareString('Coll');
  2095. ExpectValue(vaCollection);
  2096. ExpectValue(vaList);
  2097. ExpectBareString('StrProp');
  2098. ExpectString('First');
  2099. ExpectEndOfList;
  2100. ExpectValue(vaList);
  2101. ExpectBareString('StrProp');
  2102. ExpectString('Second');
  2103. ExpectEndOfList;
  2104. ExpectValue(vaList);
  2105. ExpectBareString('StrProp');
  2106. ExpectString('Third');
  2107. ExpectEndOfList;
  2108. ExpectEndOfList;
  2109. ExpectEndOfList;
  2110. ExpectEndOfList;
  2111. Finally
  2112. C.Free;
  2113. end;
  2114. end;
  2115. procedure TTestComponentStream.TestTCollectionComponent2Text;
  2116. Const
  2117. SData19 =
  2118. 'object TestTCollectionComponent2: TCollectionComponent2'+sLineBreak+
  2119. ' Coll = < '+sLineBreak+
  2120. ' item'+sLineBreak+
  2121. ' StrProp = ''First'''+sLineBreak+
  2122. ' end '+sLineBreak+
  2123. ' item'+sLineBreak+
  2124. ' StrProp = ''Second'''+sLineBreak+
  2125. ' end '+sLineBreak+
  2126. ' item'+sLineBreak+
  2127. ' StrProp = ''Third'''+sLineBreak+
  2128. ' end>'+sLineBreak+
  2129. 'end'+sLineBreak;
  2130. begin
  2131. TestTCollectionComponent2;
  2132. CheckAsString(SData19);
  2133. end;
  2134. Procedure TTestComponentStream.TestTCollectionComponent3;
  2135. Var
  2136. C : TComponent;
  2137. begin
  2138. C:=TCollectionComponent3.Create(Nil);
  2139. Try
  2140. SaveToStream(C);
  2141. ExpectSignature;
  2142. ExpectFlags([],0);
  2143. ExpectBareString('TCollectionComponent3');
  2144. ExpectBareString('TestTCollectionComponent3');
  2145. ExpectBareString('Coll');
  2146. ExpectValue(vaCollection);
  2147. ExpectValue(vaList);
  2148. ExpectBareString('StrProp');
  2149. ExpectString('First');
  2150. ExpectEndOfList;
  2151. ExpectValue(vaList);
  2152. ExpectEndOfList;
  2153. ExpectValue(vaList);
  2154. ExpectBareString('StrProp');
  2155. ExpectString('Third');
  2156. ExpectEndOfList;
  2157. ExpectEndOfList;
  2158. ExpectEndOfList;
  2159. ExpectEndOfList;
  2160. Finally
  2161. C.Free;
  2162. end;
  2163. end;
  2164. Procedure TTestComponentStream.TestTCollectionComponent4;
  2165. Var
  2166. C : TComponent;
  2167. begin
  2168. C:=TCollectionComponent4.Create(Nil);
  2169. Try
  2170. SaveToStream(C);
  2171. ExpectSignature;
  2172. ExpectFlags([],0);
  2173. ExpectBareString('TCollectionComponent4');
  2174. ExpectBareString('TestTCollectionComponent4');
  2175. ExpectBareString('Coll');
  2176. ExpectValue(vaCollection);
  2177. ExpectValue(vaList);
  2178. ExpectBareString('StrProp');
  2179. ExpectString('Something');
  2180. ExpectEndOfList;
  2181. ExpectEndOfList;
  2182. ExpectEndOfList;
  2183. ExpectEndOfList;
  2184. Finally
  2185. C.Free;
  2186. end;
  2187. end;
  2188. Procedure TTestComponentStream.TestTCollectionComponent5;
  2189. Var
  2190. C : TComponent;
  2191. begin
  2192. C:=TCollectionComponent5.Create(Nil);
  2193. Try
  2194. SaveToStream(C);
  2195. ExpectSignature;
  2196. ExpectFlags([],0);
  2197. ExpectBareString('TCollectionComponent5');
  2198. ExpectBareString('TestTCollectionComponent5');
  2199. ExpectBareString('Coll');
  2200. ExpectValue(vaCollection);
  2201. ExpectValue(vaList);
  2202. ExpectBareString('StrProp1');
  2203. ExpectString('Something');
  2204. ExpectBareString('StrProp2');
  2205. ExpectString('Otherthing');
  2206. ExpectEndOfList;
  2207. ExpectValue(vaList);
  2208. ExpectBareString('StrProp1');
  2209. ExpectString('Something 2');
  2210. ExpectBareString('StrProp2');
  2211. ExpectString('Otherthing 2');
  2212. ExpectEndOfList;
  2213. ExpectEndOfList;
  2214. ExpectEndOfList;
  2215. Finally
  2216. C.Free;
  2217. end;
  2218. end;
  2219. Procedure TTestComponentStream.TestTOwnedComponent;
  2220. Var
  2221. C : TComponent;
  2222. begin
  2223. C:=TOwnedComponent.Create(Nil);
  2224. Try
  2225. SaveToStream(C);
  2226. ExpectSignature;
  2227. ExpectFlags([],0);
  2228. ExpectBareString('TOwnedComponent');
  2229. ExpectBareString('TestTOwnedComponent');
  2230. ExpectBareString('CompProp');
  2231. ExpectIdent('SubComponent');
  2232. ExpectEndOfList;
  2233. ExpectEndOfList;
  2234. Finally
  2235. C.Free;
  2236. end;
  2237. end;
  2238. procedure TTestComponentStream.TestTOwnedComponentText;
  2239. Const
  2240. SData20 =
  2241. 'object TestTOwnedComponent: TOwnedComponent'+sLineBreak+
  2242. ' CompProp = SubComponent'+sLineBreak+
  2243. 'end'+sLineBreak;
  2244. begin
  2245. TestTOwnedComponent;
  2246. CheckAsString(SData20);
  2247. end;
  2248. Procedure TTestComponentStream.TestTStreamedOwnedComponent;
  2249. Var
  2250. C : TComponent;
  2251. begin
  2252. C:=TStreamedOwnedComponent.Create(Nil);
  2253. Try
  2254. SaveToStream(C);
  2255. ExpectSignature;
  2256. ExpectFlags([],0);
  2257. ExpectBareString('TStreamedOwnedComponent');
  2258. ExpectBareString('TestTStreamedOwnedComponent');
  2259. ExpectEndOfList;
  2260. ExpectFlags([],0);
  2261. ExpectBareString('TIntegerComponent');
  2262. ExpectBareString('Sub');
  2263. ExpectBareString('IntProp');
  2264. ExpectInteger(3);
  2265. ExpectEndOfList;
  2266. ExpectEndOfList;
  2267. ExpectEndOfList;
  2268. ExpectEndOfStream;
  2269. Finally
  2270. C.Free;
  2271. end;
  2272. end;
  2273. procedure TTestComponentStream.TestTStreamedOwnedComponentText;
  2274. Const
  2275. SData21 =
  2276. 'object TestTStreamedOwnedComponent: TStreamedOwnedComponent'+sLineBreak+
  2277. ' object Sub: TIntegerComponent'+sLineBreak+
  2278. ' IntProp = 3'+sLineBreak+
  2279. ' end'+sLineBreak+
  2280. 'end'+sLineBreak;
  2281. begin
  2282. TestTStreamedOwnedComponent;
  2283. CheckAsString(SData21);
  2284. end;
  2285. Procedure TTestComponentStream.TestTStreamedOwnedComponents;
  2286. Var
  2287. C : TComponent;
  2288. begin
  2289. C:=TStreamedOwnedComponents.Create(Nil);
  2290. Try
  2291. SaveToStream(C);
  2292. ExpectSignature;
  2293. ExpectFlags([],0);
  2294. ExpectBareString('TStreamedOwnedComponents');
  2295. ExpectBareString('TestTStreamedOwnedComponents');
  2296. ExpectEndOfList;
  2297. ExpectFlags([],0);
  2298. ExpectBareString('TIntegerComponent');
  2299. ExpectBareString('SubA');
  2300. ExpectBareString('IntProp');
  2301. ExpectInteger(3);
  2302. ExpectEndOfList;
  2303. ExpectEndOfList;
  2304. ExpectFlags([],0);
  2305. ExpectBareString('TStringComponent');
  2306. ExpectBareString('SubB');
  2307. ExpectBareString('StringProp');
  2308. ExpectString('A string');
  2309. ExpectEndOfList;
  2310. ExpectEndOfList;
  2311. ExpectEndOfList;
  2312. ExpectEndOfStream;
  2313. Finally
  2314. C.Free;
  2315. end;
  2316. end;
  2317. procedure TTestComponentStream.TestTStreamedOwnedComponentsText;
  2318. Const
  2319. SData22 =
  2320. 'object TestTStreamedOwnedComponents: TStreamedOwnedComponents'+sLineBreak+
  2321. ' object SubA: TIntegerComponent'+sLineBreak+
  2322. ' IntProp = 3'+sLineBreak+
  2323. ' end'+sLineBreak+
  2324. ' object SubB: TStringComponent'+sLineBreak+
  2325. ' StringProp = ''A string'''+sLineBreak+
  2326. ' end'+sLineBreak+
  2327. 'end'+sLineBreak;
  2328. begin
  2329. TestTStreamedOwnedComponents;
  2330. CheckAsString(SData22);
  2331. end;
  2332. Procedure TTestComponentStream.TestTMethodComponent;
  2333. Var
  2334. C : TComponent;
  2335. begin
  2336. C:=TMethodComponent.Create(Nil);
  2337. Try
  2338. SaveToStream(C);
  2339. ExpectSignature;
  2340. ExpectFlags([],0);
  2341. ExpectBareString('TMethodComponent');
  2342. ExpectBareString('TestTMethodComponent');
  2343. ExpectBareString('MethodProp');
  2344. ExpectIdent('MyMethod');
  2345. ExpectEndOfList;
  2346. ExpectEndOfList;
  2347. Finally
  2348. C.Free;
  2349. end;
  2350. end;
  2351. procedure TTestComponentStream.TestTMethodComponentText;
  2352. Const
  2353. SData23 =
  2354. 'object TestTMethodComponent: TMethodComponent'+sLineBreak+
  2355. ' MethodProp = MyMethod'+sLineBreak+
  2356. 'end'+sLineBreak;
  2357. begin
  2358. TestTMethodComponent;
  2359. CheckAsString(SData23);
  2360. end;
  2361. Procedure TTestComponentStream.TestTMethodComponent2;
  2362. Var
  2363. C : TComponent;
  2364. begin
  2365. C:=TMethodComponent2.Create(Nil);
  2366. Try
  2367. SaveToStream(C);
  2368. ExpectSignature;
  2369. ExpectFlags([],0);
  2370. ExpectBareString('TMethodComponent2');
  2371. ExpectBareString('TestTMethodComponent2');
  2372. ExpectEndOfList;
  2373. ExpectFlags([],0);
  2374. ExpectBareString('TMethodComponent');
  2375. ExpectBareString('AComponent');
  2376. ExpectBareString('MethodProp');
  2377. ExpectIdent('MyMethod2');
  2378. ExpectEndOfList;
  2379. ExpectEndOfList;
  2380. ExpectEndOfList;
  2381. Finally
  2382. C.Free;
  2383. end;
  2384. end;
  2385. procedure TTestComponentStream.TestTMethodComponent2Text;
  2386. Const
  2387. SData24 =
  2388. 'object TestTMethodComponent2: TMethodComponent2'+sLineBreak+
  2389. ' object AComponent: TMethodComponent'+sLineBreak+
  2390. ' MethodProp = MyMethod2'+sLineBreak+
  2391. ' end'+sLineBreak+
  2392. 'end'+sLineBreak;
  2393. begin
  2394. TestTMethodComponent2;
  2395. CheckAsString(SData24);
  2396. end;
  2397. Procedure TTestCollectionStream.CompareColl(CA,CB : TMyColl);
  2398. Var
  2399. I : Integer;
  2400. begin
  2401. AssertEquals('Counts differ: %d %d',CA.Count,CB.Count);
  2402. For I:=0 to CA.Count-1 do
  2403. begin
  2404. AssertEquals(Format('Nr property of element %d equals',[I]),CA[i].Nr,CB[i].Nr);
  2405. AssertEquals(Format('Str property of element %d equals',[I]),CA[i].Str,CB[i].Str);
  2406. end;
  2407. end;
  2408. Function TTestCollectionStream.EmptyComp : TCollComp;
  2409. begin
  2410. Result:=TCollComp.Create(Nil);
  2411. end;
  2412. Function TTestCollectionStream.CreateColl(Anr : Integer) : TCollComp;
  2413. Var
  2414. I : Integer;
  2415. T : TMyItem;
  2416. begin
  2417. Result:=EmptyComp;
  2418. Result.Name:='C'+IntToStr(Anr);
  2419. For I:=0 to ANr-1 do
  2420. begin
  2421. T:=Result.MyColl.Add as TMyItem;
  2422. T.Nr:=I; // not I+1, so the default value gets tested too
  2423. T.Str:=IntToStr(I+1);
  2424. end;
  2425. end;
  2426. Procedure TTestCollectionStream.TestEmpty;
  2427. Var
  2428. CA,CB : TCollComp;
  2429. begin
  2430. CA:=CreateColl(0);
  2431. try
  2432. CB:=EmptyComp;
  2433. Try
  2434. CB.FromStream(CA.ToStream);
  2435. CompareColl(CA.MyColl,CB.MyColl);
  2436. Finally
  2437. CB.Free;
  2438. end;
  2439. Finally
  2440. CA.Free;
  2441. end;
  2442. end;
  2443. Procedure TTestCollectionStream.TestNr(ACount : Integer);
  2444. Var
  2445. CA,CB : TCollComp;
  2446. begin
  2447. CA:=CreateColl(ACount);
  2448. try
  2449. CB:=EmptyComp;
  2450. Try
  2451. CB.FromStream(CA.ToStream);
  2452. CompareColl(CA.MyColl,CB.MyColl);
  2453. Finally
  2454. CB.Free;
  2455. end;
  2456. Finally
  2457. CA.Free;
  2458. end;
  2459. end;
  2460. Procedure TTestCollectionStream.TestClear;
  2461. Var
  2462. CA,CB : TCollComp;
  2463. begin
  2464. CA:=CreateColl(3);
  2465. try
  2466. CB:=CreateColl(1);
  2467. CB.Name:='';
  2468. Try
  2469. // CB collection should be cleared before loading.
  2470. CB.FromStream(CA.ToStream);
  2471. CompareColl(CA.MyColl,CB.MyColl);
  2472. Finally
  2473. CB.Free;
  2474. end;
  2475. Finally
  2476. CA.Free;
  2477. end;
  2478. end;
  2479. Procedure TTestCollectionStream.Test1;
  2480. begin
  2481. TestNr(1);
  2482. end;
  2483. Procedure TTestCollectionStream.Test2;
  2484. begin
  2485. TestNr(2);
  2486. end;
  2487. Procedure TTestCollectionStream.Test3;
  2488. begin
  2489. TestNr(3);
  2490. end;
  2491. begin
  2492. RegisterTests([TTestComponentStream,TTestCollectionStream]);
  2493. end.