IdTestObjs.pas 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. unit IdTestObjs;
  2. interface
  3. uses
  4. IdSys,
  5. IdTest,
  6. IdStream,
  7. IdGlobal,
  8. IdObjs;
  9. type
  10. TIdTestNativeComponent = class(TIdTest)
  11. published
  12. procedure TestOwner;
  13. end;
  14. TIdTestStringList = class(TIdTest)
  15. published
  16. procedure TestBasic;
  17. end;
  18. TIdTestStringStream = class(TIdTest)
  19. published
  20. procedure TestStream;
  21. end;
  22. TIdTestMemoryStream = class(TIdTest)
  23. published
  24. procedure TestStream;
  25. end;
  26. implementation
  27. procedure TIdTestStringStream.TestStream;
  28. var
  29. aStream:TIdStringStream;
  30. const
  31. cStr='123';
  32. cStr2='abc';
  33. begin
  34. aStream:=TIdStringStream.Create(cStr);
  35. try
  36. //check initial value
  37. Assert(aStream.DataString=cStr);
  38. //check reset
  39. aStream.Size:=0;
  40. Assert(aStream.DataString='');
  41. //check write
  42. aStream.WriteString(cStr);
  43. Assert(aStream.DataString=cStr);
  44. //check append
  45. aStream.WriteString(cStr);
  46. Assert(aStream.DataString=cStr+cStr);
  47. //check overwrite
  48. //win32 replaces the entire string
  49. // do we need it?
  50. // aStream.Position:=0;
  51. // aStream.WriteString(cStr2);
  52. // Assert(aStream.Position = Length(cStr2), Sys.IntToStr(aStream.Position));
  53. // Assert(aStream.DataString=cStr2, AStream.DataString);
  54. finally
  55. Sys.FreeAndNil(aStream);
  56. end;
  57. end;
  58. procedure TIdTestMemoryStream.TestStream;
  59. var
  60. aStream:TIdMemoryStream;
  61. TempBuff: TIdBytes;
  62. const
  63. cStr='123';
  64. cStr2='abc';
  65. begin
  66. aStream:=TIdMemoryStream.Create();
  67. try
  68. //check write
  69. TempBuff := ToBytes(cStr);
  70. TIdStreamHelper.Write(AStream, TempBuff, Length(TempBuff));
  71. Assert(aStream.Size = 3, Sys.IntToStr(aStream.Size));
  72. //check append
  73. TIdStreamHelper.Write(AStream, TempBuff, Length(TempBuff));
  74. Assert(aStream.Size = 6, Sys.IntToStr(aStream.Size));
  75. //check overwrite
  76. //win32 replaces the entire string
  77. aStream.Position:=0;
  78. TempBuff := ToBytes(cStr2);
  79. TIdStreamHelper.Write(AStream, TempBuff, Length(TempBuff));
  80. Assert(aStream.Position = Length(cStr2), Sys.IntToStr(aStream.Position));
  81. Assert(AStream.Size = Length(cStr2) + Length(cStr), Sys.IntToStr(AStream.Size));
  82. finally
  83. Sys.FreeAndNil(aStream);
  84. end;
  85. end;
  86. procedure TIdTestNativeComponent.TestOwner;
  87. //eg used to cause stack overflow in .net
  88. //also want to test when owner<>nil. eg add a c2.
  89. begin
  90. {var
  91. c,o:TIdNativeComponent;
  92. begin
  93. c:=TIdNativeComponent.Create;
  94. try
  95. o:=c.Owner;
  96. Assert(o=nil);
  97. finally
  98. sys.FreeAndNil(c);
  99. end;}
  100. end;
  101. procedure TIdTestStringList.TestBasic;
  102. var
  103. l:TIdStringList;
  104. s:string;
  105. const
  106. cStr='123';
  107. cComma='1,2,3';
  108. cMulti='1'+#13#10+'2'+#13#10+'3';
  109. begin
  110. l:=TIdStringList.Create;
  111. try
  112. l.Text := '';
  113. Assert(l.Count = 0, '0:' + Sys.IntToStr(l.Count));
  114. Assert(l.CommaText = '', '1:' + l.CommaText);
  115. Assert(l.Text = '', '2:' + l.Text);
  116. l.Text:=cStr;
  117. s:=l.CommaText;
  118. Assert(s=cStr, '3:' + s);
  119. l.Text:=cMulti;
  120. s:=l.CommaText;
  121. Assert(s=cComma, '4:' + s);
  122. l.CommaText:=cComma;
  123. s:=l.Text;
  124. Assert(s=cMulti+#13#10, '5:' + s);
  125. finally
  126. Sys.FreeAndNil(l);
  127. end;
  128. end;
  129. initialization
  130. TIdTest.RegisterTest(TIdTestStringList);
  131. //TIdTest.RegisterTest(TIdTestNativeComponent);
  132. TIdTest.RegisterTest(TIdTestMemoryStream);
  133. TIdTest.RegisterTest(TIdTestStringStream);
  134. end.