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); } }
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); }
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); }
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); }
public void CreateBuilder() { ImmutableSegmentedList <string> .Builder builder = ImmutableSegmentedList.CreateBuilder <string>(); Assert.NotNull(builder); }