testbrookapplication.pas 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. unit testbrookapplication;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. BrookApplication, BrookClasses, fpcunit, testregistry, Classes;
  6. type
  7. { TApp }
  8. TApp = class(TComponent)
  9. private
  10. FTest: Boolean;
  11. public
  12. property Test: Boolean read FTest write FTest;
  13. end;
  14. { TBrokerApp }
  15. TBrokerApp = class(TBrookInterfacedObject, IBrookApplication)
  16. private
  17. FTerminated: Boolean;
  18. FApp: TApp;
  19. public
  20. constructor Create;
  21. destructor Destroy; override;
  22. procedure CreateForm(AInstanceClass: TComponentClass; out AReference);
  23. function GetTerminated: Boolean;
  24. procedure Terminate;
  25. function Instance: TObject;
  26. procedure Run;
  27. end;
  28. { TTestBrookApplication }
  29. TTestBrookApplication = class(TTestCase)
  30. published
  31. procedure TestCreateForm;
  32. procedure TestInstance;
  33. procedure TestRun;
  34. procedure TestTerminate;
  35. procedure GetTerminated;
  36. end;
  37. implementation
  38. { TBrokerApp }
  39. constructor TBrokerApp.Create;
  40. begin
  41. FApp := TApp.Create(nil);
  42. end;
  43. destructor TBrokerApp.Destroy;
  44. begin
  45. FApp.Free;
  46. inherited Destroy;
  47. end;
  48. procedure TBrokerApp.CreateForm(AInstanceClass: TComponentClass; out AReference);
  49. var
  50. r: TComponent absolute AReference;
  51. begin
  52. r := AInstanceClass.Create(nil);
  53. FApp.InsertComponent(r);
  54. end;
  55. function TBrokerApp.GetTerminated: Boolean;
  56. begin
  57. Result := FTerminated;
  58. end;
  59. procedure TBrokerApp.Terminate;
  60. begin
  61. FTerminated := True;
  62. end;
  63. function TBrokerApp.Instance: TObject;
  64. begin
  65. Result := FApp;
  66. end;
  67. procedure TBrokerApp.Run;
  68. begin
  69. FApp.Test := True;
  70. end;
  71. { TTestBrookApplication }
  72. procedure TTestBrookApplication.TestCreateForm;
  73. begin
  74. AssertTrue(Assigned(TApp(BrookApp.Instance).FindComponent('MyComp1')));
  75. end;
  76. procedure TTestBrookApplication.TestInstance;
  77. begin
  78. AssertTrue('Invalid instance', BrookApp.Instance.ClassName = 'TApp');
  79. end;
  80. procedure TTestBrookApplication.TestRun;
  81. var
  82. ap: TObject;
  83. begin
  84. BrookApp.Run;
  85. ap := BrookApp.Instance;
  86. AssertTrue('No running', (ap is TApp) and TApp(ap).Test);
  87. end;
  88. procedure TTestBrookApplication.TestTerminate;
  89. begin
  90. BrookApp.Terminate;
  91. end;
  92. procedure TTestBrookApplication.GetTerminated;
  93. begin
  94. AssertTrue(BrookApp.Terminated);
  95. end;
  96. type
  97. TMyComp = class(TComponent)
  98. end;
  99. var
  100. MyComp: TMyComp;
  101. initialization
  102. BrookRegisterApp(TBrokerApp.Create);
  103. BrookApp.CreateForm(TMyComp, MyComp);
  104. MyComp.Name := 'MyComp1';
  105. RegisterTest(TTestBrookApplication);
  106. end.