//....
import org.junit.Test;

import static org.junit.Assert.*;

public class LiquidTest {

    @Test
    public void getAmountShouldThrowIllegalArgumentExceptionWhenGivenNegativeNumber() {
        try{
            new Liquid(-1);
            fail();
        } catch (IllegalArgumentException ignored){}
    }

    @Test
    public void getAmountShouldReturnConstructedValueWhenValid() {
        long input = 1L;
        long expectedResult = 1L;
        Liquid testGuy = new Liquid(input);
        long actualResult = testGuy.getAmount();
        assertEquals(expectedResult, actualResult);
    }

    @Test
    public void equalsShouldReturnFalseWhenNull() {
        assertFalse(new Liquid(0).equals(null));
    }

    @Test
    public void equalsShouldReturnTrueWhenSameAmount() {
        assertTrue(new Liquid(0).equals(new Liquid(0)));
    }

    @Test
    public void equalsShouldReturnTrueWhenSameObject() {
        Liquid liquid = new Liquid(0);
        assertTrue(liquid.equals(liquid));
    }
}
//....
public class WaterTest {

    @Test
    public void getAmountShouldThrowIllegalArgumentExceptionWhenGivenNegativeNumber() {
        try {
            new Water(-1);
            fail();
        } catch (IllegalArgumentException ignored) {
        }
    }

    @Test
    public void getAmountShouldReturnConstructedValueWhenValid() {
        long input = 1L;
        long expectedResult = 1L;
        Water testGuy = new Water(input);
        long actualResult = testGuy.getAmount();
        assertEquals(expectedResult, actualResult);
    }


    @Test
    public void equalsShouldReturnFalseWhenNull() {
        assertFalse(new Water(0).equals(null));
    }


    @Test
    public void equalsShouldReturnFalseWhenLiquid() {
        assertFalse(new Water(0).equals(new Liquid(0)));
    }

    @Test
    public void equalsShouldReturnTrueWhenSameAmount() {
        assertTrue(new Water(0).equals(new Water(0)));
    }

    @Test
    public void equalsShouldReturnTrueWhenSameAmountPolymorphisim() {
        Liquid liquid = new Water(0);
        assertTrue(new Water(0).equals(liquid));
    }

    @Test
    public void equalsShouldReturnTrueWhenSameObject() {
        Water liquid = new Water(0);
        assertTrue(liquid.equals(liquid));
    }

}