add preprocessor unit test for target type hierarchy

enforces irreflexivity and asymmetry