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 })); }
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)); }
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); }
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); }
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); }