package com.beloo.widget.chipslayoutmanager.gravity;
import android.graphics.Rect;
import com.beloo.widget.chipslayoutmanager.ParamsType;
import org.junit.Assume;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import static com.beloo.widget.chipslayoutmanager.ParamsType.INVALID;
import static com.beloo.widget.chipslayoutmanager.ParamsType.VALID;
import static org.junit.Assert.assertEquals;
@RunWith(Parameterized.class)
abstract class GravityModifierTest {
private IGravityModifier gravityModifier;
@Before
public void setUp() {
gravityModifier = getGravityModifier();
}
protected abstract IGravityModifier getGravityModifier();
private ParamsType paramsType;
private int minTop;
private int maxBottom;
private Rect testRect;
private Rect expectedResultRect;
GravityModifierTest(ParamsType paramsType, int minTop, int maxBottom, Rect testRect, Rect expectedResultRect) {
this.paramsType = paramsType;
this.minTop = minTop;
this.maxBottom = maxBottom;
this.testRect = testRect;
this.expectedResultRect = expectedResultRect;
}
@Test(expected = IllegalArgumentException.class)
public void invalidDataForModifierShouldThrowIllegalArgumentException() {
Assume.assumeTrue(paramsType.equals(INVALID));
gravityModifier.modifyChildRect(minTop, maxBottom, testRect);
}
@Test
public void modifierShouldAlignInputRect() {
Assume.assumeTrue(paramsType.equals(VALID));
Rect resultRect = gravityModifier.modifyChildRect(minTop, maxBottom, testRect);
assertEquals(expectedResultRect, resultRect);
}
}