public void TryRemove(int i) { var thing = new ConcurrentIndexed <int, string>(); Assert.True(thing.TryAdd(i, "world")); Assert.Single(thing); Assert.True(thing.TryRemove(i, out var value)); Assert.Empty(thing); Assert.Equal("world", value); Assert.True(thing.TryAdd(i, "world")); Assert.Single(thing); }
internal void AddField(IOrType <IEntryPointDefinition, IImplementationDefinition, IInternalMethodDefinition> codeElement, IMemberDefinition contextDefinition) { fields.TryAdd(contextDefinition, new List <IOrType <IEntryPointDefinition, IImplementationDefinition, IInternalMethodDefinition> >()); var list = fields.GetOrThrow(contextDefinition); if (!list.Contains(codeElement)) { list.Add(codeElement); } }
public void AddAndRemove() { var random = new Random(); for (int i = 0; i < 10000; i++) { const int V = 1000; var check = new int[V]; var thing = new ConcurrentIndexed <int, string>(); int count = 0; Parallel.Invoke(new int[10000].Select <int, Action>(_ => () => { var value = random.Next(1000); if (random.Next(2) == 1) { if (thing.TryAdd(value, value.ToString())) { Interlocked.Increment(ref check[value]); Interlocked.Increment(ref count); } } else { if (thing.TryRemove(value, out var _)) { Interlocked.Decrement(ref check[value]); Interlocked.Decrement(ref count); } } }).ToArray()); Assert.Equal(count, thing.Count); for (int j = 0; j < V; j++) { Assert.Equal(check[j] > 0, thing.ContainsKey(j)); } foreach (var item in thing) { Assert.True(check[item.Key] > 0); } } }
internal void TryAddTacField(IOrType <IObjectDefiniton, IInterfaceType, ITypeOr> codeElement, IMemberDefinition contextDefinition) { tacFields.TryAdd(contextDefinition, codeElement); }