public void ConcurrentChangeTrackedListBasicListFunctionality()
        {
            const string item1 = "test";
            const string item2 = "test2";

            ConcurrentChangeTrackedList <string> list = new ConcurrentChangeTrackedList <string>();

            Assert.Equal(0, list.Count);
            Assert.False(list.HasBeenModified);

            list.Add(item1);
            Assert.Equal(1, list.Count);

            list.Add(item2);
            Assert.Equal(2, list.Count);

            Assert.Contains(item1, list);
            Assert.Equal(0, list.IndexOf(item1));
            Assert.True(list.HasBeenModified);

            list.Remove(item1);
            Assert.Equal(1, list.Count);

            list.Clear();
            Assert.Equal(0, list.Count);
        }
        public void ConcurrentChangeTrackedSimpleTypeListReadOnly()
        {
            const string item1 = "Foo";
            var          list  = new ConcurrentChangeTrackedList <string>();

            list.IsReadOnly = true;
            Assert.Throws <InvalidOperationException>(() => list.Add(item1));
            Assert.False(list.HasBeenModified);
        }