public void InsertRangeRandomBalanceTest()
        {
            int randSeed = unchecked ((int)DateTime.Now.Ticks);

            Debug.WriteLine("Random seed: {0}", randSeed);
            var random = new Random(randSeed);

            var immutableList = ImmutableSegmentedList.CreateBuilder <int>();
            var list          = new List <int>();

            const int maxBatchSize = 32;
            int       valueCounter = 0;

            for (int i = 0; i < 24; i++)
            {
                int   startPosition = random.Next(list.Count + 1);
                int   length        = random.Next(maxBatchSize + 1);
                int[] values        = new int[length];
                for (int j = 0; j < length; j++)
                {
                    values[j] = ++valueCounter;
                }

                immutableList.InsertRange(startPosition, values);
                list.InsertRange(startPosition, values);

                Assert.Equal(list, immutableList);
            }
        }
Exemplo n.º 2
0
        public static void TestDebuggerAttributes_Null()
        {
            Type proxyType = DebuggerAttributes.GetProxyType(ImmutableSegmentedList.CreateBuilder <string>());
            TargetInvocationException tie = Assert.Throws <TargetInvocationException>(() => Activator.CreateInstance(proxyType, (object)null !));

            Assert.IsType <ArgumentNullException>(tie.InnerException);
        }
        public void AddRange_IOrderedCollection()
        {
            var list = ImmutableSegmentedList <int> .Empty;

            ImmutableSegmentedList <int> .Builder builder = ImmutableSegmentedList.CreateBuilder <int>();
            builder.Add(1);

            list = list.AddRange(builder);
            Assert.Equal(new int[] { 1 }, list);
        }
Exemplo n.º 4
0
        public void DebuggerAttributesValid()
        {
            DebuggerAttributes.ValidateDebuggerDisplayReferences(ImmutableSegmentedList.CreateBuilder <int>());
            ImmutableSegmentedList <string> .Builder builder = ImmutableSegmentedList.CreateBuilder <string>();
            builder.Add("One");
            builder.Add("Two");
            DebuggerAttributeInfo info         = DebuggerAttributes.ValidateDebuggerTypeProxyProperties(builder);
            PropertyInfo          itemProperty = info.Properties.Single(pr => pr.GetCustomAttribute <DebuggerBrowsableAttribute>() !.State == DebuggerBrowsableState.RootHidden);

            string[]? items = itemProperty.GetValue(info.Instance) as string[];
            Assert.Equal(builder, items);
        }
Exemplo n.º 5
0
        public void RemoveAllBugTest()
        {
            var builder       = ImmutableSegmentedList.CreateBuilder <int>();
            var elemsToRemove = new HashSet <int>()
            {
                0, 1, 2, 3, 4, 5
            };

            // NOTE: this uses Add instead of AddRange because AddRange doesn't exhibit the same issue due to a different order of tree building.
            // Don't change it without testing with the bug repro from https://github.com/dotnet/runtime/issues/22093.
            foreach (var elem in new[] { 0, 1, 2, 3, 4, 5, 6 })
            {
                builder.Add(elem);
            }
            builder.RemoveAll(elemsToRemove.Contains);
            Assert.Equal(new[] { 6 }, builder);
        }
Exemplo n.º 6
0
 public void CreateBuilder()
 {
     ImmutableSegmentedList <string> .Builder builder = ImmutableSegmentedList.CreateBuilder <string>();
     Assert.NotNull(builder);
 }