@Test
    public void randomShapeGeneration() {
        RandomShapeGenerator rsg = new RandomShapeGenerator();
        for (int i = 0; i < 1000; i++) {
            Shape newShape = rsg.getNewShapeAtRandom();
            for (Shape shape : shapeCount.keySet()) {
                if (newShape.getClass().getName().equals(shape.getClass().getName())) {
                    Integer count = shapeCount.get(shape);
                    assertFalse("new shape " + newShape + " same object as key " + shape,
                            shape.equals(newShape));
                    shapeCount.put(shape, ++count);
                }
            }
        }
        //for a visual check that it looks sensible
        System.out.println(shapeCount.toString());
        //just make sure we've not missed any
        assertFalse(shapeCount.containsValue(0));
    }