Refactoring
This commit is contained in:
@@ -120,10 +120,10 @@ end;
|
||||
|
||||
procedure TTestMycLatch.TestCreate_InitialState(InitialCount: Integer; ExpectedIsSet: Boolean);
|
||||
var
|
||||
latch: IMycEvent;
|
||||
latch: IMycLatch;
|
||||
begin
|
||||
// TMycLatch.CreateLatch returns TMycLatch.Null if InitialCount <= 0
|
||||
latch := TEvent.CreateLatch(InitialCount);
|
||||
latch := TLatch.CreateLatch(InitialCount);
|
||||
Assert.AreEqual(ExpectedIsSet, latch.State.IsSet, 'Latch initial IsSet state mismatch for count ' + IntToStr(InitialCount) + '.');
|
||||
end;
|
||||
|
||||
@@ -133,11 +133,11 @@ procedure TTestMycLatch.TestNotify_ReturnValueAndState_AfterOneNotify(
|
||||
ExpectedIsSet: Boolean
|
||||
);
|
||||
var
|
||||
latch: IMycEvent;
|
||||
latch: IMycLatch;
|
||||
returnedValueFromNotify: Boolean;
|
||||
begin
|
||||
latch := TEvent.CreateLatch(InitialCount);
|
||||
returnedValueFromNotify := latch.Notify; // This is IMycEvent (as IMycSubscriber).Notify
|
||||
latch := TLatch.CreateLatch(InitialCount);
|
||||
returnedValueFromNotify := latch.Notify; // This is IMycLatch (as IMycSubscriber).Notify
|
||||
|
||||
Assert.AreEqual(
|
||||
ExpectedReturn,
|
||||
@@ -153,9 +153,9 @@ end;
|
||||
|
||||
procedure TTestMycLatch.TestNotify_DecrementsCounter_StateChanges;
|
||||
var
|
||||
latch: IMycEvent;
|
||||
latch: IMycLatch;
|
||||
begin
|
||||
latch := TEvent.CreateLatch(1);
|
||||
latch := TLatch.CreateLatch(1);
|
||||
Assert.IsFalse(latch.State.IsSet, 'Latch should initially not be set (Count=1).');
|
||||
latch.Notify; // Count becomes 0
|
||||
Assert.IsTrue(latch.State.IsSet, 'Latch should be set after Notify (Count became 0).');
|
||||
@@ -163,9 +163,9 @@ end;
|
||||
|
||||
procedure TTestMycLatch.TestNotify_MultipleNotifies_CounterBecomesNegativeAndStaysSet;
|
||||
var
|
||||
latch: IMycEvent;
|
||||
latch: IMycLatch;
|
||||
begin
|
||||
latch := TEvent.CreateLatch(1);
|
||||
latch := TLatch.CreateLatch(1);
|
||||
latch.Notify; // Count becomes 0, IsSet = True
|
||||
Assert.IsTrue(latch.State.IsSet, 'Latch should be set after first Notify.');
|
||||
latch.Notify; // Count becomes -1, IsSet should remain True
|
||||
@@ -176,11 +176,11 @@ end;
|
||||
|
||||
procedure TTestMycLatch.TestSubscriber_Single_IsNotifiedWhenLatchSet;
|
||||
var
|
||||
latch: IMycEvent;
|
||||
latch: IMycLatch;
|
||||
mockSub: TMockSubscriber;
|
||||
subscription: TState.TSubscription;
|
||||
subscription: TSubscription;
|
||||
begin
|
||||
latch := TEvent.CreateLatch(1);
|
||||
latch := TLatch.CreateLatch(1);
|
||||
mockSub := TMockSubscriber.Create;
|
||||
subscription := latch.State.Subscribe(mockSub); // Subscribing to the Latch's state
|
||||
|
||||
@@ -195,11 +195,11 @@ end;
|
||||
|
||||
procedure TTestMycLatch.TestSubscriber_Multiple_AreNotifiedWhenLatchSet;
|
||||
var
|
||||
latch: IMycEvent;
|
||||
latch: IMycLatch;
|
||||
mockSub1, mockSub2, mockSub3: TMockSubscriber;
|
||||
sub1, sub2, sub3: TState.TSubscription; // Keep subscriptions in scope
|
||||
sub1, sub2, sub3: TSubscription; // Keep subscriptions in scope
|
||||
begin
|
||||
latch := TEvent.CreateLatch(1);
|
||||
latch := TLatch.CreateLatch(1);
|
||||
mockSub1 := TMockSubscriber.Create;
|
||||
mockSub2 := TMockSubscriber.Create;
|
||||
mockSub3 := TMockSubscriber.Create;
|
||||
@@ -217,11 +217,11 @@ end;
|
||||
|
||||
procedure TTestMycLatch.TestSubscriber_NotNotified_BeforeLatchSet;
|
||||
var
|
||||
latch: IMycEvent;
|
||||
latch: IMycLatch;
|
||||
mockSub: TMockSubscriber;
|
||||
subscription: TState.TSubscription;
|
||||
subscription: TSubscription;
|
||||
begin
|
||||
latch := TEvent.CreateLatch(2); // Count = 2
|
||||
latch := TLatch.CreateLatch(2); // Count = 2
|
||||
mockSub := TMockSubscriber.Create;
|
||||
subscription := latch.State.Subscribe(mockSub);
|
||||
|
||||
@@ -232,11 +232,11 @@ end;
|
||||
|
||||
procedure TTestMycLatch.TestSubscriber_NotifiedOnlyOnce_AfterLatchSetAndUnadvised;
|
||||
var
|
||||
latch: IMycEvent;
|
||||
latch: IMycLatch;
|
||||
mockSub: TMockSubscriber;
|
||||
subscription: TState.TSubscription;
|
||||
subscription: TSubscription;
|
||||
begin
|
||||
latch := TEvent.CreateLatch(1);
|
||||
latch := TLatch.CreateLatch(1);
|
||||
mockSub := TMockSubscriber.Create;
|
||||
subscription := latch.State.Subscribe(mockSub);
|
||||
|
||||
@@ -249,11 +249,11 @@ end;
|
||||
|
||||
procedure TTestMycLatch.TestSubscribe_ToAlreadySetLatch_NotifiesImmediately;
|
||||
var
|
||||
latch: IMycEvent;
|
||||
latch: IMycLatch;
|
||||
mockSub1, mockSub2: TMockSubscriber;
|
||||
subscription1, subscription2: TState.TSubscription;
|
||||
subscription1, subscription2: TSubscription;
|
||||
begin
|
||||
latch := TEvent.CreateLatch(1); // Create with count 1
|
||||
latch := TLatch.CreateLatch(1); // Create with count 1
|
||||
mockSub1 := TMockSubscriber.Create;
|
||||
subscription1 := latch.State.Subscribe(mockSub1); // Subscribe before set
|
||||
|
||||
@@ -277,12 +277,12 @@ end;
|
||||
|
||||
procedure TTestMycLatch.TestChaining_A_Notifies_B;
|
||||
var
|
||||
latchA, latchB: IMycEvent;
|
||||
latchA, latchB: IMycLatch;
|
||||
mockSubForB: TMockSubscriber;
|
||||
subHandle_B_listens_A, subHandle_Mock_listens_B: TState.TSubscription;
|
||||
subHandle_B_listens_A, subHandle_Mock_listens_B: TSubscription;
|
||||
begin
|
||||
latchA := TEvent.CreateLatch(1);
|
||||
latchB := TEvent.CreateLatch(1); // latchB is an IMycSubscriber
|
||||
latchA := TLatch.CreateLatch(1);
|
||||
latchB := TLatch.CreateLatch(1); // latchB is an IMycSubscriber
|
||||
mockSubForB := TMockSubscriber.Create;
|
||||
|
||||
subHandle_Mock_listens_B := latchB.State.Subscribe(mockSubForB);
|
||||
@@ -302,13 +302,13 @@ end;
|
||||
|
||||
procedure TTestMycLatch.TestCascade_A_Notifies_B_Notifies_C;
|
||||
var
|
||||
latchA, latchB, latchC: IMycEvent;
|
||||
latchA, latchB, latchC: IMycLatch;
|
||||
mockSubForC: TMockSubscriber;
|
||||
sub_Mock_C, sub_C_B, sub_B_A: TState.TSubscription;
|
||||
sub_Mock_C, sub_C_B, sub_B_A: TSubscription;
|
||||
begin
|
||||
latchA := TEvent.CreateLatch(1);
|
||||
latchB := TEvent.CreateLatch(1);
|
||||
latchC := TEvent.CreateLatch(1);
|
||||
latchA := TLatch.CreateLatch(1);
|
||||
latchB := TLatch.CreateLatch(1);
|
||||
latchC := TLatch.CreateLatch(1);
|
||||
mockSubForC := TMockSubscriber.Create;
|
||||
|
||||
sub_Mock_C := latchC.State.Subscribe(mockSubForC);
|
||||
@@ -325,14 +325,14 @@ end;
|
||||
|
||||
procedure TTestMycLatch.TestChaining_B_NeedsMultipleNotifiesFromA_WithSubscriberOnB;
|
||||
var
|
||||
latchA, latchB: IMycEvent;
|
||||
latchA, latchB: IMycLatch;
|
||||
mockSubForB: TMockSubscriber;
|
||||
sub_Mock_B, sub_B_A: TState.TSubscription;
|
||||
sub_Mock_B, sub_B_A: 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.
|
||||
latchA := TEvent.CreateLatch(2);
|
||||
latchB := TEvent.CreateLatch(1);
|
||||
latchA := TLatch.CreateLatch(2);
|
||||
latchB := TLatch.CreateLatch(1);
|
||||
mockSubForB := TMockSubscriber.Create;
|
||||
|
||||
sub_Mock_B := latchB.State.Subscribe(mockSubForB);
|
||||
@@ -354,11 +354,11 @@ end;
|
||||
|
||||
procedure TTestMycLatch.TestInitiallySetLatch_NotifiesNewSubscriberImmediately;
|
||||
var
|
||||
latch: IMycEvent; // Will be TMycLatch.Null
|
||||
latch: IMycLatch; // Will be TMycLatch.Null
|
||||
mockSub: TMockSubscriber;
|
||||
subscription: TState.TSubscription;
|
||||
subscription: TSubscription;
|
||||
begin
|
||||
latch := TEvent.CreateLatch(0); // Returns TMycLatch.Null which is set.
|
||||
latch := TLatch.CreateLatch(0); // Returns TMycLatch.Null which is set.
|
||||
mockSub := TMockSubscriber.Create;
|
||||
|
||||
subscription := latch.State.Subscribe(mockSub); // TMycLatch.Subscribe notifies immediately if already set.
|
||||
@@ -369,11 +369,11 @@ end;
|
||||
|
||||
procedure TTestMycLatch.TestUnsubscribe_SubscriberNotNotified;
|
||||
var
|
||||
latch: IMycEvent;
|
||||
latch: IMycLatch;
|
||||
mockSub: TMockSubscriber;
|
||||
subscription: TState.TSubscription;
|
||||
subscription: TSubscription;
|
||||
begin
|
||||
latch := TEvent.CreateLatch(1);
|
||||
latch := TLatch.CreateLatch(1);
|
||||
mockSub := TMockSubscriber.Create;
|
||||
|
||||
subscription := latch.State.Subscribe(mockSub);
|
||||
@@ -388,11 +388,11 @@ end;
|
||||
|
||||
procedure TTestMycLatch.TestMultipleTriggersNoSubscriber_StateCorrectForLaterSubscriber;
|
||||
var
|
||||
latch: IMycEvent;
|
||||
latch: IMycLatch;
|
||||
mockSub: TMockSubscriber;
|
||||
subscription: TState.TSubscription;
|
||||
subscription: TSubscription;
|
||||
begin
|
||||
latch := TEvent.CreateLatch(3);
|
||||
latch := TLatch.CreateLatch(3);
|
||||
|
||||
latch.Notify; // Count -> 2
|
||||
latch.Notify; // Count -> 1
|
||||
@@ -411,11 +411,11 @@ end;
|
||||
|
||||
procedure TTestMycLatch.TestLatchSet_ClearsSubscribers_NoFurtherNotification;
|
||||
var
|
||||
latch: IMycEvent;
|
||||
latch: IMycLatch;
|
||||
mockSub1, mockSub2: TMockSubscriber;
|
||||
subscription1, subscription2: TState.TSubscription;
|
||||
subscription1, subscription2: TSubscription;
|
||||
begin
|
||||
latch := TEvent.CreateLatch(1);
|
||||
latch := TLatch.CreateLatch(1);
|
||||
mockSub1 := TMockSubscriber.Create;
|
||||
mockSub2 := TMockSubscriber.Create;
|
||||
|
||||
@@ -439,17 +439,17 @@ end;
|
||||
|
||||
procedure TTestMycLatch.TestLatchSet_SubscriptionFinalize_IsSafePostUnadviseAll;
|
||||
var
|
||||
latch: IMycEvent;
|
||||
latch: IMycLatch;
|
||||
mockSub: TMockSubscriber;
|
||||
// 'subscription' will be declared in an inner scope to control its finalization
|
||||
begin
|
||||
latch := TEvent.CreateLatch(1);
|
||||
latch := TLatch.CreateLatch(1);
|
||||
mockSub := TMockSubscriber.Create;
|
||||
|
||||
var noException: Boolean := True;
|
||||
try
|
||||
begin // Inner block to control lifetime of 'subscription'
|
||||
var subscription: TState.TSubscription; // Local to this block
|
||||
var subscription: TSubscription; // Local to this block
|
||||
subscription := latch.State.Subscribe(mockSub);
|
||||
|
||||
latch.Notify; // Sets the latch, mockSub is notified, UnadviseAll is called internally.
|
||||
@@ -475,11 +475,11 @@ end;
|
||||
|
||||
procedure TTestMycLatch.TestLatchSet_NewSubscriberToSetLatch_NotifiedImmediatelyButNotPersistedForLatchNotify;
|
||||
var
|
||||
latch: IMycEvent;
|
||||
latch: IMycLatch;
|
||||
mockSubInitial, mockSubNew: TMockSubscriber;
|
||||
subscriptionInitial, subscriptionNew: TState.TSubscription;
|
||||
subscriptionInitial, subscriptionNew: TSubscription;
|
||||
begin
|
||||
latch := TEvent.CreateLatch(1);
|
||||
latch := TLatch.CreateLatch(1);
|
||||
mockSubInitial := TMockSubscriber.Create;
|
||||
subscriptionInitial := latch.State.Subscribe(mockSubInitial);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user