Could you explain the following?
[Test]
public void puzzling_test()
{
IEnumerable<string> strings = SomeStrings;
Assert.AreEqual(new[] { "Foo", "Bar", "Baz" }, strings.ToArray());
var test1 = strings.Select(s => new string(s.ToCharArray()));
Assert.AreEqual(new[] { "Foo", "Bar", "Baz" }, test1.ToArray());
var test2 = strings.Select(s => "" + new string(s.ToCharArray()));
Assert.AreEqual(new[] { "Foo", "Bar", }, test2.ToArray());
// Hey, what happened to Baz??
try
{
var test3 = strings.Select(s => new string(s.ToCharArray()) + "");
Assert.Null(test3.ToArray());
}
catch (PlatformNotSupportedException)
{
Assert.Pass();
}
var test4 = strings.Select(s => new string(s.ToCharArray()) + "");
Assert.AreEqual(new[]
{
"Argument Foo of type System.String is not assignable to parameter type int32",
"Argument Bar of type System.String is not assignable to parameter type int32",
"Constructor 'Baz' has 0 parameter(s) but is invoked with 0 argument(s)"
}, test4.ToArray());
}
I swear that this test is green. How can it possibly be?
It’s actually a dumb and deceitful trick, which we will use and abuse in a short, 3 episode series.