Refactoring
This commit is contained in:
@@ -243,7 +243,7 @@ var
|
||||
LGateLatch: IMycLatch;
|
||||
LSub1, LSub2: IMycSubscriber; // To hold the TLatchNotifierSubscriber instances
|
||||
LInitStateP1, LInitStateP2: IMycLatch;
|
||||
Subscriptions: array[1..2] of TMycSubscription; // To manage subscriptions
|
||||
Subscriptions: array[1..2] of TState.TSubscription; // To manage subscriptions
|
||||
const
|
||||
CMainFutureResult = 'AllPrerequisitesCompleted';
|
||||
begin
|
||||
|
||||
@@ -333,7 +333,7 @@ const
|
||||
StressTestFutureCount = 100; // Number of futures for the stress test
|
||||
var
|
||||
Futures: TArray<TFuture<Integer>>;
|
||||
doneStates: TArray<IMycState>;
|
||||
doneStates: TArray<TState>;
|
||||
combinedStateAll: IMycState;
|
||||
masterFuture: TFuture<Boolean>;
|
||||
i: Integer;
|
||||
@@ -397,8 +397,8 @@ const
|
||||
QuickFutureIndex = StressTestFutureCount div 3; // Designate one future to be quicker
|
||||
var
|
||||
Futures: TArray<TFuture<Integer>>;
|
||||
doneStates: TArray<IMycState>;
|
||||
combinedStateAny: IMycState;
|
||||
doneStates: TArray<TState>;
|
||||
combinedStateAny: TState;
|
||||
masterFuture: TFuture<Boolean>;
|
||||
i: Integer;
|
||||
isAtLeastOneSet: Boolean;
|
||||
|
||||
+14
-14
@@ -189,7 +189,7 @@ procedure TTestMycDirtyFlag.TestSubscribe_ToAlreadyDirtyFlag_NotifiesSubscriberI
|
||||
var
|
||||
dirtyFlag: IMycDirty;
|
||||
subscriber: TMockSubscriber;
|
||||
subscription: TMycSubscription;
|
||||
subscription: TState.TSubscription;
|
||||
begin
|
||||
dirtyFlag := CreateAndPrepareDirtyFlag(True); // Start dirty
|
||||
subscriber := TMockSubscriber.Create;
|
||||
@@ -204,7 +204,7 @@ procedure TTestMycDirtyFlag.TestSubscribe_ToCleanFlag_DoesNotNotifySubscriberImm
|
||||
var
|
||||
dirtyFlag: IMycDirty;
|
||||
subscriber: TMockSubscriber;
|
||||
subscription: TMycSubscription;
|
||||
subscription: TState.TSubscription;
|
||||
begin
|
||||
dirtyFlag := CreateAndPrepareDirtyFlag(False); // Start clean
|
||||
subscriber := TMockSubscriber.Create;
|
||||
@@ -219,7 +219,7 @@ procedure TTestMycDirtyFlag.TestSubscriber_Notified_WhenFlagTransitionsToDirty;
|
||||
var
|
||||
dirtyFlag: IMycDirty;
|
||||
subscriber: TMockSubscriber;
|
||||
subscription: TMycSubscription;
|
||||
subscription: TState.TSubscription;
|
||||
begin
|
||||
dirtyFlag := CreateAndPrepareDirtyFlag(False); // Start clean
|
||||
subscriber := TMockSubscriber.Create;
|
||||
@@ -236,7 +236,7 @@ procedure TTestMycDirtyFlag.TestSubscriber_NotNotified_WhenSettingAlreadyDirtyFl
|
||||
var
|
||||
dirtyFlag: IMycDirty;
|
||||
subscriber: TMockSubscriber;
|
||||
subscription: TMycSubscription;
|
||||
subscription: TState.TSubscription;
|
||||
begin
|
||||
dirtyFlag := CreateAndPrepareDirtyFlag(True); // Start dirty
|
||||
subscriber := TMockSubscriber.Create;
|
||||
@@ -253,7 +253,7 @@ procedure TTestMycDirtyFlag.TestSubscriber_NotNotified_ByResetAction;
|
||||
var
|
||||
dirtyFlag: IMycDirty;
|
||||
subscriber: TMockSubscriber;
|
||||
subscription: TMycSubscription;
|
||||
subscription: TState.TSubscription;
|
||||
begin
|
||||
dirtyFlag := CreateAndPrepareDirtyFlag(True); // Start dirty
|
||||
subscriber := TMockSubscriber.Create;
|
||||
@@ -271,7 +271,7 @@ procedure TTestMycDirtyFlag.TestMultipleSubscribers_Notified_WhenFlagTransitions
|
||||
var
|
||||
dirtyFlag: IMycDirty;
|
||||
sub1, sub2: TMockSubscriber;
|
||||
subscription1, subscription2: TMycSubscription;
|
||||
subscription1, subscription2: TState.TSubscription;
|
||||
begin
|
||||
dirtyFlag := CreateAndPrepareDirtyFlag(False); // Start clean
|
||||
sub1 := TMockSubscriber.Create;
|
||||
@@ -289,7 +289,7 @@ procedure TTestMycDirtyFlag.TestUnsubscribe_SubscriberNotNotified;
|
||||
var
|
||||
dirtyFlag: IMycDirty;
|
||||
subscriber: TMockSubscriber;
|
||||
subscription: TMycSubscription;
|
||||
subscription: TState.TSubscription;
|
||||
begin
|
||||
dirtyFlag := CreateAndPrepareDirtyFlag(False); // Start clean
|
||||
subscriber := TMockSubscriber.Create;
|
||||
@@ -310,7 +310,7 @@ procedure TTestMycDirtyFlag.TestChain_A_Notifies_B_SimplePropagation;
|
||||
var
|
||||
flagA, flagB: IMycDirty;
|
||||
subToB: TMockSubscriber;
|
||||
subscriptionA_B, subscriptionMock_B: TMycSubscription;
|
||||
subscriptionA_B, subscriptionMock_B: TState.TSubscription;
|
||||
begin
|
||||
flagA := CreateAndPrepareDirtyFlag(False); // A starts clean
|
||||
flagB := CreateAndPrepareDirtyFlag(False); // B starts clean
|
||||
@@ -330,7 +330,7 @@ procedure TTestMycDirtyFlag.TestChain_A_Notifies_B_Notifies_C_SimplePropagation;
|
||||
var
|
||||
flagA, flagB, flagC: IMycDirty;
|
||||
subToC: TMockSubscriber;
|
||||
subscriptionB_A, subscriptionC_B, subscriptionMock_C: TMycSubscription;
|
||||
subscriptionB_A, subscriptionC_B, subscriptionMock_C: TState.TSubscription;
|
||||
begin
|
||||
flagA := CreateAndPrepareDirtyFlag(False);
|
||||
flagB := CreateAndPrepareDirtyFlag(False);
|
||||
@@ -355,7 +355,7 @@ procedure TTestMycDirtyFlag.TestChain_A_B_ResetB_RetriggerA_BStaysCleanIfANotCha
|
||||
var
|
||||
flagA, flagB: IMycDirty;
|
||||
subToB: TMockSubscriber;
|
||||
subscriptionA_B, subscriptionMock_B: TMycSubscription;
|
||||
subscriptionA_B, subscriptionMock_B: TState.TSubscription;
|
||||
begin
|
||||
flagA := CreateAndPrepareDirtyFlag(False);
|
||||
flagB := CreateAndPrepareDirtyFlag(False);
|
||||
@@ -384,7 +384,7 @@ procedure TTestMycDirtyFlag.TestChain_A_B_ResetA_ThenTriggerA_FullPropagationToB
|
||||
var
|
||||
flagA, flagB: IMycDirty;
|
||||
subToB: TMockSubscriber;
|
||||
subscriptionA_B, subscriptionMock_B: TMycSubscription;
|
||||
subscriptionA_B, subscriptionMock_B: TState.TSubscription;
|
||||
begin
|
||||
flagA := CreateAndPrepareDirtyFlag(False);
|
||||
flagB := CreateAndPrepareDirtyFlag(False);
|
||||
@@ -413,7 +413,7 @@ procedure TTestMycDirtyFlag.TestChain_A_B_C_IntermediateBReset_RetriggerA_Propag
|
||||
var
|
||||
flagA, flagB, flagC: IMycDirty;
|
||||
subToC: TMockSubscriber;
|
||||
subscriptionB_A, subscriptionC_B, subscriptionMock_C: TMycSubscription;
|
||||
subscriptionB_A, subscriptionC_B, subscriptionMock_C: TState.TSubscription;
|
||||
begin
|
||||
flagA := CreateAndPrepareDirtyFlag(False);
|
||||
flagB := CreateAndPrepareDirtyFlag(False);
|
||||
@@ -452,7 +452,7 @@ procedure TTestMycDirtyFlag.TestChain_A_B_C_AllReset_RetriggerA_FullPropagation;
|
||||
var
|
||||
flagA, flagB, flagC: IMycDirty;
|
||||
subToC: TMockSubscriber;
|
||||
subscriptionB_A, subscriptionC_B, subscriptionMock_C: TMycSubscription;
|
||||
subscriptionB_A, subscriptionC_B, subscriptionMock_C: TState.TSubscription;
|
||||
begin
|
||||
flagA := CreateAndPrepareDirtyFlag(False);
|
||||
flagB := CreateAndPrepareDirtyFlag(False);
|
||||
@@ -492,7 +492,7 @@ procedure TTestMycDirtyFlag.TestChain_A_B_C_TriggerA_ResetA_TriggerA_EnsureCNoti
|
||||
var
|
||||
flagA, flagB, flagC: IMycDirty;
|
||||
subToC: TMockSubscriber;
|
||||
subscriptionB_A, subscriptionC_B, subscriptionMock_C: TMycSubscription;
|
||||
subscriptionB_A, subscriptionC_B, subscriptionMock_C: TState.TSubscription;
|
||||
begin
|
||||
flagA := CreateAndPrepareDirtyFlag(False);
|
||||
flagB := CreateAndPrepareDirtyFlag(False);
|
||||
|
||||
+14
-14
@@ -167,7 +167,7 @@ procedure TTestMycLatch.TestSubscriber_Single_IsNotifiedWhenLatchSet;
|
||||
var
|
||||
latch: IMycLatch;
|
||||
mockSub: TMockSubscriber;
|
||||
subscription: TMycSubscription;
|
||||
subscription: TState.TSubscription;
|
||||
begin
|
||||
latch := TLatch.Construct(1);
|
||||
mockSub := TMockSubscriber.Create;
|
||||
@@ -186,7 +186,7 @@ procedure TTestMycLatch.TestSubscriber_Multiple_AreNotifiedWhenLatchSet;
|
||||
var
|
||||
latch: IMycLatch;
|
||||
mockSub1, mockSub2, mockSub3: TMockSubscriber;
|
||||
sub1, sub2, sub3: TMycSubscription; // Keep subscriptions in scope
|
||||
sub1, sub2, sub3: TState.TSubscription; // Keep subscriptions in scope
|
||||
begin
|
||||
latch := TLatch.Construct(1);
|
||||
mockSub1 := TMockSubscriber.Create;
|
||||
@@ -208,7 +208,7 @@ procedure TTestMycLatch.TestSubscriber_NotNotified_BeforeLatchSet;
|
||||
var
|
||||
latch: IMycLatch;
|
||||
mockSub: TMockSubscriber;
|
||||
subscription: TMycSubscription;
|
||||
subscription: TState.TSubscription;
|
||||
begin
|
||||
latch := TLatch.Construct(2); // Count = 2
|
||||
mockSub := TMockSubscriber.Create;
|
||||
@@ -223,7 +223,7 @@ procedure TTestMycLatch.TestSubscriber_NotifiedOnlyOnce_AfterLatchSetAndUnadvise
|
||||
var
|
||||
latch: IMycLatch;
|
||||
mockSub: TMockSubscriber;
|
||||
subscription: TMycSubscription;
|
||||
subscription: TState.TSubscription;
|
||||
begin
|
||||
latch := TLatch.Construct(1);
|
||||
mockSub := TMockSubscriber.Create;
|
||||
@@ -240,7 +240,7 @@ procedure TTestMycLatch.TestSubscribe_ToAlreadySetLatch_NotifiesImmediately;
|
||||
var
|
||||
latch: IMycLatch;
|
||||
mockSub1, mockSub2: TMockSubscriber;
|
||||
subscription1, subscription2: TMycSubscription;
|
||||
subscription1, subscription2: TState.TSubscription;
|
||||
begin
|
||||
latch := TLatch.Construct(1); // Create with count 1
|
||||
mockSub1 := TMockSubscriber.Create;
|
||||
@@ -268,7 +268,7 @@ procedure TTestMycLatch.TestChaining_A_Notifies_B;
|
||||
var
|
||||
latchA, latchB: IMycLatch;
|
||||
mockSubForB: TMockSubscriber;
|
||||
subHandle_B_listens_A, subHandle_Mock_listens_B: TMycSubscription;
|
||||
subHandle_B_listens_A, subHandle_Mock_listens_B: TState.TSubscription;
|
||||
begin
|
||||
latchA := TLatch.Construct(1);
|
||||
latchB := TLatch.Construct(1); // latchB is an IMycSubscriber
|
||||
@@ -293,7 +293,7 @@ procedure TTestMycLatch.TestCascade_A_Notifies_B_Notifies_C;
|
||||
var
|
||||
latchA, latchB, latchC: IMycLatch;
|
||||
mockSubForC: TMockSubscriber;
|
||||
sub_Mock_C, sub_C_B, sub_B_A: TMycSubscription;
|
||||
sub_Mock_C, sub_C_B, sub_B_A: TState.TSubscription;
|
||||
begin
|
||||
latchA := TLatch.Construct(1);
|
||||
latchB := TLatch.Construct(1);
|
||||
@@ -316,7 +316,7 @@ procedure TTestMycLatch.TestChaining_B_NeedsMultipleNotifiesFromA_WithSubscriber
|
||||
var
|
||||
latchA, latchB: IMycLatch;
|
||||
mockSubForB: TMockSubscriber;
|
||||
sub_Mock_B, sub_B_A: TMycSubscription;
|
||||
sub_Mock_B, sub_B_A: TState.TSubscription;
|
||||
begin
|
||||
// LatchA needs 2 notifies to become set. LatchB needs 1 notify to become set.
|
||||
// LatchB subscribes to LatchA. So LatchB will be notified once LatchA becomes set.
|
||||
@@ -345,7 +345,7 @@ procedure TTestMycLatch.TestInitiallySetLatch_NotifiesNewSubscriberImmediately;
|
||||
var
|
||||
latch: IMycLatch; // Will be TMycLatch.Null
|
||||
mockSub: TMockSubscriber;
|
||||
subscription: TMycSubscription;
|
||||
subscription: TState.TSubscription;
|
||||
begin
|
||||
latch := TLatch.Construct(0); // Returns TMycLatch.Null which is set.
|
||||
mockSub := TMockSubscriber.Create;
|
||||
@@ -360,7 +360,7 @@ procedure TTestMycLatch.TestUnsubscribe_SubscriberNotNotified;
|
||||
var
|
||||
latch: IMycLatch;
|
||||
mockSub: TMockSubscriber;
|
||||
subscription: TMycSubscription;
|
||||
subscription: TState.TSubscription;
|
||||
begin
|
||||
latch := TLatch.Construct(1);
|
||||
mockSub := TMockSubscriber.Create;
|
||||
@@ -379,7 +379,7 @@ procedure TTestMycLatch.TestMultipleTriggersNoSubscriber_StateCorrectForLaterSub
|
||||
var
|
||||
latch: IMycLatch;
|
||||
mockSub: TMockSubscriber;
|
||||
subscription: TMycSubscription;
|
||||
subscription: TState.TSubscription;
|
||||
begin
|
||||
latch := TLatch.Construct(3);
|
||||
|
||||
@@ -402,7 +402,7 @@ procedure TTestMycLatch.TestLatchSet_ClearsSubscribers_NoFurtherNotification;
|
||||
var
|
||||
latch: IMycLatch;
|
||||
mockSub1, mockSub2: TMockSubscriber;
|
||||
subscription1, subscription2: TMycSubscription;
|
||||
subscription1, subscription2: TState.TSubscription;
|
||||
begin
|
||||
latch := TLatch.Construct(1);
|
||||
mockSub1 := TMockSubscriber.Create;
|
||||
@@ -438,7 +438,7 @@ begin
|
||||
var noException: Boolean := True;
|
||||
try
|
||||
begin // Inner block to control lifetime of 'subscription'
|
||||
var subscription: TMycSubscription; // Local to this block
|
||||
var subscription: TState.TSubscription; // Local to this block
|
||||
subscription := latch.State.Subscribe(mockSub);
|
||||
|
||||
latch.Notify; // Sets the latch, mockSub is notified, UnadviseAll is called internally.
|
||||
@@ -466,7 +466,7 @@ procedure TTestMycLatch.TestLatchSet_NewSubscriberToSetLatch_NotifiedImmediately
|
||||
var
|
||||
latch: IMycLatch;
|
||||
mockSubInitial, mockSubNew: TMockSubscriber;
|
||||
subscriptionInitial, subscriptionNew: TMycSubscription;
|
||||
subscriptionInitial, subscriptionNew: TState.TSubscription;
|
||||
begin
|
||||
latch := TLatch.Construct(1);
|
||||
mockSubInitial := TMockSubscriber.Create;
|
||||
|
||||
Reference in New Issue
Block a user