public void AddRange_IOrderedCollection() { var list = ImmutableTrieList <int> .Empty; ImmutableTrieList <int> .Builder builder = ImmutableTrieList.CreateBuilder <int>(); builder.Add(1); list = list.AddRange(builder); Assert.Equal(new int[] { 1 }, list); }
public void AddSetGetPop() { const int testSize = 1089; List <(ImmutableTrieList <int> list, List <int> expected)> result = new List <(ImmutableTrieList <int>, List <int>)>(); ImmutableTrieList <int> list = ImmutableTrieList <int> .Empty; result.Add((list, list.ToList())); // Add for (int i = 0; i < testSize; i++) { var expected = list.ToList(); expected.Add(i); list = list.Add(i); result.Add((list, expected)); Assert.Equal(i, list[i]); } // Set const int offset = 14; // setter offset for (int i = 0; i < testSize; i++) { var expected = list.ToList(); expected[i] = i + offset; list = list.SetItem(i, i + offset); result.Add((list, expected)); Assert.Equal(i + offset, list[i]); } // Pop for (int i = 0; i < testSize; i++) { int oldCount = list.Count; List <int> expected = list.ToList(); expected.RemoveAt(oldCount - 1); list = list.Pop(); result.Add((list, expected)); Assert.Equal(oldCount - 1, list.Count); } for (int tupleIndex = 0; tupleIndex < result.Count; tupleIndex++) { var tuple = result[tupleIndex]; Assert.Equal(tuple.list, tuple.expected); } }
public void RemoveTest() { ImmutableTrieList <int> list = ImmutableTrieList <int> .Empty; for (int i = 1; i <= 10; i++) { list = list.Add(i * 10); } list = list.Remove(30); Assert.Equal(9, list.Count); Assert.False(list.Contains(30)); list = list.Remove(100); Assert.Equal(8, list.Count); Assert.False(list.Contains(100)); list = list.Remove(10); Assert.Equal(7, list.Count); Assert.False(list.Contains(10)); var removeList = new int[] { 20, 70 }; list = list.RemoveAll(item => removeList.Contains(item)); Assert.Equal(5, list.Count); Assert.False(list.Contains(20)); Assert.False(list.Contains(70)); IImmutableList <int> list2 = ImmutableTrieList <int> .Empty; for (int i = 1; i <= 10; i++) { list2 = list2.Add(i * 10); } list2 = list2.Remove(30); Assert.Equal(9, list2.Count); Assert.False(list2.Contains(30)); list2 = list2.Remove(100); Assert.Equal(8, list2.Count); Assert.False(list2.Contains(100)); list2 = list2.Remove(10); Assert.Equal(7, list2.Count); Assert.False(list2.Contains(10)); list2 = list2.RemoveAll(item => removeList.Contains(item)); Assert.Equal(5, list2.Count); Assert.False(list2.Contains(20)); Assert.False(list2.Contains(70)); }