public void InsertsItemInListAtTheSpecifiedIndex()
            {
                var target = new TestableSnapshottingList <object>();
                var item   = new object();

                target.Insert(0, item);

                Assert.Same(item, target.Collection[0]);
            }
            public void ResetsSnapshotSoThatItIsRecreatedAtNextRead()
            {
                var target = new TestableSnapshottingList <object>();

                target.GetSnapshot();

                target.Insert(0, null);

                Assert.Null(target.Snapshot);
            }
            public void LocksCollectionForThreadSafety()
            {
                Task anotherThread;
                var  target = new TestableSnapshottingList <object>();

                lock (target.Collection)
                {
                    anotherThread = TaskEx.Run(() => target.Insert(0, new object()));
                    Assert.False(anotherThread.Wait(20));
                }

                Assert.True(anotherThread.Wait(20));
            }