コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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));
        }