import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;

import org.junit.jupiter.api.Test;

public class OnlinePurchaseManagerTest
{
    @Test
    public void testCountElectronicsByMakerAgainstExamples()
    {
        OnlinePurchaseManager opm = new OnlinePurchaseManager();
        opm.purchases.add(new Gizmo("ABC", true));
        opm.purchases.add(new Gizmo("ABC", false));
        opm.purchases.add(new Gizmo("XYZ", true));
        opm.purchases.add(new Gizmo("lmnop", false));
        opm.purchases.add(new Gizmo("ABC", true));
        opm.purchases.add(new Gizmo("ABC", false));

        assertEquals(2, opm.countElectronicsByMaker("ABC"));
        assertEquals(0, opm.countElectronicsByMaker("lmnop"));
        assertEquals(1, opm.countElectronicsByMaker("XYZ"));
        assertEquals(0, opm.countElectronicsByMaker("QRP"));
    }

    @Test
    public void testHasAdjacentEqualPair()
    {
        OnlinePurchaseManager opm = new OnlinePurchaseManager();
        assertFalse(opm.hasAdjacentEqualPair());

        opm.purchases.add(new Gizmo("ABC", true));
        assertFalse(opm.hasAdjacentEqualPair());

        opm.purchases.add(new Gizmo("ABC", true));
        assertTrue(opm.hasAdjacentEqualPair());

        opm = new OnlinePurchaseManager();
        opm.purchases.add(new Gizmo("ABC", true));
        opm.purchases.add(new Gizmo("ABC", false));
        assertFalse(opm.hasAdjacentEqualPair());

        opm.purchases.add(new Gizmo("XYZ", true));
        opm.purchases.add(new Gizmo("ABC", false));
        opm.purchases.add(new Gizmo("ABC", false));
        assertTrue(opm.hasAdjacentEqualPair());

        opm = new OnlinePurchaseManager();
        opm.purchases.add(new Gizmo("ABC", true));
        opm.purchases.add(new Gizmo("ABC", false));
        opm.purchases.add(new Gizmo("XYZ", true));
        opm.purchases.add(new Gizmo("lmnop", false));
        opm.purchases.add(new Gizmo("ABC", true));
        opm.purchases.add(new Gizmo("ABC", false));
        assertFalse(opm.hasAdjacentEqualPair());
    }
}
