/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.core.streaming;
import org.mule.tck.junit4.AbstractMuleTestCase;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import ru.yandex.qatools.allure.annotations.Description;
public abstract class InMemoryStreamingConfigContractTestCase extends AbstractMuleTestCase {
@Rule
public ExpectedException expectedException = ExpectedException.none();
@Test
@Description("Test that a valid config is indeed valid")
public void initialSizeEqualsMaxSizeWithNoExpansion() {
assertValid(1, 0, 1);
}
@Test
@Description("initial size of zero should be invalid")
public void zeroInitialSize() {
assertInvalid(0, 1, 10);
}
@Test
@Description("initial size cannot be negative")
public void negativeInitialSIze() {
assertInvalid(-1, 1, 10);
}
@Test
@Description("increment size cannot be negative")
public void negativeIncrementSize() {
assertInvalid(10, -1, 20);
}
@Test
@Description("initial size cannot be bigger the maxSize")
public void initialSizeBiggerThanMaxSize() {
assertInvalid(100, 1, 10);
}
@Test
@Description("incrementSize cannot be bigger than the maxSize")
public void incrementSizeBiggerThanMaxSize() {
assertInvalid(10, 100, 20);
}
@Test
@Description("initialSize + incrementSize cannot be bigger than maxSize")
public void invalidExpansionSize() {
assertInvalid(1, 100, 100);
}
private void assertValid(int initialSize, int increment, int maxSize) {
createConfig(initialSize, increment, maxSize);
}
private void assertInvalid(int initialSize, int increment, int maxSize) {
expectedException.expect(IllegalArgumentException.class);
createConfig(initialSize, increment, maxSize);
}
protected abstract void createConfig(int initialSize, int increment, int maxSize);
}