public void TestCollectionsBasicValues() { // // => Initialize // // --------------- // | | (Root) // | | // --------------- // | // --------------- // | | (Child) // | | // --------------- var rootCollection = new ParameterCollection("Root"); var childCollection = new ParameterCollection("Child"); childCollection.AddSources(rootCollection); // // => Set P and V on Root (1,1,1) // // --------------- // | V = 1,1,1 | (Root) // | P = 1,1,1 | // --------------- // | // --------------- // | V = ^,^,^ | (Child) // | P = ^,^,^ | // --------------- var paramV = new ParameterKey<Vector3>("View"); var paramP = new ParameterKey<Vector3>("Proj"); rootCollection.Set(paramV, new Vector3(1, 1, 1)); rootCollection.Set(paramP, new Vector3(1, 1, 1)); // Verify collection.Count Assert.AreEqual(childCollection.Count, 2); // Verify collection.Contains Assert.AreEqual(childCollection.ContainsKey(paramV), true); Assert.AreEqual(childCollection.ContainsKey(paramP), true); // // => Set V in Root, Get from Child // // --------------- // | V = 2,2,2 | (Root) // | P = 1,1,1 | // --------------- // | // --------------- // | V = ^,^,^ | (Child) // | P = ^,^,^ | // --------------- // Verify the Get and returned value Assert.AreEqual(childCollection.Get(paramV), new Vector3(1, 1, 1)); rootCollection.Set(paramV, new Vector3(2,2,2)); Assert.AreEqual(childCollection.Get(paramV), new Vector3(2, 2, 2)); // // => Remove P from Root // // --------------- // | V = 2,2,2 | (Root) // | | // --------------- // | // --------------- // | V = ^,^,^ | (Child) // --------------- rootCollection.Remove(paramP); Assert.AreEqual(childCollection.Count, 1); // // => Overrides V in Child (3,3,3) // // --------------- // | V = 2,2,2 | (Root) // | | // --------------- // | // --------------- // | V = 3,3,3 | (Child) // --------------- childCollection.Set(paramV, new Vector3(3, 3, 3)); Assert.AreEqual(childCollection.Get(paramV), new Vector3(3, 3, 3)); Assert.AreEqual(rootCollection.Get(paramV), new Vector3(2, 2, 2)); // // => Reset Key V on Child // // --------------- // | V = 2,2,2 | (Root) // | | // --------------- // | // --------------- // | V = ^,^,^ | (Child) // --------------- childCollection.Reset(paramV); Assert.AreEqual(childCollection.Get(paramV), new Vector3(2, 2, 2)); Assert.AreEqual(rootCollection.Get(paramV), new Vector3(2, 2, 2)); // Check that we cannot dipose a collction used as a source //Assert.Throws(typeof (InvalidOperationException), () => rootCollection.Release() ); // // => Remove Root source from Child // // --------------- // | V = 2,2,2 | (Root) // | | // --------------- // // --------------- // | | (Child) // --------------- // Remove child using root and verify collection.Count childCollection.RemoveSource(rootCollection); Assert.AreEqual(childCollection.Count, 0); }