We present a new method for automated test case generation based on symbolic execution and a custom process of interpolation. The algorithm first identifies program execution paths in order to define a corresponding set of test inputs. It then annotates the program with assertions so as to identify feasible and infeasible cases, the former of which are processed to produce the desired test inputs. The main contribution is that performing symbolic execution using a custom form of interpolation significantly prunes the search space. Our main results are that (1) the set of MC/DC test cases we produce is optimal, and (2) an experimental evaluation showing this optimal result for many programs.