public static IEnumerable<object[]> Concat_Objects_TestData()
{
yield return new object[] { new object[] { }, "" };
yield return new object[] { new object[] { 1 }, "1" };
yield return new object[] { new object[] { null }, "" };
// dotnet/coreclr#6785, this will be null for the Concat(object) overload but "" for the object[]/IEnumerable<object> overload
// yield return new object[] { new object[] { new ObjectWithNullToString() }, "" };
yield return new object[] { new object[] { 1, 2 }, "12" };
yield return new object[] { new object[] { null, 1 }, "1" };
yield return new object[] { new object[] { 1, null }, "1" };
yield return new object[] { new object[] { null, null }, "" };
yield return new object[] { new object[] { 1, 2, 3 }, "123" };
yield return new object[] { new object[] { null, 1, 2 }, "12" };
yield return new object[] { new object[] { 1, null, 2 }, "12" };
yield return new object[] { new object[] { 1, 2, null }, "12" };
yield return new object[] { new object[] { null, null, null }, "" };
yield return new object[] { new object[] { 1, 2, 3, 4 }, "1234" };
yield return new object[] { new object[] { null, 1, 2, 3 }, "123" };
yield return new object[] { new object[] { 1, null, 2, 3 }, "123" };
yield return new object[] { new object[] { 1, 2, 3, null }, "123" };
yield return new object[] { new object[] { null, null, null, null }, "" };
yield return new object[] { new object[] { 1, 2, 3, 4, 5 }, "12345" };
yield return new object[] { new object[] { null, 1, 2, 3, 4 }, "1234" };
yield return new object[] { new object[] { 1, null, 2, 3, 4 }, "1234" };
yield return new object[] { new object[] { 1, 2, 3, 4, null }, "1234" };
yield return new object[] { new object[] { null, null, null, null, null }, "" };
// Concat should ignore objects that have a null ToString() value
yield return new object[] { new object[] { new ObjectWithNullToString(), "Foo", new ObjectWithNullToString(), "Bar", new ObjectWithNullToString() }, "FooBar" };
}