|
@@ -13,8 +13,10 @@ unit TCFresnelBaseEvents;
|
|
|
|
|
|
{$mode objfpc}
|
|
|
{$H+}
|
|
|
+{$IF FPC_FULLVERSION>30300}
|
|
|
{$modeswitch functionreferences}
|
|
|
{$modeswitch nestedprocvars}
|
|
|
+{$ENDIF}
|
|
|
|
|
|
interface
|
|
|
|
|
@@ -113,13 +115,17 @@ type
|
|
|
aEvent: TAbstractEvent; aIndex, aCount: Integer);
|
|
|
private
|
|
|
FDispatcher: TEventDispatcher;
|
|
|
+ {$IFDEF HasFunctionReferences}
|
|
|
FRHandler:TEventHandlerRef;
|
|
|
FRHandler2:TEventHandlerRef;
|
|
|
+ {$ENDIF}
|
|
|
FEvents : Array[1..3] of TAbstractEvent;
|
|
|
FSecondEvent : TAbstractEvent;
|
|
|
|
|
|
Procedure RegisterEvent2P;
|
|
|
+ {$IFDEF HasFunctionReferences}
|
|
|
Procedure RegisterEvent2R;
|
|
|
+ {$ENDIF}
|
|
|
Procedure RegisterEvent2O;
|
|
|
protected
|
|
|
Procedure SetUp; override;
|
|
@@ -131,41 +137,61 @@ type
|
|
|
function RegisterHandlerO2(aEventName: String): TEventHandlerItem;
|
|
|
function RegisterHandlerP(aEventName: String): TEventHandlerItem;
|
|
|
function RegisterHandlerP2(aEventName: String): TEventHandlerItem;
|
|
|
+ {$IFDEF HasFunctionReferences}
|
|
|
function RegisterHandlerR(aEventName: String): TEventHandlerItem;
|
|
|
function RegisterHandlerR2(aEventName: String): TEventHandlerItem;
|
|
|
+ {$ENDIF}
|
|
|
Property Dispatcher : TEventDispatcher Read FDispatcher;
|
|
|
Published
|
|
|
Procedure TestHookup;
|
|
|
Procedure TestRegisterHandlerO;
|
|
|
+ {$IFDEF HasFunctionReferences}
|
|
|
Procedure TestRegisterHandlerR;
|
|
|
+ {$ENDIF}
|
|
|
Procedure TestRegisterHandlerP;
|
|
|
Procedure TestRegisterHandlerOUnknown;
|
|
|
+ {$IFDEF HasFunctionReferences}
|
|
|
Procedure TestRegisterHandlerRUnknown;
|
|
|
+ {$ENDIF}
|
|
|
Procedure TestRegisterHandlerPUnknown;
|
|
|
Procedure TestUnRegisterHandlerO;
|
|
|
+ {$IFDEF HasFunctionReferences}
|
|
|
Procedure TestUnRegisterHandlerR;
|
|
|
+ {$ENDIF}
|
|
|
Procedure TestUnRegisterHandlerP;
|
|
|
Procedure TestUnRegisterHandlerOName;
|
|
|
+ {$IFDEF HasFunctionReferences}
|
|
|
Procedure TestUnRegisterHandlerRName;
|
|
|
+ {$ENDIF}
|
|
|
Procedure TestUnRegisterHandlerPName;
|
|
|
Procedure TestUnRegisterHandlerOUnknownEvent;
|
|
|
+ {$IFDEF HasFunctionReferences}
|
|
|
Procedure TestUnRegisterHandlerRUnknownEvent;
|
|
|
+ {$ENDIF}
|
|
|
Procedure TestUnRegisterHandlerPUnknownEvent;
|
|
|
Procedure TestUnRegisterHandlerOUnknownHandler;
|
|
|
+ {$IFDEF HasFunctionReferences}
|
|
|
Procedure TestUnRegisterHandlerRUnknownHandler;
|
|
|
+ {$ENDIF}
|
|
|
Procedure TestUnRegisterHandlerPUnknownHandler;
|
|
|
Procedure TestUnRegisterHandlerOAllName;
|
|
|
+ {$IFDEF HasFunctionReferences}
|
|
|
Procedure TestUnRegisterHandlerRAllName;
|
|
|
+ {$ENDIF}
|
|
|
Procedure TestUnRegisterHandlerPAllName;
|
|
|
Procedure TestUnRegisterHandlerMixedAllName;
|
|
|
Procedure TestUnRegisterHandlerOAllHandler;
|
|
|
+ {$IFDEF HasFunctionReferences}
|
|
|
Procedure TestUnRegisterHandlerRAllHandler;
|
|
|
+ {$ENDIF}
|
|
|
Procedure TestUnRegisterHandlerPAllHandler;
|
|
|
Procedure TestCreateEventByName;
|
|
|
Procedure TestCreateEventByID;
|
|
|
Procedure TestDispatchEvent;
|
|
|
Procedure TestDispatchEventProc;
|
|
|
+ {$IFDEF HasFunctionReferences}
|
|
|
Procedure TestDispatchEventRef;
|
|
|
+ {$ENDIF}
|
|
|
Procedure TestDispatchEvent2Handlers;
|
|
|
Procedure TestDispatchEvent2MixedHandlers;
|
|
|
Procedure TestDispatchEventInEvent;
|
|
@@ -183,7 +209,9 @@ var
|
|
|
|
|
|
begin
|
|
|
inherited SetUp;
|
|
|
+ {$IFDEF HasFunctionReferences}
|
|
|
FRHandler:=Nil;
|
|
|
+ {$ENDIF}
|
|
|
FDispatcher:=TEventDispatcher.Create(Self);
|
|
|
FDispatcher.Registry:=Self.Registry;
|
|
|
For H in THandlerType do
|
|
@@ -199,7 +227,9 @@ procedure TCEventsDispatcher.TearDown;
|
|
|
var
|
|
|
I : Integer;
|
|
|
begin
|
|
|
+ {$IFDEF HasFunctionReferences}
|
|
|
FRHandler:=Nil;
|
|
|
+ {$ENDIF}
|
|
|
FreeAndNil(FDispatcher);
|
|
|
for I:=1 to 3 do
|
|
|
FreeAndNil(FEvents[i]);
|
|
@@ -238,10 +268,12 @@ begin
|
|
|
RegisterHandlerP('event2');
|
|
|
end;
|
|
|
|
|
|
+{$IFDEF HasFunctionReferences}
|
|
|
procedure TCEventsDispatcher.RegisterEvent2R;
|
|
|
begin
|
|
|
RegisterHandlerR('event2');
|
|
|
end;
|
|
|
+{$ENDIF}
|
|
|
|
|
|
procedure TCEventsDispatcher.RegisterEvent2O;
|
|
|
begin
|
|
@@ -297,6 +329,7 @@ begin
|
|
|
Result:=Dispatcher.RegisterHandler(@EventHandlerP2,aEventName);
|
|
|
end;
|
|
|
|
|
|
+{$IFDEF HasFunctionReferences}
|
|
|
function TCEventsDispatcher.RegisterHandlerR(aEventName: String) : TEventHandlerItem;
|
|
|
|
|
|
Procedure EventHandlerR(aEvent : TAbstractEVent);
|
|
@@ -323,6 +356,7 @@ begin
|
|
|
FRHandler2:=@EventHandlerR2;
|
|
|
Result:=Dispatcher.RegisterHandler(FRHandler,aEventName);
|
|
|
end;
|
|
|
+{$ENDIF}
|
|
|
|
|
|
procedure TCEventsDispatcher.TestHookup;
|
|
|
begin
|
|
@@ -344,6 +378,7 @@ begin
|
|
|
AssertEquals('Count',1,Dispatcher.Count);
|
|
|
end;
|
|
|
|
|
|
+{$IFDEF HasFunctionReferences}
|
|
|
procedure TCEventsDispatcher.TestRegisterHandlerR;
|
|
|
Var
|
|
|
Itm : TEventHandlerItem;
|
|
@@ -356,6 +391,7 @@ begin
|
|
|
AssertEquals('Event name','event1',Itm.EventName);
|
|
|
AssertEquals('Count',1,Dispatcher.Count);
|
|
|
end;
|
|
|
+{$ENDIF}
|
|
|
|
|
|
procedure TCEventsDispatcher.TestRegisterHandlerP;
|
|
|
Var
|
|
@@ -376,11 +412,13 @@ begin
|
|
|
AssertException('Not known',EEvents,@RegisterEvent2O,'Unknown event name: event2');
|
|
|
end;
|
|
|
|
|
|
+{$IFDEF HasFunctionReferences}
|
|
|
procedure TCEventsDispatcher.TestRegisterHandlerRUnknown;
|
|
|
begin
|
|
|
Register1;
|
|
|
AssertException('Not known',EEvents,@RegisterEvent2R,'Unknown event name: event2');
|
|
|
end;
|
|
|
+{$ENDIF}
|
|
|
|
|
|
procedure TCEventsDispatcher.TestRegisterHandlerPUnknown;
|
|
|
begin
|
|
@@ -402,6 +440,7 @@ begin
|
|
|
AssertEquals('Dispatcher count',0,Dispatcher.Count);
|
|
|
end;
|
|
|
|
|
|
+{$IFDEF HasFunctionReferences}
|
|
|
procedure TCEventsDispatcher.TestUnRegisterHandlerR;
|
|
|
Var
|
|
|
Itm : TEventHandlerItem;
|
|
@@ -414,6 +453,7 @@ begin
|
|
|
Dispatcher.UnregisterHandler(Itm);
|
|
|
AssertEquals('Dispatcher count',0,Dispatcher.Count);
|
|
|
end;
|
|
|
+{$ENDIF}
|
|
|
|
|
|
procedure TCEventsDispatcher.TestUnRegisterHandlerP;
|
|
|
|
|
@@ -444,6 +484,7 @@ begin
|
|
|
AssertEquals('Dispatcher count',0,Dispatcher.Count);
|
|
|
end;
|
|
|
|
|
|
+{$IFDEF HasFunctionReferences}
|
|
|
procedure TCEventsDispatcher.TestUnRegisterHandlerRName;
|
|
|
Var
|
|
|
Itm : TEventHandlerItem;
|
|
@@ -455,8 +496,8 @@ begin
|
|
|
AssertEquals('Dispatcher count',1,Dispatcher.Count);
|
|
|
Dispatcher.UnregisterHandler(FRHandler,'event1');
|
|
|
AssertEquals('Dispatcher count',0,Dispatcher.Count);
|
|
|
-
|
|
|
end;
|
|
|
+{$ENDIF}
|
|
|
|
|
|
procedure TCEventsDispatcher.TestUnRegisterHandlerPName;
|
|
|
|
|
@@ -487,6 +528,7 @@ begin
|
|
|
AssertEquals('Dispatcher count',1,Dispatcher.Count);
|
|
|
end;
|
|
|
|
|
|
+{$IFDEF HasFunctionReferences}
|
|
|
procedure TCEventsDispatcher.TestUnRegisterHandlerRUnknownEvent;
|
|
|
Var
|
|
|
Itm : TEventHandlerItem;
|
|
@@ -501,10 +543,9 @@ begin
|
|
|
Dispatcher.UnregisterHandler(FRHandler,'event2');
|
|
|
AssertEquals('Dispatcher count',1,Dispatcher.Count);
|
|
|
end;
|
|
|
+{$ENDIF}
|
|
|
|
|
|
procedure TCEventsDispatcher.TestUnRegisterHandlerPUnknownEvent;
|
|
|
-
|
|
|
-
|
|
|
begin
|
|
|
Register1;
|
|
|
Register2;
|
|
@@ -526,6 +567,7 @@ begin
|
|
|
AssertEquals('Dispatcher count after',2,Dispatcher.Count);
|
|
|
end;
|
|
|
|
|
|
+{$IFDEF HasFunctionReferences}
|
|
|
procedure TCEventsDispatcher.TestUnRegisterHandlerRUnknownHandler;
|
|
|
|
|
|
begin
|
|
@@ -537,6 +579,7 @@ begin
|
|
|
Dispatcher.UnregisterHandler(FRHandler2,'event1');
|
|
|
AssertEquals('Dispatcher count after',2,Dispatcher.Count);
|
|
|
end;
|
|
|
+{$ENDIF}
|
|
|
|
|
|
procedure TCEventsDispatcher.TestUnRegisterHandlerPUnknownHandler;
|
|
|
Var
|
|
@@ -568,6 +611,7 @@ begin
|
|
|
AssertEquals('Dispatcher count after',0,Dispatcher.Count);
|
|
|
end;
|
|
|
|
|
|
+{$IFDEF HasFunctionReferences}
|
|
|
procedure TCEventsDispatcher.TestUnRegisterHandlerRAllName;
|
|
|
begin
|
|
|
Register1;
|
|
@@ -577,8 +621,8 @@ begin
|
|
|
AssertEquals('Dispatcher count before',2,Dispatcher.Count);
|
|
|
Dispatcher.UnregisterHandler('event1');
|
|
|
AssertEquals('Dispatcher count after',0,Dispatcher.Count);
|
|
|
-
|
|
|
end;
|
|
|
+{$ENDIF}
|
|
|
|
|
|
procedure TCEventsDispatcher.TestUnRegisterHandlerPAllName;
|
|
|
begin
|
|
@@ -614,6 +658,7 @@ begin
|
|
|
|
|
|
end;
|
|
|
|
|
|
+{$IFDEF HasFunctionReferences}
|
|
|
procedure TCEventsDispatcher.TestUnRegisterHandlerRAllHandler;
|
|
|
begin
|
|
|
Register1;
|
|
@@ -624,6 +669,7 @@ begin
|
|
|
Dispatcher.UnregisterHandler(FRHandler);
|
|
|
AssertEquals('Dispatcher count after',0,Dispatcher.Count);
|
|
|
end;
|
|
|
+{$ENDIF}
|
|
|
|
|
|
procedure TCEventsDispatcher.TestUnRegisterHandlerPAllHandler;
|
|
|
begin
|
|
@@ -695,6 +741,7 @@ begin
|
|
|
AssertCalled('Event handler called',htProc,Evt,1,1);
|
|
|
end;
|
|
|
|
|
|
+{$IFDEF HasFunctionReferences}
|
|
|
procedure TCEventsDispatcher.TestDispatchEventRef;
|
|
|
|
|
|
Var
|
|
@@ -714,6 +761,7 @@ begin
|
|
|
AssertCalled('Event handler called',htRef,Evt,1,1);
|
|
|
|
|
|
end;
|
|
|
+{$ENDIF}
|
|
|
|
|
|
procedure TCEventsDispatcher.TestDispatchEvent2Handlers;
|
|
|
Var
|