public void TestFastLoadWorksCorrectly()
        {
            Directory.CreateDirectory(path);

            var store = new FileBasedDictionary<Dog>(path,false);

            Guid id = Guid.NewGuid();
            Dog dog = new Dog();
            dog.Age = 20;
            store[id] = dog;

            // as a side effect we will have the fastload file
            store.Validate();

            dog.Age = 21;
            store[id] = dog;

            var store2 = new FileBasedDictionary<Dog>(path, false);
            store2.LoadFastLoadData();
            store2.Validate();

            Assert.AreEqual(21, store2[id].Age);

            store.Dispose();
            store2.Dispose();

            Directory.Delete(path, true);
        }
        public void TestItemsCanBeSetCorrectly()
        {
            Directory.CreateDirectory(path);

            var store = new FileBasedDictionary<Dog>(path);

            Guid id = Guid.NewGuid();
            var dog = new Dog() { Age = 100 };
            store[id] = dog;

            Assert.AreEqual(dog, store[id]);
            store.Dispose();

            Directory.Delete(path, true);
        }
        public void TestItemsCanBeLoadedFromStore()
        {
            Directory.CreateDirectory(path);

            var store = new FileBasedDictionary<Dog>(path);

            Guid id = Guid.NewGuid();
            var dog = new Dog() { Age = 100 };
            store[id] = dog;

            var store2 = new FileBasedDictionary<Dog>(path);
            Assert.AreEqual(100, store2[id].Age);

            store2.Dispose();
            store.Dispose();

            Directory.Delete(path, true);
        }
        public void TestItemsForceOtherStoresToRefresh()
        {
            Directory.CreateDirectory(path);

            var store = new FileBasedDictionary<Dog>(path);
            var store2 = new FileBasedDictionary<Dog>(path);
            #if (DEBUG)
            store.TrackingId = "first";
            store2.TrackingId = "second";
            #endif

            Guid id = Guid.NewGuid();
            var dog = new Dog() { Age = 100, OptionalName = "milo" };
            store[id] = dog;

            while (store2[id] == null) {
                Thread.Sleep(1);
            }

            Assert.AreEqual(100, store2[id].Age);

            var dog2 = store2[id];
            dog2.Age = 99;
            dog2.OptionalName = "milo2";
            store2[id] = dog2;

            while (dog.Age != 99) {
                Thread.Sleep(1);
            }

            Assert.IsTrue(dog.ChangeCount > 0);

            store.Dispose();
            store2.Dispose();

            Directory.Delete(path, true);
        }
        public void TestInheritedSerialization()
        {
            var dog = new Dog() { Fur = Fur.smooth, Age = 99, DontSaveMe = "bla"};

            var clone = Serializer.Clone(dog);

            Assert.AreEqual(dog.Fur, clone.Fur);
            Assert.AreEqual(dog.Age, clone.Age);
            Assert.AreEqual(dog.Legs, clone.Legs);
            Assert.AreEqual(dog.Weight, clone.Weight);
            Assert.IsNull(clone.DontSaveMe);
        }