public void CopyOnWriteDictionary_Should_Add_And_Count() { var map = new CopyOnWriteDictionary<string, int>(); map.Add("one", 1); map.Add("two", 2); Assert.AreEqual(2, map.Count); CollectionAssert.AreEquivalent(new[] { "one", "two" }, map.Keys); CollectionAssert.AreEquivalent(new[] { 1, 2 }, map.Values); }
public void ReadOperation_DoesNotDelegateToSourceDictionary_OnceDictionaryIsModified() { // Arrange var values = new List <object>(); var sourceDictionary = new Dictionary <string, object> { { "key1", "value1" }, { "key2", "value2" } }; var copyOnWriteDictionary = new CopyOnWriteDictionary <string, object>( sourceDictionary, StringComparer.OrdinalIgnoreCase ); // Act copyOnWriteDictionary.Add("key3", "value3"); copyOnWriteDictionary.Remove("key1"); // Assert Assert.Equal(2, sourceDictionary.Count); Assert.Equal("value1", sourceDictionary["key1"]); Assert.Equal(2, copyOnWriteDictionary.Count); Assert.Equal("value2", copyOnWriteDictionary["KeY2"]); Assert.Equal("value3", copyOnWriteDictionary["key3"]); }
public void RegisterServiceHandler(string name, object handler) { if (name == null) { name = string.Empty; } _handlers.Add(name, handler); }
public IDictionary CloneCustomMetadata() { CopyOnWriteDictionary<string, string> dictionary = new CopyOnWriteDictionary<string, string>(MSBuildNameIgnoreCaseComparer.Default); if (this.metadata != null) { foreach (KeyValuePair<string, string> pair in this.metadata) { dictionary.Add(pair.Key, EscapingUtilities.UnescapeAll(pair.Value)); } } return dictionary; }
public IDictionary CloneCustomMetadata() { CopyOnWriteDictionary <string, string> dictionary = new CopyOnWriteDictionary <string, string>(MSBuildNameIgnoreCaseComparer.Default); if (this.metadata != null) { foreach (KeyValuePair <string, string> pair in this.metadata) { dictionary.Add(pair.Key, EscapingUtilities.UnescapeAll(pair.Value)); } } return(dictionary); }
/// <inheritdoc /> public INodeMetrics GetOrCreateNodeMetrics(Host host) { var value = _nodeMetricsCollection.GetOrAdd(host, h => { var nodeBucket = $"{_sessionBucket}.nodes.{MetricsManager.BuildHostAddressMetricPath(host.Address)}"; var newRegistry = new NodeMetrics(_driverMetricsProvider, _metricsOptions, _metricsEnabled, nodeBucket); _nodeMetricsRegistryCollection.Add(host, newRegistry.MetricsRegistry); return(newRegistry); }); return(value); }
/// <summary> /// Registers an IEndpointPushHandler for the specified endpoint to handle pushing messages. /// </summary> /// <param name="handler">The IEndpointPushHandler to register.</param> /// <param name="endpointId">The endpoint identity to register for.</param> public void RegisterEndpointPushHandler(IEndpointPushHandler handler, string endpointId) { if (_endpointPushHandlers == null) { lock (this.SyncRoot) { if (_endpointPushHandlers == null) { _endpointPushHandlers = new CopyOnWriteDictionary(1); } } } if (_endpointPushHandlers.ContainsKey(endpointId)) { MessageException me = new MessageException(); me.FaultCode = EndpointPushHandlerAlreadyRegistered.ToString(); throw me; } _endpointPushHandlers.Add(endpointId, handler); }
public void CopyOnWriteDictionary_Should_Allow_Parallel_Calls_To_Add() { var actions = new List<Action>(); var map = new CopyOnWriteDictionary<int, int>(); for (var i = 0; i < 100; i++) { var item = i; actions.Add(() => { map.Add(item, item * 1000); }); } TestHelper.ParallelInvoke(actions); Assert.AreEqual(100, map.Count); for (var i = 0; i < 100; i++) { Assert.AreEqual(i * 1000, map[i]); } var counter = 0; CollectionAssert.AreEquivalent(Enumerable.Repeat(0, 100).Select(_ => counter++), map.Keys); }
public void SerializeDeserialize() { CopyOnWriteDictionary <int, string> dictionary = new CopyOnWriteDictionary <int, string>(); dictionary.Add(1, "1"); using (MemoryStream stream = new MemoryStream()) { BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, dictionary); stream.Position = 0; var dictionary2 = (CopyOnWriteDictionary <int, string>)formatter.Deserialize(stream); Assert.AreEqual(dictionary.Count, dictionary2.Count); Assert.AreEqual(dictionary.Comparer, dictionary2.Comparer); Assert.AreEqual("1", dictionary2[1]); dictionary2.Add(2, "2"); } }
public void CopyOnWriteDictionary_Should_Allow_Parallel_Calls_To_Remove() { var actions = new List<Action>(); var map = new CopyOnWriteDictionary<int, int>(); for (var i = 0; i < 100; i++) { map.Add(i, i * 2000); } Assert.AreEqual(100, map.Count); //remove everything except 0 and 1 for (var i = 2; i < 100; i++) { var item = i; actions.Add(() => { map.Remove(item); }); } TestHelper.ParallelInvoke(actions); Assert.AreEqual(2, map.Count); Assert.AreEqual(0, map[0]); Assert.AreEqual(2000, map[1]); }
public void CopyOnWriteDictionary_Should_Add_And_Remove() { var map = new CopyOnWriteDictionary<string, int> { {"one", 1}, {"two", 2}, {"three", 3}, {"four", 4} }; Assert.AreEqual(4, map.Count); CollectionAssert.AreEquivalent(new[] { "one", "two", "three", "four" }, map.Keys); CollectionAssert.AreEquivalent(new[] { 1, 2, 3, 4 }, map.Values); map.Remove("three"); Assert.AreEqual(3, map.Count); map.Remove("one"); Assert.AreEqual(2, map.Count); CollectionAssert.AreEquivalent(new[] { "two", "four" }, map.Keys); CollectionAssert.AreEquivalent(new[] { 2, 4 }, map.Values); map.Add("ten", 10); Assert.AreEqual(3, map.Count); CollectionAssert.AreEquivalent(new[] { "two", "four", "ten" }, map.Keys); CollectionAssert.AreEquivalent(new[] { 2, 4, 10 }, map.Values); }
/// <summary> /// This method supports the Fluorine infrastructure and is not intended to be used directly from your code. /// </summary> /// <param name="connection"></param> public void Register(IConnection connection) { _connectionToScope.Add(connection, connection.Scope); }
internal void AddFactory(string id, IFlexFactory factory) { _factories.Add(id, factory); }
public void ReadOperation_DoesNotDelegateToSourceDictionary_OnceDictionaryIsModified() { // Arrange var values = new List<object>(); var sourceDictionary = new Dictionary<string, object> { { "key1", "value1" }, { "key2", "value2" } }; var copyOnWriteDictionary = new CopyOnWriteDictionary<string, object>( sourceDictionary, StringComparer.OrdinalIgnoreCase); // Act copyOnWriteDictionary.Add("key3", "value3"); copyOnWriteDictionary.Remove("key1"); // Assert Assert.Equal(2, sourceDictionary.Count); Assert.Equal("value1", sourceDictionary["key1"]); Assert.Equal(2, copyOnWriteDictionary.Count); Assert.Equal("value2", copyOnWriteDictionary["KeY2"]); Assert.Equal("value3", copyOnWriteDictionary["key3"]); }
public void SerializeDeserialize() { CopyOnWriteDictionary<int, string> dictionary = new CopyOnWriteDictionary<int, string>(); dictionary.Add(1, "1"); using (MemoryStream stream = new MemoryStream()) { BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, dictionary); stream.Position = 0; var dictionary2 = (CopyOnWriteDictionary<int, string>)formatter.Deserialize(stream); Assert.AreEqual(dictionary.Count, dictionary2.Count); Assert.AreEqual(dictionary.Comparer, dictionary2.Comparer); Assert.AreEqual("1", dictionary2[1]); dictionary2.Add(2, "2"); } }