IdTestTrivialFTP.pas 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. unit IdTestTrivialFTP;
  2. interface
  3. uses
  4. IdTest,
  5. IdObjs,
  6. IdSys,
  7. IdGlobal,
  8. IdTrivialFTP,
  9. IdTrivialFTPServer;
  10. type
  11. TIdTestTrivialFTP = class(TIdTest)
  12. private
  13. procedure CallbackReadFile(Sender: TObject; var FileName: String; const PeerInfo: TPeerInfo;
  14. var GrantAccess: Boolean; var AStream: TIdStream; var FreeStreamOnComplete: Boolean);
  15. published
  16. procedure TestBasic;
  17. end;
  18. implementation
  19. const
  20. cFile='file.txt';
  21. cContent='12345';
  22. procedure TIdTestTrivialFTP.CallbackReadFile(Sender: TObject;
  23. var FileName: String; const PeerInfo: TPeerInfo;
  24. var GrantAccess: Boolean; var AStream: TIdStream;
  25. var FreeStreamOnComplete: Boolean);
  26. begin
  27. if FileName=cFile then
  28. begin
  29. AStream:=TIdStringStream.Create(cContent);
  30. end;
  31. end;
  32. procedure TIdTestTrivialFTP.TestBasic;
  33. var
  34. c:TIdTrivialFTP;
  35. s:TIdTrivialFTPServer;
  36. aStream:TIdMemoryStream;
  37. aContent:string;
  38. begin
  39. c:=TIdTrivialFTP.Create;
  40. s:=TIdTrivialFTPServer.Create;
  41. aStream:=TIdMemoryStream.Create;
  42. try
  43. s.OnReadFile:=Self.CallbackReadFile;
  44. //set ThreadedEvent, else theres a deadlock because we do a blocking read soon
  45. s.ThreadedEvent:=True;
  46. s.Active:=True;
  47. c.ReceiveTimeout:=1000;
  48. c.Get(cFile,aStream);
  49. aStream.Position:=0;
  50. aContent:=ReadStringFromStream(aStream);
  51. Assert(aContent=cContent);
  52. finally
  53. sys.FreeAndNil(aStream);
  54. Sys.FreeAndNil(c);
  55. Sys.FreeAndNil(s);
  56. end;
  57. end;
  58. initialization
  59. TIdTest.RegisterTest(TIdTestTrivialFTP);
  60. end.