CoderSpeed.pas 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. { $HDR$}
  2. {**********************************************************************}
  3. { Unit archived using Team Coherence }
  4. { Team Coherence is Copyright 2002 by Quality Software Components }
  5. { }
  6. { For further information / comments, visit our WEB site at }
  7. { http://www.TeamCoherence.com }
  8. {**********************************************************************}
  9. {}
  10. { $Log: 20212: CoderSpeed.pas
  11. {
  12. { Rev 1.4 2003.06.24 9:00:50 PM czhower
  13. { Updated to match Bubelen event signature change.
  14. }
  15. {
  16. { Rev 1.3 2003.06.14 11:09:58 PM czhower
  17. { Changed category to Coders
  18. }
  19. {
  20. { Rev 1.2 2003.06.13 4:57:28 PM czhower
  21. { Added UUE
  22. }
  23. {
  24. { Rev 1.1 2003.06.13 2:26:00 PM czhower
  25. { update
  26. }
  27. {
  28. { Rev 1.0 2003.06.13 1:27:44 PM czhower
  29. { Initial check in
  30. }
  31. unit CoderSpeed;
  32. interface
  33. uses
  34. IdCoder, SysUtils, Classes, BXBubble;
  35. type
  36. TdmCoderSpeed = class(TDataModule)
  37. bublMime: TBXBubble;
  38. bublUUE: TBXBubble;
  39. procedure bublMimeTest(Sender: TBXBubble);
  40. procedure bublUUETest(Sender: TBXBubble);
  41. private
  42. protected
  43. procedure TestDecode(ADecodeClass: TIdDecoderClass; const ATestString: string);
  44. public
  45. end;
  46. var
  47. dmCoderSpeed: TdmCoderSpeed;
  48. implementation
  49. {$R *.dfm}
  50. uses
  51. IdCoderMime, IdCoderUUE;
  52. const
  53. DecodeLines = 100 * 1000;
  54. type
  55. TDummyStream = class(TStream)
  56. public
  57. function Read(var Buffer; Count: Longint): Longint; override;
  58. function Write(const Buffer; Count: Longint): Longint; override;
  59. end;
  60. procedure TdmCoderSpeed.bublMimeTest(Sender: TBXBubble);
  61. begin
  62. TestDecode(TIdDecoderMime
  63. , 'W0Nsb3NlZCBGaWxlc10NCkZpbGVfMD1Tb3VyY2VNb2R1bGUs'
  64. + 'J0M6XERPQ1VNRX4xXEFETUlOSX4x');
  65. end;
  66. { TDummyStream }
  67. function TDummyStream.Read(var Buffer; Count: Integer): Longint;
  68. begin
  69. Result := 0;
  70. end;
  71. function TDummyStream.Write(const Buffer; Count: Integer): Longint;
  72. begin
  73. Result := Count;
  74. end;
  75. procedure TdmCoderSpeed.TestDecode(ADecodeClass: TIdDecoderClass;
  76. const ATestString: string);
  77. var
  78. i: Integer;
  79. LDestStream: TDummyStream;
  80. begin
  81. with ADecodeClass.Create(nil) do try
  82. // Dummy stream so our measurements are not hindered by output speed
  83. LDestStream := TDummyStream.Create; try
  84. DecodeBegin(LDestStream);
  85. for i := 1 to DecodeLines do begin
  86. Decode(ATestString);
  87. end;
  88. DecodeEnd;
  89. finally FreeAndNil(LDestStream); end;
  90. finally Free; end;
  91. end;
  92. procedure TdmCoderSpeed.bublUUETest(Sender: TBXBubble);
  93. begin
  94. TestDecode(TIdDecoderUUE
  95. // Note the embedded ' below
  96. , 'M;B!O<F1E<B!T:&%T(''1H92!R96-O<F0@;V8@=&AI<R!I;F1I=FED=6%L(&UA')
  97. end;
  98. end.