Esempio n. 1
0
        public void TestPropertyComponentModelAttributes()
        {
            // check that ComponentModel attributes map to ParamSpec
            using (var baseObj = new TestObjectPropertiesBase())
                using (var baseObjClass = (ObjectClass)TypeClass.Get(baseObj.GetGType()))
                    using (var basePspec = baseObjClass.FindProperty("bool-value")) {
                        Assert.That(basePspec.Name, Is.EqualTo(TestObjectPropertiesBase.BoolValuePropertyName));
                        Assert.That(basePspec.Nick, Is.EqualTo(TestObjectPropertiesBase.BoolValuePropertyNick));
                        Assert.That(basePspec.Blurb, Is.EqualTo(TestObjectPropertiesBase.BoolValuePropertyBlurb));
                        Assert.That(basePspec.DefaultValue.Get(),
                                    Is.EqualTo(TestObjectPropertiesBase.BoolValuePropertyDefaultValue));
                    }

            // The subclass will inherit the values of the parent class.
            // If the subclass tries to declare an attribute again, it will
            // be ignored as is the case with DefaultValueAttribute here.
            using (var subObj = new TestObjectPropertiesSubclass())
                using (var subObjClass = (ObjectClass)TypeClass.Get(subObj.GetGType()))
                    using (var subPspec = subObjClass.FindProperty("bool-value")) {
                        Assert.That(subPspec.Name, Is.EqualTo(TestObjectPropertiesBase.BoolValuePropertyName));
                        Assert.That(subPspec.Nick, Is.EqualTo(TestObjectPropertiesBase.BoolValuePropertyNick));
                        Assert.That(subPspec.Blurb, Is.EqualTo(TestObjectPropertiesBase.BoolValuePropertyBlurb));
                        Assert.That(subPspec.DefaultValue.Get(),
                                    Is.EqualTo(TestObjectPropertiesBase.BoolValuePropertyDefaultValue));
                    }

            Utility.AssertNoGLibLog();
        }
Esempio n. 2
0
        public void TestSubclassPropertyOverride()
        {
            using (var obj = new TestObjectPropertiesSubclass()) {
                // the new keyword does not override a property, just hides it...

                Assume.That(obj.IntValue, Is.EqualTo(0));
                obj.SetProperty(nameof(obj.IntValue), 1);
                Assert.That(obj.IntValue, Is.EqualTo(1));

                Assert.That(((TestObjectPropertiesBase)obj).IntValue, Is.EqualTo(0));

                using (var baseObjClass = (ObjectClass)TypeClass.Get(typeof(TestObjectPropertiesBase).GetGType()))
                    using (var subclassObjClass = (ObjectClass)TypeClass.Get(typeof(TestObjectPropertiesSubclass).GetGType())) {
                        using (var baseIntValueProp = baseObjClass.FindProperty(nameof(obj.IntValue)))
                            using (var subclassIntValueProp = subclassObjClass.FindProperty(nameof(obj.IntValue))) {
                                // ...so ParamSpecs should not be the same
                                Assert.That(baseIntValueProp.Handle, Is.Not.EqualTo(subclassIntValueProp.Handle));
                            }

                        // But the override keyword replaces property...

                        Assume.That(obj.BoolValue, Is.False);
                        obj.SetProperty("bool-value", true);
                        Assert.That(obj.BoolValue, Is.True);

                        Assert.That(((TestObjectPropertiesBase)obj).BoolValue, Is.True);

                        using (var baseBoolValueProp = baseObjClass.FindProperty("bool-value"))
                            using (var subclassBoolValueProp = subclassObjClass.FindProperty("bool-value")) {
                                // ...so ParamSpecs should be the same
                                Assert.That(baseBoolValueProp.Handle, Is.EqualTo(subclassBoolValueProp.Handle));
                            }
                    }
            }

            Utility.AssertNoGLibLog();
        }