public void NotDuplicateBecauseOfComparer() { ICollection <int> source = new[] { 1, 2, 3 }; Func <int, string> keySelector = i => { switch (i) { case 1: return("a"); case 2: // Not duplicate, because we consider the case return("A"); case 3: return("c"); default: throw new Exception(); } }; var result = FastLinq.ToDictionary(source.AsReadOnly(), keySelector, StringComparer.Ordinal); Assert.AreEqual(source.Count, result.Count); CollectionAssert.AreEqual( new[] { new KeyValuePair <string, int>("a", 1), new KeyValuePair <string, int>("A", 2), new KeyValuePair <string, int>("c", 3), }, result); }
public void DuplicateKeysIfComparerHonored() { ICollection <int> source = new[] { 1, 2, 3 }; Func <int, string> keySelector = i => { switch (i) { case 1: return("a"); case 2: // Duplicate, if we ignore the case return("A"); case 3: return("c"); default: throw new Exception(); } }; Func <int, int> valueSelector = i => i * 2; new Action( () => FastLinq.ToDictionary(source.AsReadOnly(), keySelector, valueSelector, StringComparer.OrdinalIgnoreCase)) .Should() .Throw <ArgumentException>() .WithMessage("An item with the same key has already been added."); }
public void EmptySource() { ICollection <int> source = new int[] { }; Func <int, string> keySelector = i => i.ToString(); var result = FastLinq.ToDictionary(source.AsReadOnly(), keySelector, StringComparer.Ordinal); Assert.AreEqual(0, result.Count); }
public void NullComparer() { ICollection <int> source = new[] { 1, 2, 3 }; Func <int, string> keySelector = i => i.ToString(); IEqualityComparer <string> keyComparer = null; var result = FastLinq.ToDictionary(source.AsReadOnly(), keySelector, keyComparer); Assert.AreEqual(EqualityComparer <string> .Default, result.Comparer); }
public void NullKeySelector() { ICollection <int> source = new[] { 1, 2, 3 }; Func <int, string> keySelector = null; new Action( () => FastLinq.ToDictionary(source.AsReadOnly(), keySelector, StringComparer.Ordinal)) .Should() .Throw <ArgumentNullException>(); }
public void NullSource() { ICollection <int> source = null; Func <int, string> keySelector = i => i.ToString(); new Action( () => FastLinq.ToDictionary(source.AsReadOnly(), keySelector)) .Should() .Throw <ArgumentNullException>(); }
public void NullKeySelector() { ICollection <int> source = new[] { 1, 2, 3 }; Func <int, string> keySelector = null; Func <int, int> valueSelector = i => i * 2; new Action( () => FastLinq.ToDictionary(source.AsReadOnly(), keySelector, valueSelector)) .Should() .Throw <ArgumentNullException>(); }
public void DuplicateKeysNoMatterWhatComparer() { ICollection <int> source = new[] { 1, 2, 3 }; Func <int, string> keySelector = i => "duplicate"; new Action( () => FastLinq.ToDictionary(source.AsReadOnly(), keySelector, StringComparer.Ordinal)) .Should() .Throw <ArgumentException>() .WithMessage("An item with the same key has already been added."); }
public void DuplicateKeys() { ICollection <int> source = new[] { 1, 2, 3 }; Func <int, string> keySelector = i => "duplicate"; Func <int, int> valueSelector = i => i * 2; new Action( () => FastLinq.ToDictionary(source.AsReadOnly(), keySelector, valueSelector)) .Should() .Throw <ArgumentException>() .WithMessage("An item with the same key has already been added."); }
public void NominalCase() { ICollection <int> source = new[] { 1, 2, 3 }; Func <int, string> keySelector = i => i.ToString(); var result = FastLinq.ToDictionary(source.AsReadOnly(), keySelector, StringComparer.Ordinal); Assert.AreEqual(source.Count, result.Count); CollectionAssert.AreEqual( new[] { new KeyValuePair <string, int>("1", 1), new KeyValuePair <string, int>("2", 2), new KeyValuePair <string, int>("3", 3), }, result); }
public void DuplicateValues() { ICollection <int> source = new[] { 1, 2, 3 }; Func <int, string> keySelector = i => i.ToString(); Func <int, int> valueSelector = i => 1; var result = FastLinq.ToDictionary(source.AsReadOnly(), keySelector, valueSelector); Assert.AreEqual(source.Count, result.Count); CollectionAssert.AreEqual( new[] { new KeyValuePair <string, int>("1", 1), new KeyValuePair <string, int>("2", 1), new KeyValuePair <string, int>("3", 1), }, result); }
public void DuplicateValues() { ICollection <int> source = new[] { 1, 1, 1 }; int key = 0; Func <int, string> keySelector = _ => (key++).ToString(); var result = FastLinq.ToDictionary(source.AsReadOnly(), keySelector, StringComparer.Ordinal); Assert.AreEqual(source.Count, result.Count); CollectionAssert.AreEqual( new[] { new KeyValuePair <string, int>("0", 1), new KeyValuePair <string, int>("1", 1), new KeyValuePair <string, int>("2", 1), }, result); }
public void Collection_FastLinq() { var _ = FastLinq.ToDictionary(this.collection, i => i); }