Esempio n. 1
0
        public void CanJoinSequencesWithAllMatchingKeys()
        {
            var left = new[] { 1, 2, 3, 4, 5 };
            var right = left.Reverse();

            var result = left
                .FullOuterJoin(right, l => l, r => r, (l, r, k) => l + r)
                .ToArray();

            Assert.That(result, Is.EqualTo(new[] { 2, 4, 6, 8, 10 }));
        }
Esempio n. 2
0
        public void CanJoinLeftToEmptySequence()
        {
            var left = new[] { 1 };
            var right = Enumerable.Empty<int>();

            var result = left
                .FullOuterJoin(right, l => l, r => r, (l, r, k) => l + r, EqualityComparer<int>.Default, 0, 1)
                .ToArray();

            Assert.That(result, Is.Not.Empty);
            Assert.That(result.Single(), Is.EqualTo(2));
        }
        public void FullOuterJoin()
        {
            var left = new[] { "a", "b", "c", "d", "e" };
            var right = new[] { "c", "d", "e", "f", "g" };

            var joined = left.FullOuterJoin(right,
                                            l => l,
                                            r => r,
                                            (key, l, r) => l + r);

            var expected = new[] { "a", "b", "cc", "dd", "ee", "f", "g" };

            Assert.That(joined, Is.EquivalentTo(expected));
        }
Esempio n. 4
0
        public void FullOuterJoin_LeftListIsLonger_PadsRightList()
        {
            var left = new[] { 1, 2, 3 };
            var right = new[] { "1" };

            var expected = new[]
            {
                Joined.Create("1", 1, "1"), 
                Joined.Create("2", 2, (string)null), 
                Joined.Create("3", 3, (string)null) 
            };

            var result = left.FullOuterJoin(right, i => i.ToString(), s => s).ToList();

            CollectionAssert.AreEqual(expected, result);
        }
Esempio n. 5
0
        public void FullOuterJoin_EquivalentLists_ZipsAllItems()
        {
            var left = new[] {1, 2, 3};
            var right = new[] {"1", "2", "3"};

            var expected = new []
            {
                Joined.Create("1", 1, "1"), 
                Joined.Create("2", 2, "2"), 
                Joined.Create("3", 3, "3") 
            };

            var result = left.FullOuterJoin(right, i => i.ToString(), s => s).ToList();

            CollectionAssert.AreEqual(expected, result);
        }
Esempio n. 6
0
        public void FullOuterJoin_MissingItemInRightList_ItemIsInserted()
        {
            var left = new[] { 1, 2, 3 };
            var right = new[] { "1", "3" };

            var expected = new[]
            {
                Joined.Create("1", 1, "1"), 
                Joined.Create("2", 2, (string)null), 
                Joined.Create("3", 3, "3"), 
            };

            var result = left.FullOuterJoin(right, i => i.ToString(), s => s).ToList();

            CollectionAssert.AreEqual(expected, result);
        }