@Test public void testCompatibility() { EncodingManager manager = new EncodingManager("car,bike,foot"); BikeFlagEncoder bike = (BikeFlagEncoder) manager.getEncoder("bike"); CarFlagEncoder car = (CarFlagEncoder) manager.getEncoder("car"); FootFlagEncoder foot = (FootFlagEncoder) manager.getEncoder("foot"); assertNotEquals(car, bike); assertNotEquals(car, foot); assertNotEquals(car.hashCode(), bike.hashCode()); assertNotEquals(car.hashCode(), foot.hashCode()); FootFlagEncoder foot2 = new FootFlagEncoder(); EncodingManager manager2 = new EncodingManager(foot2); assertNotEquals(foot, foot2); assertNotEquals(foot.hashCode(), foot2.hashCode()); FootFlagEncoder foot3 = new FootFlagEncoder(); EncodingManager manager3 = new EncodingManager(foot3); assertEquals(foot3, foot2); assertEquals(foot3.hashCode(), foot2.hashCode()); try { new EncodingManager("car,car"); assertTrue("do not allow duplicate flag encoders", false); } catch (Exception ex) { } }