Пример #1
0
                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);
                }
Пример #2
0
                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.");
                }
Пример #3
0
                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);
                }
Пример #4
0
                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);
                }
Пример #5
0
                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>();
                }
Пример #6
0
                public void NullSource()
                {
                    ICollection <int>  source      = null;
                    Func <int, string> keySelector = i => i.ToString();

                    new Action(
                        () => FastLinq.ToDictionary(source.AsReadOnly(), keySelector))
                    .Should()
                    .Throw <ArgumentNullException>();
                }
Пример #7
0
                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>();
                }
Пример #8
0
                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.");
                }
Пример #9
0
                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.");
                }
Пример #10
0
                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);
                }
Пример #11
0
                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);
                }
Пример #12
0
                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);
                }
Пример #13
0
 public void Collection_FastLinq()
 {
     var _ = FastLinq.ToDictionary(this.collection, i => i);
 }