Example #1
0
        public void TestTriggerOnChildren()
        {
            var trigger = new TriggerListTestTrigger(100);

            _databaseInstance.RegisterTrigger(trigger);
            var expected = TestListModel.MakeTestListModel();

            // set all the keys to something negative so the trigger can generate the key
            foreach (var subModel in expected.Children)
            {
                subModel.Key = -1 * subModel.Key;
            }

            var key = _databaseInstance.SaveAsync(expected).Result;

            var actual = _databaseInstance.LoadAsync <TestListModel>(key).Result;

            Assert.NotNull(actual.Children);     //Trigger failed: child list is null.");
            Assert.Equal(expected.Children.Count,
                         actual.Children.Count); //Trigger failed: actual child count different.");

            var noKey = (from m in actual.Children where m == null || m.Key < 1 select m).Any();

            Assert.False(noKey); //Trigger failed: children found without a key.");
            _databaseInstance.UnregisterTrigger(trigger);
        }
Example #2
0
        public void TestNullList()
        {
            var expected = TestListModel.MakeTestListModel();

            expected.Children = null;
            var key    = _databaseInstance.SaveAsync(expected).Result;
            var actual = _databaseInstance.LoadAsync <TestListModel>(key).Result;

            Assert.IsNotNull(actual, "Save/load failed: model is null.");
            Assert.AreEqual(expected.ID, actual.ID, "Save/load failed: key mismatch.");
            Assert.IsNull(actual.Children, "Save/load failed: list should be null.");
        }
Example #3
0
        public void TestEmptyList()
        {
            var expected = TestListModel.MakeTestListModel();

            expected.Children.Clear();
            var key    = _databaseInstance.SaveAsync(expected).Result;
            var actual = _databaseInstance.LoadAsync <TestListModel>(key).Result;

            Assert.IsNotNull(actual, "Save/load failed: model is null.");
            Assert.AreEqual(expected.ID, actual.ID, "Save/load failed: key mismatch.");
            Assert.IsNotNull(actual.Children, "Save/load failed: list not initialized.");
            Assert.AreEqual(0, actual.Children.Count, "Save/load failed: list size mismatch.");
        }
Example #4
0
        public void TestList()
        {
            var expected = TestListModel.MakeTestListModel();
            var key      = _databaseInstance.SaveAsync(expected).Result;
            var actual   = _databaseInstance.LoadAsync <TestListModel>(key).Result;

            Assert.IsNotNull(actual, "Save/load failed: model is null.");
            Assert.AreEqual(expected.ID, actual.ID, "Save/load failed: key mismatch.");
            Assert.IsNotNull(actual.Children, "Save/load failed: list not initialized.");
            Assert.AreEqual(expected.Children.Count, actual.Children.Count, "Save/load failed: list size mismatch.");
            for (var x = 0; x < expected.Children.Count; x++)
            {
                Assert.AreEqual(expected.Children[x].Key, actual.Children[x].Key, "Save/load failed: key mismatch.");
                Assert.AreEqual(expected.Children[x].Data, actual.Children[x].Data, "Save/load failed: data mismatch.");
            }
        }
Example #5
0
        public void TestDirtyFlagTrue()
        {
            var expected = TestListModel.MakeTestListModel();

            // first save is to generate the keys
            var key = _databaseInstance.SaveAsync(expected).Result;

            var actual = _databaseInstance.LoadAsync <TestListModel>(key).Result;

            foreach (var model in actual.Children)
            {
                model.ResetAccess();
            }

            ((DirtyDatabase)_databaseInstance).Predicate = model => false;

            // now check that none were accessed
            _databaseInstance.SaveAsync(actual).Wait();

            var accessed = (from t in actual.Children where t.Accessed select 1).Any();

            Assert.IsFalse(accessed, "Dirty flag on save failed: some children were accessed.");
        }