public void RegisterInheritableAndNoInheritablPropertiesProperty() { using(var form = new Form()) { var button1 = new Button(); var button2 = new Button(); form.Controls.Add(button1); form.Controls.Add(button2); Assert.That(button1.GetValue(TestPropertyContainer.TestProperty), Is.Null); Assert.That(button2.GetValue(TestPropertyContainer.TestProperty), Is.Null); Assert.That(form.GetValue(TestPropertyContainer.TestProperty), Is.Null); button1.SetValue(TestPropertyContainer.TestProperty, "button1"); button1.SetValue(TestPropertyContainer.Test2Property, "button1_"); Assert.That(button1.GetValue(TestPropertyContainer.TestProperty), Is.EqualTo("button1")); Assert.That(button1.GetValue(TestPropertyContainer.Test2Property), Is.EqualTo("button1_")); form.SetValue(TestPropertyContainer.TestProperty, "form"); form.SetValue(TestPropertyContainer.Test2Property, "form2"); Assert.That(form.GetValue(TestPropertyContainer.TestProperty), Is.EqualTo("form")); Assert.That(button1.GetValue(TestPropertyContainer.TestProperty), Is.EqualTo("button1")); Assert.That(button2.GetValue(TestPropertyContainer.TestProperty), Is.EqualTo("form")); Assert.That(form.GetValue(TestPropertyContainer.Test2Property), Is.EqualTo("form2")); Assert.That(button1.GetValue(TestPropertyContainer.Test2Property), Is.EqualTo("button1_")); Assert.That(button2.GetValue(TestPropertyContainer.Test2Property), Is.Null); Assert.That(button2.HasLocalValue(TestPropertyContainer.TestProperty), Is.False); Assert.That(button1.HasLocalValue(TestPropertyContainer.TestProperty), Is.True); button1.ClearValue(TestPropertyContainer.TestProperty); Assert.That(button1.GetValue(TestPropertyContainer.TestProperty), Is.EqualTo("form")); Assert.That(button1.HasLocalValue(TestPropertyContainer.TestProperty), Is.False); button1.ClearValue(TestPropertyContainer.Test2Property); Assert.That(button1.GetValue(TestPropertyContainer.Test2Property), Is.Null); Assert.That(button1.HasLocalValue(TestPropertyContainer.Test2Property), Is.False); button1.SetValue(TestPropertyContainer.Test2Property, "button1_"); form.ClearValue(TestPropertyContainer.Test2Property); Assert.That(button1.GetValue(TestPropertyContainer.Test2Property), Is.EqualTo("button1_")); form.SetValue(TestPropertyContainer.Test2Property, "form2"); var button3 = new Button(); form.Controls.Add(button3); Assert.That(button3.GetValue(TestPropertyContainer.Test2Property), Is.Null); button3.SetValue(TestPropertyContainer.Test2Property, "button3_"); form.Controls.Remove(button3); Assert.That(button3.GetValue(TestPropertyContainer.Test2Property), Is.EqualTo("button3_")); } }