public void WillBeSaved()
        {
            var resetEvent = new AutoResetEvent(false);
            var storage    = new InMemoryFileStorage();
            var dict       = new PersistedDictionary("test.json", storage, new DefaultJsonSerializer(), 10);

            dict.Saved  += (sender, args) => resetEvent.Set();
            dict["test"] = "test";
            Assert.Equal("test", dict["test"]);
            bool success = resetEvent.WaitOne(250);

            Assert.True(success, "Failed to save dictionary.");
            Assert.True(storage.Exists("test.json"));
        }
        public void WillSaveOnce()
        {
            var latch   = new CountDownLatch(2);
            var storage = new InMemoryFileStorage();
            var dict    = new PersistedDictionary("test.json", storage, new DefaultJsonSerializer(), 50);

            dict.Saved += (sender, args) => latch.Signal();
            for (int i = 0; i < 10; i++)
            {
                dict["test" + i] = i.ToString();
            }
            Assert.Equal(10, dict.Count);
            bool success = latch.Wait(250);

            Assert.False(success, "Dictionary was saved multiple times.");
            Assert.Equal(1, latch.Remaining);
            Assert.True(storage.Exists("test.json"));

            dict["test"] = "test";
            Assert.Equal(11, dict.Count);
            success = latch.Wait(250);
            Assert.True(success, "Failed to save dictionary.");
            Assert.True(storage.Exists("test.json"));
        }