Hi, thanks for posting! I appreciate the effort you've gone through to provide a code sample - this was enormously helpful in analysing the problem.
From a certain perspective this could certainly be considered a bug, although I'm not sure if there is a feasible long term fix for it, as even the best approach to a problem like this would create a certain level of ambiguity.
Essentially the use of your container object in the TestCaseSource is causing two tests to be created under the same name. When attempting to create names for the tests, NUnit is performing a ToString() against your TestCase class. Because there is no variation between the test names, NCrunch automatically disregards the duplicates and does not 'discover' all the actual test cases.
NCrunch currently does not support working with multiple tests that exist under the same name. The reason for has been mostly because of implementation difficulty, but also because having two tests under the same name is actually a serious real-world problem that can create a world of confusion for both tools and developers. I'm willing to accept that perhaps a better solution would be to display a warning or error message of some kind making this behaviour clearer.
In your specific case, I suggest implementing a ToString() override on your TestCase class that returns a value derived from the fields in the class (i.e. the 'Value' property). When I did this in your code sample, the extra test case was discovered without problems and everything was functioning normally.
I hope this helps!
Cheers,
Remco