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);
        }
Esempio n. 2
0
        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);
                }
            }
        }
Esempio n. 4
0
 internal void TryAddTacField(IOrType <IObjectDefiniton, IInterfaceType, ITypeOr> codeElement, IMemberDefinition contextDefinition)
 {
     tacFields.TryAdd(contextDefinition, codeElement);
 }