BranchPerformer implements StepPerformer, FlowerSelectedListener { @Override public void init() { synchronized (this) { if (initialised) { throw new DeveloperError("You don't really want init this if it was already initialised"); } initialised = true; configureDrawer(); flowerDrawer.init(); } } protected  BranchPerformer(InkDrop inkDrop,
                              BranchesList branchesList,
                              FlowerDrawer flowerDrawer,
                              PaintStepSkipper paintStepSkipper,
                              BrushOptionsPreferences brushOptionsPreferences,
                              RainbowDrawer rainbowDrawer,
                              RainbowInputController rainbowInputController); static BranchPerformer newInstance(InkDrop inkDrop,
                                              RainbowDrawer rainbowDrawer,
                                              RainbowInputController rainbowInputController); @Override void init(); @Override void doStep(); @Override void enable(); @Override void disable(); @Override void reset(); @Override void onFlowerSelected(final Flower flower);  }
@Test public void testThatInitConfiguresProperlyRainbowDrawer() { branchPerformer.init(); verify(rainbowDrawer).noStroke(); verify(rainbowDrawer).smooth(); }
@Test public void testThatInitDelegatesInFlowerDrawer() { branchPerformer.init(); verify(flowerDrawer).init(); }