void PluginRequirementCollectionEvents( PluginRequirementCollection collection ) { Guid id = Guid.NewGuid(); PluginRequirementCollectionChangingEventArgs lastChanging = null; PluginRequirementCollectionChangedEventArgs lastChanged = null; int changingCount = 0; int changedCount = 0; collection.Changing += ( o, e ) => { lastChanging = e; changingCount++; }; collection.Changed += ( o, e ) => { lastChanged = e; changedCount++; }; // Check add PluginRequirement req = collection.AddOrSet( id, RunningRequirement.MustExistAndRun ); Assert.That( changedCount == 1 && changingCount == 1 ); Assert.That( lastChanging.Action == CK.Core.ChangeStatus.Add ); Assert.That( lastChanged.Action == CK.Core.ChangeStatus.Add ); Assert.That( lastChanging.Collection == collection ); Assert.That( lastChanged.Collection == collection ); Assert.That( lastChanging.PluginId == id ); Assert.That( lastChanged.PluginId == id ); Assert.That( lastChanging.Requirement == RunningRequirement.MustExistAndRun ); Assert.That( lastChanged.Requirement == RunningRequirement.MustExistAndRun ); changedCount = 0; changingCount = 0; // Check delete : from the collection collection.Remove( id ); Assert.That( changedCount == 1 && changingCount == 1 ); Assert.That( lastChanging.Action == CK.Core.ChangeStatus.Delete ); Assert.That( lastChanged.Action == CK.Core.ChangeStatus.Delete ); Assert.That( lastChanging.Collection == collection ); Assert.That( lastChanged.Collection == collection ); Assert.That( lastChanging.PluginId == id ); Assert.That( lastChanged.PluginId == id ); Assert.That( lastChanging.Requirement == RunningRequirement.MustExistAndRun ); Assert.That( lastChanged.Requirement == RunningRequirement.MustExistAndRun ); changedCount = 0; changingCount = 0; // Check clear collection.Clear(); Assert.That( changedCount == 1 && changingCount == 1 ); Assert.That( lastChanging.Action == CK.Core.ChangeStatus.ContainerClear ); Assert.That( lastChanged.Action == CK.Core.ChangeStatus.ContainerClear ); Assert.That( lastChanging.Collection == collection ); Assert.That( lastChanged.Collection == collection ); Assert.That( lastChanging.PluginId == Guid.Empty ); Assert.That( lastChanged.PluginId == Guid.Empty ); Assert.That( lastChanging.Requirement == 0 ); Assert.That( lastChanged.Requirement == 0 ); }
public void TestPluginRequirementCollectionEnumerable() { Guid guid0 = Guid.NewGuid(); Guid guid1 = Guid.NewGuid(); Guid guid2 = Guid.NewGuid(); IPluginRequirementCollection reqs = new PluginRequirementCollection( ); PluginRequirement req0 = reqs.AddOrSet( guid0, RunningRequirement.MustExistAndRun ); Assert.That( reqs.Count == 1 ); PluginRequirement req1 = reqs.AddOrSet( guid1, RunningRequirement.Optional ); Assert.That( reqs.Count == 2 ); PluginRequirement req2 = reqs.AddOrSet( guid2, RunningRequirement.OptionalTryStart ); Assert.That( reqs.Count == 3 ); Assert.That( reqs.Contains( req2 ) && reqs.Contains( req1 ) && reqs.Contains( req0 ) ); reqs.Remove( guid2 ); Assert.That( reqs.Count == 2 ); Assert.That( !reqs.Contains( req2 ) ); int passed = 0; foreach( PluginRequirement o in reqs ) { if( o.PluginId == guid0 ) { Assert.That( o.Requirement == RunningRequirement.MustExistAndRun ); passed++; } if( o.PluginId == guid1 ) { Assert.That( o.Requirement == RunningRequirement.Optional ); passed++; } } Assert.That( passed, Is.EqualTo( 2 ) ); reqs.Clear(); Assert.That( reqs.Count == 0 ); Assert.That( ((PluginRequirement)req0).Holder == null ); Assert.That( ((PluginRequirement)req1).Holder == null ); Assert.That( ((PluginRequirement)req2).Holder == null ); passed = 0; foreach( PluginRequirement o in reqs ) { passed++; } Assert.That( passed == 0 ); }