public void InvertedLookupReactiveEntityCollection_ArgumentChecks() { var inner = new ReactiveEntityCollection <string, string>(StringComparer.Ordinal); AssertEx.ThrowsException <ArgumentNullException>(() => _ = new InvertedLookupReactiveEntityCollection <string, string>(default(IReactiveEntityCollection <string, string>), StringComparer.Ordinal), ex => Assert.AreEqual("collection", ex.ParamName)); AssertEx.ThrowsException <ArgumentNullException>(() => _ = new InvertedLookupReactiveEntityCollection <string, string>(inner, null), ex => Assert.AreEqual("valueComparer", ex.ParamName)); }
public void InvertedLookupReactiveEntityCollection_Simple() { var collection = new InvertedLookupReactiveEntityCollection <string, int>( new ReactiveEntityCollection <string, int>(StringComparer.Ordinal), EqualityComparer <int> .Default) { { "foo", 1 }, { "bar", 2 } }; Assert.IsTrue(collection.TryGetKey(1, out var key)); Assert.AreEqual("foo", key); Assert.IsFalse(collection.TryGetKey(3, out key)); Assert.IsTrue(collection.TryRemove("foo", out var value)); Assert.AreEqual(1, value); Assert.IsFalse(collection.TryGetKey(1, out key)); Assert.IsFalse(collection.TryGetValue("foo", out value)); Assert.IsTrue(collection.ContainsKey("bar")); Assert.IsTrue(collection.TryGetValue("bar", out value)); Assert.AreEqual(2, value); Assert.IsTrue(collection.TryGetKey(2, out key)); Assert.AreEqual("bar", key); Assert.IsTrue(collection.RemovedKeys.SequenceEqual(new[] { "foo" })); collection.ClearRemovedKeys(new[] { "foo" }); Assert.AreEqual(0, collection.RemovedKeys.Count()); collection.Add("foo", 1); collection.Add("qux", 3); collection.Add("baz", 4); Assert.IsTrue(collection.Values.OrderBy(x => x).SequenceEqual(new[] { 1, 2, 3, 4 })); Assert.IsTrue(collection.OrderBy(kv => kv.Value) .SequenceEqual(new Dictionary <string, int> { { "foo", 1 }, { "bar", 2 }, { "qux", 3 }, { "baz", 4 } }.OrderBy(kv => kv.Value))); collection.Clear(); Assert.AreEqual(0, collection.Count()); }