Example #1
0
        public void Stratabase_ClearAndIsSet()
        {
            Stratabase sb = new Stratabase(1);
            var        id = Guid.NewGuid();
            StrataPropertyValueAccess <double> pi = sb.GeneratePropertyAccess <double>(id, "Pi");

            Assert.IsFalse(pi.IsSet);

            sb.SetBaselinePropertyValue(id, "Pi", 2.9);
            Assert.IsTrue(pi.IsSet);
            Assert.AreEqual(2.9, pi.GetValue());

            sb.SetOverridePropertyValue(0, id, "Pi", 3.14159);
            Assert.AreEqual(3.14159, pi.GetValue());

            sb.ClearPropertyOverride(0, id, "Pi");
            Assert.IsTrue(pi.IsSet);
            Assert.AreEqual(2.9, pi.GetValue());

            sb.ClearPropertyBaseline(id, "Pi");
            Assert.IsFalse(pi.IsSet);
        }
Example #2
0
        public void Stratabase_ChangeEvents()
        {
            Guid?changedItemId = null;

            string changedProp       = null;
            object changedData       = null;
            bool?  changeWasRemoval  = null;
            int?   changedLayer      = null;
            bool?  changeWasBaseline = null;

            Stratabase sb = new Stratabase(1);

            sb.BaselineDataChanged += _BaselineDataChanged;
            sb.OverrideDataChanged += _OverrideDataChanged;

            Guid item = Guid.NewGuid();

            sb.SetBaselinePropertyValue(item, "Test", 1);
            _AssertBaselineMatch(item, "Test", false, 1);

            sb.ClearPropertyBaseline(item, "Test");
            _AssertBaselineMatch(item, "Test", true);

            sb.SetOverridePropertyValue(0, item, "Test", 2);
            _AssertOverrideMatch(0, item, "Test", false, 2);

            sb.ClearPropertyOverride(0, item, "Test");
            _AssertOverrideMatch(0, item, "Test", true);

            // Test End
            sb.BaselineDataChanged -= _BaselineDataChanged;
            sb.OverrideDataChanged -= _OverrideDataChanged;

            void _AssertBaselineMatch(Guid id, string prop, bool wasRemoval, object data = null)
            {
                _AssertDoesMatch(id, prop, data, wasRemoval);
            }

            void _AssertOverrideMatch(int layer, Guid id, string prop, bool wasRemoval, object data = null)
            {
                _AssertDoesMatch(id, prop, data, wasRemoval, layer);
            }

            void _AssertDoesMatch(Guid expectedId, string expectedProp, object expectedData, bool expectedWasRemoval, int?expectedOverrideLayer = null)
            {
                bool expectedIsBaseline = !expectedOverrideLayer.HasValue;

                Assert.IsTrue(changeWasBaseline.HasValue);
                Assert.AreEqual(expectedIsBaseline, changeWasBaseline.Value);

                Assert.IsTrue(changedItemId.HasValue);
                Assert.AreEqual(expectedId, changedItemId.Value);

                Assert.AreEqual(expectedProp, changedProp);
                Assert.AreEqual(expectedData, changedData);

                Assert.IsTrue(changeWasRemoval.HasValue);
                Assert.AreEqual(expectedWasRemoval, changeWasRemoval.Value);

                if (!expectedIsBaseline)
                {
                    Assert.IsTrue(changedLayer.HasValue);
                    Assert.AreEqual(expectedOverrideLayer.Value, changedLayer.Value);
                }


                changedItemId     = null;
                changedProp       = null;
                changedData       = null;
                changeWasBaseline = null;
                changedLayer      = null;
            }

            void _BaselineDataChanged(object sender, BaselineStratumModificationEventArgs e)
            {
                changeWasBaseline = true;
                changedItemId     = e.ItemId;
                changedProp       = e.PropertyName;
                changedData       = e.NewData;
                changeWasRemoval  = e.WasPropertyRemoved;
            }

            void _OverrideDataChanged(object sender, OverrideStratumModificationEventArgs e)
            {
                changeWasBaseline = false;
                changedItemId     = e.ItemId;
                changedProp       = e.PropertyName;
                changedData       = e.NewData;
                changedLayer      = e.LayerIndex;
                changeWasRemoval  = e.WasPropertyRemoved;
            }
        }