// Path: warehouse-model/src/main/java/warehouse/quality/Locked.java
// @Value
// public class Locked {
//     private final PaletteLabel paletteLabel;
// }


import org.assertj.core.api.AbstractObjectAssert;
import org.assertj.core.api.Assertions;
import org.mockito.Mockito;
import warehouse.quality.Locked;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
package warehouse.products;



/**
 * Created by michal on 13.07.2016.
 */
public class EventsAssert implements ProductStock.EventsContract {

    private final ProductStock.EventsContract delegate;

    private final List<Object> events = new LinkedList<>();
    private final Map<Class<? extends Object>, Object> last = new HashMap<>();

    public EventsAssert(ProductStock.EventsContract delegate) {
        this.delegate = delegate;
    }

    public EventsAssert() {
        delegate = Mockito.mock(ProductStock.EventsContract.class);
    }

    @Override
    public void emit(Registered event) {
        delegate.emit(event);
        addEvent(event);
    }

    @Override
    public void emit(Stored event) {
        delegate.emit(event);
        addEvent(event);
    }

    @Override
    public void emit(Picked event) {
        delegate.emit(event);
        addEvent(event);
    }

    @Override
// Path: warehouse-model/src/main/java/warehouse/quality/Locked.java
// @Value
// public class Locked {
//     private final PaletteLabel paletteLabel;
// }


// Path: warehouse-model/src/test/java/warehouse/products/EventsAssert.java
import org.assertj.core.api.AbstractObjectAssert;
import org.assertj.core.api.Assertions;
import org.mockito.Mockito;
import warehouse.quality.Locked;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

package warehouse.products;



/**
 * Created by michal on 13.07.2016.
 */
public class EventsAssert implements ProductStock.EventsContract {

    private final ProductStock.EventsContract delegate;

    private final List<Object> events = new LinkedList<>();
    private final Map<Class<? extends Object>, Object> last = new HashMap<>();

    public EventsAssert(ProductStock.EventsContract delegate) {
        this.delegate = delegate;
    }

    public EventsAssert() {
        delegate = Mockito.mock(ProductStock.EventsContract.class);
    }

    @Override
    public void emit(Registered event) {
        delegate.emit(event);
        addEvent(event);
    }

    @Override
    public void emit(Stored event) {
        delegate.emit(event);
        addEvent(event);
    }

    @Override
    public void emit(Picked event) {
        delegate.emit(event);
        addEvent(event);
    }

    @Override
    public void emit(Locked event) {