I try to program to an interface whenever possible, but when I have a class that fulfills a very specific and unique purpose, one that can't be abstracted. Is it correct for me to say that I've reached the limits of "abstraction" and that I need to just pass in the concrete class?
public void DoSomethingWith (HighlySpecificClass specificClass, ISomeInterface abstractedClass)
So if the "program to an interface" is more a guideline than a hard rule, how can I make it testable? Should I create a "header" interface for it anyway?