TaskManager refactoring
This commit is contained in:
@@ -182,7 +182,7 @@ var
|
||||
begin
|
||||
latch := TLatch.CreateLatch(1);
|
||||
mockSub := TMockSubscriber.Create;
|
||||
subscription := latch.State.Subscribe(mockSub); // Subscribing to the Latch's state
|
||||
subscription := latch.State.Signal.Subscribe(mockSub); // Subscribing to the Latch's state
|
||||
|
||||
Assert.IsFalse(latch.State.IsSet, 'Latch should initially not be set.');
|
||||
Assert.AreEqual(0, mockSub.NotifyCount, 'MockSub should not have been notified yet (before latch set).');
|
||||
@@ -204,9 +204,9 @@ begin
|
||||
mockSub2 := TMockSubscriber.Create;
|
||||
mockSub3 := TMockSubscriber.Create;
|
||||
|
||||
sub1 := latch.State.Subscribe(mockSub1);
|
||||
sub2 := latch.State.Subscribe(mockSub2);
|
||||
sub3 := latch.State.Subscribe(mockSub3);
|
||||
sub1 := latch.State.Signal.Subscribe(mockSub1);
|
||||
sub2 := latch.State.Signal.Subscribe(mockSub2);
|
||||
sub3 := latch.State.Signal.Subscribe(mockSub3);
|
||||
|
||||
latch.Notify; // Latch becomes set
|
||||
|
||||
@@ -223,7 +223,7 @@ var
|
||||
begin
|
||||
latch := TLatch.CreateLatch(2); // Count = 2
|
||||
mockSub := TMockSubscriber.Create;
|
||||
subscription := latch.State.Subscribe(mockSub);
|
||||
subscription := latch.State.Signal.Subscribe(mockSub);
|
||||
|
||||
Assert.AreEqual(0, mockSub.NotifyCount, 'MockSub should not be notified upon subscription if latch is not set.');
|
||||
latch.Notify; // Count becomes 1, still not set
|
||||
@@ -238,7 +238,7 @@ var
|
||||
begin
|
||||
latch := TLatch.CreateLatch(1);
|
||||
mockSub := TMockSubscriber.Create;
|
||||
subscription := latch.State.Subscribe(mockSub);
|
||||
subscription := latch.State.Signal.Subscribe(mockSub);
|
||||
|
||||
latch.Notify; // Sets latch, notifies MockSub. Subscribers are then unadvised by UnadviseAll.
|
||||
Assert.AreEqual(1, mockSub.NotifyCount, 'MockSub notify count should be 1 after latch set.');
|
||||
@@ -255,7 +255,7 @@ var
|
||||
begin
|
||||
latch := TLatch.CreateLatch(1); // Create with count 1
|
||||
mockSub1 := TMockSubscriber.Create;
|
||||
subscription1 := latch.State.Subscribe(mockSub1); // Subscribe before set
|
||||
subscription1 := latch.State.Signal.Subscribe(mockSub1); // Subscribe before set
|
||||
|
||||
latch.Notify; // Latch becomes set. mockSub1 is notified.
|
||||
|
||||
@@ -264,7 +264,8 @@ begin
|
||||
|
||||
// Attempt to subscribe mockSub2 after the latch is already set.
|
||||
mockSub2 := TMockSubscriber.Create;
|
||||
subscription2 := latch.State.Subscribe(mockSub2); // TMycLatch.Subscribe (via TMycAbstractFlag) notifies immediately if already set.
|
||||
subscription2 :=
|
||||
latch.State.Signal.Subscribe(mockSub2); // TMycLatch.Subscribe (via TMycAbstractFlag) notifies immediately if already set.
|
||||
|
||||
Assert.AreEqual(1, mockSub2.NotifyCount, 'MockSub2 should be notified immediately upon subscribing to an already set latch.');
|
||||
|
||||
@@ -285,9 +286,9 @@ begin
|
||||
latchB := TLatch.CreateLatch(1); // latchB is an TSignal.ISubscriber
|
||||
mockSubForB := TMockSubscriber.Create;
|
||||
|
||||
subHandle_Mock_listens_B := latchB.State.Subscribe(mockSubForB);
|
||||
subHandle_Mock_listens_B := latchB.State.Signal.Subscribe(mockSubForB);
|
||||
// LatchA's state is an IMycSignal. LatchB (as TSignal.ISubscriber) subscribes to it.
|
||||
subHandle_B_listens_A := latchA.State.Subscribe(latchB);
|
||||
subHandle_B_listens_A := latchA.State.Signal.Subscribe(latchB);
|
||||
|
||||
Assert.IsFalse(latchA.State.IsSet, 'LatchA initially not set.');
|
||||
Assert.IsFalse(latchB.State.IsSet, 'LatchB initially not set.');
|
||||
@@ -311,9 +312,9 @@ begin
|
||||
latchC := TLatch.CreateLatch(1);
|
||||
mockSubForC := TMockSubscriber.Create;
|
||||
|
||||
sub_Mock_C := latchC.State.Subscribe(mockSubForC);
|
||||
sub_C_B := latchB.State.Subscribe(latchC); // LatchC subscribes to LatchB's state
|
||||
sub_B_A := latchA.State.Subscribe(latchB); // LatchB subscribes to LatchA's state
|
||||
sub_Mock_C := latchC.State.Signal.Subscribe(mockSubForC);
|
||||
sub_C_B := latchB.State.Signal.Subscribe(latchC); // LatchC subscribes to LatchB's state
|
||||
sub_B_A := latchA.State.Signal.Subscribe(latchB); // LatchB subscribes to LatchA's state
|
||||
|
||||
latchA.Notify; // Call Notify on LatchA
|
||||
|
||||
@@ -335,8 +336,8 @@ begin
|
||||
latchB := TLatch.CreateLatch(1);
|
||||
mockSubForB := TMockSubscriber.Create;
|
||||
|
||||
sub_Mock_B := latchB.State.Subscribe(mockSubForB);
|
||||
sub_B_A := latchA.State.Subscribe(latchB);
|
||||
sub_Mock_B := latchB.State.Signal.Subscribe(mockSubForB);
|
||||
sub_B_A := latchA.State.Signal.Subscribe(latchB);
|
||||
|
||||
latchA.Notify; // First notify for LatchA (count becomes 1)
|
||||
Assert.IsFalse(latchA.State.IsSet, 'LatchA should not be set after first notify of two.');
|
||||
@@ -361,7 +362,7 @@ begin
|
||||
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.
|
||||
subscription := latch.State.Signal.Subscribe(mockSub); // TMycLatch.Subscribe notifies immediately if already set.
|
||||
|
||||
Assert.IsTrue(latch.State.IsSet, 'Latch IsSet property mismatch (should be true for Null latch).');
|
||||
Assert.AreEqual(1, mockSub.NotifyCount, 'MockSub should be notified immediately upon subscribing to an initially set latch.');
|
||||
@@ -376,7 +377,7 @@ begin
|
||||
latch := TLatch.CreateLatch(1);
|
||||
mockSub := TMockSubscriber.Create;
|
||||
|
||||
subscription := latch.State.Subscribe(mockSub);
|
||||
subscription := latch.State.Signal.Subscribe(mockSub);
|
||||
subscription.Unsubscribe; // Explicitly call Unsubscribe on the record
|
||||
|
||||
latch.Notify; // Latch becomes set
|
||||
@@ -399,7 +400,7 @@ begin
|
||||
Assert.IsFalse(latch.State.IsSet, 'Latch should not be set yet after partial notifies.');
|
||||
|
||||
mockSub := TMockSubscriber.Create;
|
||||
subscription := latch.State.Subscribe(mockSub);
|
||||
subscription := latch.State.Signal.Subscribe(mockSub);
|
||||
Assert.AreEqual(0, mockSub.NotifyCount, 'MockSub should not be notified on subscribe if latch not yet set.');
|
||||
|
||||
latch.Notify; // Count -> 0, Latch becomes set and notifies mockSub
|
||||
@@ -419,8 +420,8 @@ begin
|
||||
mockSub1 := TMockSubscriber.Create;
|
||||
mockSub2 := TMockSubscriber.Create;
|
||||
|
||||
subscription1 := latch.State.Subscribe(mockSub1);
|
||||
subscription2 := latch.State.Subscribe(mockSub2);
|
||||
subscription1 := latch.State.Signal.Subscribe(mockSub1);
|
||||
subscription2 := latch.State.Signal.Subscribe(mockSub2);
|
||||
|
||||
Assert.AreEqual(0, mockSub1.NotifyCount, 'MockSub1 initial NotifyCount should be 0.');
|
||||
Assert.AreEqual(0, mockSub2.NotifyCount, 'MockSub2 initial NotifyCount should be 0.');
|
||||
@@ -450,7 +451,7 @@ begin
|
||||
try
|
||||
begin // Inner block to control lifetime of 'subscription'
|
||||
var subscription: TSignal.TSubscription; // Local to this block
|
||||
subscription := latch.State.Subscribe(mockSub);
|
||||
subscription := latch.State.Signal.Subscribe(mockSub);
|
||||
|
||||
latch.Notify; // Sets the latch, mockSub is notified, UnadviseAll is called internally.
|
||||
Assert.AreEqual(1, mockSub.NotifyCount, 'MockSub was notified when latch set.');
|
||||
@@ -481,7 +482,7 @@ var
|
||||
begin
|
||||
latch := TLatch.CreateLatch(1);
|
||||
mockSubInitial := TMockSubscriber.Create;
|
||||
subscriptionInitial := latch.State.Subscribe(mockSubInitial);
|
||||
subscriptionInitial := latch.State.Signal.Subscribe(mockSubInitial);
|
||||
|
||||
// Set the latch; mockSubInitial is notified, UnadviseAll is called.
|
||||
latch.Notify;
|
||||
@@ -489,7 +490,7 @@ begin
|
||||
|
||||
// Subscribe a new subscriber to the already set latch
|
||||
mockSubNew := TMockSubscriber.Create;
|
||||
subscriptionNew := latch.State.Subscribe(mockSubNew);
|
||||
subscriptionNew := latch.State.Signal.Subscribe(mockSubNew);
|
||||
|
||||
// New subscriber should be notified immediately upon subscription to an already set latch
|
||||
Assert.AreEqual(1, mockSubNew.NotifyCount, 'New subscriber should be notified immediately upon subscription.');
|
||||
|
||||
Reference in New Issue
Block a user