package org.togglz.testing;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import org.togglz.core.Feature;
import org.togglz.core.util.NamedFeature;
public class TestFeatureManagerTest {
private final TestFeatureManager manager = new TestFeatureManager(MyFeatures.class);
@Test
public void featureShouldBeInactiveByDefault() {
assertFalse(manager.isActive(MyFeatures.ONE));
}
@Test
public void shouldToggleIndividualFeature() {
// enable
manager.enable(MyFeatures.ONE);
assertTrue(manager.isActive(MyFeatures.ONE));
// disable
manager.disable(MyFeatures.ONE);
assertFalse(manager.isActive(MyFeatures.ONE));
}
@Test
public void shouldToggleAllFeatures() {
// enable
manager.enableAll();
assertTrue(manager.isActive(MyFeatures.ONE));
assertTrue(manager.isActive(MyFeatures.TWO));
// disable
manager.disableAll();
assertFalse(manager.isActive(MyFeatures.ONE));
assertFalse(manager.isActive(MyFeatures.TWO));
}
@Test
public void shouldSupportTogglingUntypedFeature() {
// enable
manager.enable(new NamedFeature("ONE"));
assertTrue(manager.isActive(MyFeatures.ONE));
// disable
manager.disable(new NamedFeature("ONE"));
assertFalse(manager.isActive(MyFeatures.ONE));
}
@Test
public void shouldSupportReadingWithNamedFeature() {
// enable
manager.enable(MyFeatures.ONE);
assertTrue(manager.isActive(new NamedFeature("ONE")));
// disable
manager.disable(MyFeatures.ONE);
assertFalse(manager.isActive(new NamedFeature("ONE")));
}
private enum MyFeatures implements Feature {
ONE,
TWO;
}
}