tccompstreaming.pp 65 KB

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