public void AddLocalAttribute() { Entity entity = new Entity(); Attribute attribute = new Attribute("test"); entity.AddAttribute(attribute); Assert.AreEqual(1, entity.Attributes.Where(x => x.Name == "test").Count()); }
public void AttributeBecomesInheritableAfterAddToParent() { Entity parent = new Entity() { Name = "parent" }; Entity child = new Entity(); child.AddPrototype(parent); Attribute attribute = new Attribute("test") { Value = new Value("value") }; child.AddAttribute(attribute); //Assert.IsFalse(attribute.CanInherit); Attribute parentAttribute = new Attribute("test") { Value = new Value("new value") }; parent.AddAttribute(parentAttribute); //Assert.IsTrue(attribute.CanInherit); Assert.AreEqual(1, parent.Attributes.Count); Assert.AreEqual(1, child.Attributes.Count); }
public void ValueFollowsInheritedAttribute() { //bool propertyChanged = false; Entity parent = new Entity() { Name = "parent" }; Attribute parentAttribute = new Attribute("test"); parent.AddAttribute(parentAttribute); Entity child = new Entity(); child.AddPrototype(parent); Attribute childAttribute = child.GetAttribute("test"); //childAttribute.PropertyChanged += (o, e) => propertyChanged = (e.PropertyName == "Value"); parentAttribute.Value = new Value("value"); //Assert.IsTrue(propertyChanged); Assert.AreEqual("value", childAttribute.Value.Initializer); }
public void KeyFollowsInheritedAttribute() { Entity parent = new Entity() { Name = "parent" }; Attribute parentAttribute = new Attribute("test"); parent.AddAttribute(parentAttribute); Entity child = new Entity(); child.AddPrototype(parent); Attribute childAttribute = child.GetAttribute("test"); parentAttribute.Name = "test2"; Assert.IsFalse(childAttribute.HasOwnValue); Assert.AreEqual(0, child.Attributes.Count(x => x.Name == "test")); Assert.AreEqual(1, child.Attributes.Count(x => x.Name == "test2")); }
public void GiveInheritedAttributeLocalValue() { bool propertyChanged = false; Entity parent = new Entity() { Name = "parent" }; Attribute parentAttribute = new Attribute("test"); parent.AddAttribute(parentAttribute); Entity child = new Entity(); child.AddPrototype(parent); Assert.AreEqual(1, child.Attributes.Count(x => x.IsInherited && !x.HasOwnValue)); Attribute childAttribute = child.GetAttribute("test"); childAttribute.PropertyChanged += (o, e) => propertyChanged |= (e.PropertyName == "HasOwnValue"); childAttribute.Value = new Value("value"); Assert.IsTrue(propertyChanged); Assert.AreEqual(1, child.Attributes.Count(x => x.HasOwnValue)); }
public void ClearAttributeValue() { Entity parent = new Entity() { Name = "parent" }; Attribute parentAttribute = new Attribute("test") { Value = new Value("originalValue") }; parent.AddAttribute(parentAttribute); Entity child = new Entity(); child.AddPrototype(parent); Attribute childAttribute = child.GetAttribute("test"); childAttribute.Value = new Value("value"); Assert.AreEqual(childAttribute.Value.Initializer, "value"); Assert.AreEqual(1, child.Attributes.Count(x => x.HasOwnValue)); childAttribute.Value = null; Assert.AreEqual(childAttribute.Value.Initializer, "originalValue"); Assert.AreEqual(0, child.Attributes.Count(x => x.HasOwnValue)); }
public void EntityInheritsAttributeFromPrototype() { Entity parent = new Entity() { Name = "parent" }; parent.AddAttribute(new Attribute("test")); Entity child = new Entity(); child.AddPrototype(parent); Assert.AreEqual(1, parent.Attributes.Where(x => x.Name == "test").Count()); Assert.AreEqual(1, child.Attributes.Where(x => x.Name == "test").Count()); }
public void CannotSetExistingAttributeKeyToDuplicate() { Entity entity = new Entity(); entity.AddAttribute(new Attribute("test1")); Attribute attribute = new Attribute("test2"); entity.AddAttribute(attribute); attribute.Name = "test1"; Assert.AreEqual("test2", attribute.Name); Assert.AreEqual(2, entity.Attributes.Count); }
public void CannotRemoveInheritedAttribute() { Entity parent = new Entity() { Name = "parent" }; parent.AddAttribute(new Attribute("test")); Entity child = new Entity(); child.AddPrototype(parent); Attribute childAttribute = child.GetAttribute("test"); child.RemoveAttribute(childAttribute); Assert.AreEqual(1, child.Attributes.Where(x => x.Name == "test").Count()); }
public void CannotChangeKeyForInheritedAttribute() { Entity parent = new Entity() { Name = "parent" }; Attribute attribute = new Attribute("test") { Value = new Value("value") }; parent.AddAttribute(attribute); Entity child = new Entity(); child.AddPrototype(parent); Attribute childAttribute = child.GetAttribute("test"); childAttribute.Value = new Value("new value"); Assert.IsTrue(childAttribute.IsInherited); Assert.IsTrue(childAttribute.Name == "test"); childAttribute.Name = "test2"; Assert.IsTrue(childAttribute.IsInherited); Assert.IsTrue(childAttribute.Name == "test"); Assert.AreEqual(1, parent.Attributes.Count); Assert.AreEqual(1, child.Attributes.Count); }
public void CannotAddDuplicateAttributeKey() { Entity entity = new Entity(); entity.AddAttribute(new Attribute("test")); entity.AddAttribute(new Attribute("test")); Assert.AreEqual(1, entity.Attributes.Where(x => x.Name == "test").Count()); }
public void AttributesBecomesNonInheritableAfterParentKeyChange() { Entity parent = new Entity() { Name = "parent" }; Attribute attribute = new Attribute("test") { Value = new Value("value") }; parent.AddAttribute(attribute); Entity child = new Entity(); child.AddPrototype(parent); Attribute childAttribute = child.GetAttribute("test"); //childAttribute.IsInherited = false; childAttribute.Value = new Value("new value"); attribute.Name = "test2"; Assert.AreEqual(childAttribute.Name, "test"); //Assert.IsFalse(childAttribute.CanInherit); Assert.AreEqual(1, parent.Attributes.Count); Assert.AreEqual(2, child.Attributes.Count); }
public void AttributeBecomesNonInheritableAfterRemoveFromParent() { Entity parent = new Entity() { Name = "parent" }; Attribute attribute = new Attribute("test") { Value = new Value("value") }; parent.AddAttribute(attribute); Entity child = new Entity(); child.AddPrototype(parent); Attribute childAttribute = child.GetAttribute("test"); //childAttribute.IsInherited = false; childAttribute.Value = new Value("new value"); //Assert.IsTrue(childAttribute.CanInherit); parent.RemoveAttribute(attribute); //Assert.IsFalse(childAttribute.CanInherit); Assert.AreEqual(0, parent.Attributes.Count); Assert.AreEqual(1, child.Attributes.Count); }