### Question:
SQLListeners implements SQLDetailedListener { @Override public void notifyQuery(QueryMetadata md) { if (parent != null) { parent.notifyQuery(md); } for (SQLListener listener : listeners) { listener.notifyQuery(md); } } SQLListeners(SQLListener parent);  SQLListeners(); void add(SQLListener listener); @Override void notifyQuery(QueryMetadata md); @Override void notifyDelete(RelationalPath<?> entity, QueryMetadata md); @Override void notifyDeletes(RelationalPath<?> entity, List<QueryMetadata> batches); @Override void notifyMerge(RelationalPath<?> entity, QueryMetadata md, List<Path<?>> keys,
                            List<Path<?>> columns, List<Expression<?>> values, SubQueryExpression<?> subQuery); @Override void notifyMerges(RelationalPath<?> entity, QueryMetadata md, List<SQLMergeBatch> batches); @Override void notifyInsert(RelationalPath<?> entity, QueryMetadata md, List<Path<?>> columns,
                             List<Expression<?>> values, SubQueryExpression<?> subQuery); @Override void notifyInserts(RelationalPath<?> entity, QueryMetadata md,
                              List<SQLInsertBatch> batches); @Override void notifyUpdate(RelationalPath<?> entity, QueryMetadata md,
                             Map<Path<?>, Expression<?>> updates); @Override void notifyUpdates(RelationalPath<?> entity, List<SQLUpdateBatch> batches); @Override void start(final SQLListenerContext context); @Override void preRender(final SQLListenerContext context); @Override void rendered(final SQLListenerContext context); @Override void prePrepare(final SQLListenerContext context); @Override void prepared(final SQLListenerContext context); @Override void preExecute(final SQLListenerContext context); @Override void executed(final SQLListenerContext context); @Override void end(final SQLListenerContext context); @Override void exception(final SQLListenerContext context); Set<SQLDetailedListener> getListeners();  }### Answer:
@Test public void notifyQuery() { SQLListener listener = createMock(SQLListener.class); SQLListeners listeners = new SQLListeners(); listeners.add(listener); QueryMetadata md = new DefaultQueryMetadata(); listener.notifyQuery(md); replay(listener); listeners.notifyQuery(md); verify(listener); }
@Test public void notifyQuery_parent() { SQLListener listener = createMock(SQLListener.class); SQLListeners listeners = new SQLListeners(listener); QueryMetadata md = new DefaultQueryMetadata(); listener.notifyQuery(md); replay(listener); listeners.notifyQuery(md); verify(listener); }