@@ -753,10 +753,12 @@ public void Complete_NotDequeued()
753753 {
754754 using var queue = new Queue ( ) ;
755755
756- // would be invalid; a is unprovided
757- // vvvvvvvvvvvvvvv
758- var itemX = queue . Enqueue ( "x" , value : new ( ) , requires : [ "a" ] , provides : [ "b" ] ) ;
759- var itemY = queue . Enqueue ( "y" , value : new ( ) , requires : [ "b" ] , provides : [ "c" ] ) ;
756+ // provided by another
757+ // required by another ↓
758+ // would be invalid; a is unprovided ↓ ↓
759+ // ↓ ↓ ↓
760+ var itemX = queue . Enqueue ( "x" , value : new ( ) , requires : [ "a" , "j" , "k" ] , provides : [ "b" ] ) ;
761+ var itemY = queue . Enqueue ( "y" , value : new ( ) , requires : [ "b" , "j" ] , provides : [ "c" , "k" ] ) ;
760762
761763 // Complete() works even if the queue is invalid or has not been validated
762764 //queue.ShouldBeValid();
@@ -766,24 +768,30 @@ public void Complete_NotDequeued()
766768
767769 // Before
768770 queue . ShouldNotHaveReadyItems ( ) ;
769- queue . ShouldHaveTopicCount ( 5 ) ;
771+ queue . ShouldHaveTopicCount ( 7 ) ;
770772 queue . ShouldHaveTopic ( "a" , requiredBy : [ itemX ] ) ;
771- queue . ShouldHaveTopic ( "b" , requiredBy : [ itemY ] , providedBy : [ itemX ] ) ;
772- queue . ShouldHaveTopic ( "c" , providedBy : [ itemY ] ) ;
773- queue . ShouldHaveTopic ( "x" , providedBy : [ itemX ] ) ;
774- queue . ShouldHaveTopic ( "y" , providedBy : [ itemY ] ) ;
773+ queue . ShouldHaveTopic ( "b" , requiredBy : [ itemY ] , providedBy : [ itemX ] ) ;
774+ queue . ShouldHaveTopic ( "c" , providedBy : [ itemY ] ) ;
775+ queue . ShouldHaveTopic ( "j" , requiredBy : [ itemX , itemY ] ) ;
776+ queue . ShouldHaveTopic ( "k" , requiredBy : [ itemX ] , providedBy : [ itemY ] ) ;
777+ queue . ShouldHaveTopic ( "x" , providedBy : [ itemX ] ) ;
778+ queue . ShouldHaveTopic ( "y" , providedBy : [ itemY ] ) ;
775779
776780 // Complete an item that has been enqueued but not dequeued
777781 queue . Complete ( itemX ) ;
778782 // - Removes topic a because nothing else provides or requires it.
779783 // - Removes topics b and x because their only provider (x) completed.
784+ // - Does not remove topic j because it is still required by y
785+ // - Does not remove topic k because it is still provided by y
780786 // - Makes y ready because its only requirement (b) is now provided
781787
782788 // After
783- queue . ShouldHaveReadyItems ( itemY ) ;
784- queue . ShouldHaveTopicCount ( 2 ) ;
785- queue . ShouldHaveTopic ( "c" , providedBy : [ itemY ] ) ;
786- queue . ShouldHaveTopic ( "y" , providedBy : [ itemY ] ) ;
789+ queue . ShouldNotHaveReadyItems ( ) ;
790+ queue . ShouldHaveTopicCount ( 4 ) ;
791+ queue . ShouldHaveTopic ( "c" , providedBy : [ itemY ] ) ;
792+ queue . ShouldHaveTopic ( "j" , requiredBy : [ itemY ] ) ;
793+ queue . ShouldHaveTopic ( "k" , providedBy : [ itemY ] ) ;
794+ queue . ShouldHaveTopic ( "y" , providedBy : [ itemY ] ) ;
787795 }
788796
789797 [ Test ]
0 commit comments