/*
* #%L
* Wisdom-Framework
* %%
* Copyright (C) 2013 - 2014 Wisdom Framework
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
package org.wisdom.test.parents;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import org.junit.Test;
import org.wisdom.api.http.Context;
import java.util.concurrent.TimeUnit;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Fail.fail;
public class FakeConfigurationTest {
@Test
public void testGetConfiguration() throws Exception {
FakeConfiguration configuration = new FakeConfiguration(ImmutableMap.<String, Object>of("key", "value"));
assertThat(configuration.getConfiguration("prefix")).isNull();
configuration = new FakeConfiguration(ImmutableMap.of("k", "v", "prefix", configuration));
assertThat(configuration.getConfiguration("prefix")).isNotNull();
assertThat(configuration.getConfiguration("prefix").get("key")).isEqualTo("value");
}
@Test
public void testHas() throws Exception {
FakeConfiguration configuration = new FakeConfiguration(ImmutableMap.<String, Object>of("key", "value"));
assertThat(configuration.has("key")).isTrue();
assertThat(configuration.has("missing")).isFalse();
}
@Test
public void testGet() throws Exception {
FakeConfiguration configuration = new FakeConfiguration(ImmutableMap.<String, Object>of("key", "value"));
assertThat(configuration.get("key")).isEqualToIgnoringCase("value");
assertThat(configuration.get("missing")).isNull();
assertThat(configuration.getWithDefault("missing", "default")).isEqualTo("default");
assertThat(configuration.getWithDefault("key", "default")).isEqualTo("value");
assertThat(configuration.getOrDie("key")).isEqualToIgnoringCase("value");
try {
configuration.getOrDie("missing");
fail("Exception expected");
} catch (RuntimeException e) {
// OK
}
}
@Test
public void testGetWithClass() throws Exception {
FakeConfiguration configuration = new FakeConfiguration(
ImmutableMap.of("key", "value", "stuff", new FakeContext()));
assertThat(configuration.get("stuff", FakeContext.class)).isNotNull();
assertThat(configuration.get("stuff", Context.class)).isNotNull();
assertThat(configuration.get("missing", FakeContext.class)).isNull();
assertThat(configuration.get("missing", FakeContext.class, new FakeContext())).isNotNull();
assertThat(configuration.get("stuff", FakeContext.class, (FakeContext) null)).isNotNull();
assertThat(configuration.get("stuff", FakeContext.class, "broken")).isNotNull();
}
@Test
public void testGetOrDieWithData() throws Exception {
FakeConfiguration configuration = new FakeConfiguration(
ImmutableMap.of("key", "value", "stuff", new FakeContext()));
assertThat(configuration.getOrDie("stuff", FakeContext.class)).isNotNull();
}
@Test(expected = RuntimeException.class)
public void testGetOrDieWithoutData() throws Exception {
FakeConfiguration configuration = new FakeConfiguration(
ImmutableMap.of("key", "value", "stuff", new FakeContext()));
configuration.getOrDie("missing", FakeContext.class);
}
@Test
public void testIntegers() {
FakeConfiguration configuration = new FakeConfiguration(ImmutableMap.<String, Object>of("key", "value",
"integer", 1, "integer2", Integer.valueOf(2)));
assertThat(configuration.getInteger("integer")).isEqualTo(1);
assertThat(configuration.getInteger("integer2")).isEqualTo(2);
assertThat(configuration.getIntegerOrDie("integer")).isEqualTo(1);
assertThat(configuration.getIntegerWithDefault("integer", 3)).isEqualTo(1);
assertThat(configuration.getIntegerWithDefault("missing", 3)).isEqualTo(3);
try {
configuration.getIntegerOrDie("missing");
fail("Exception expected");
} catch (RuntimeException e) {
// OK
}
}
@Test
public void testDoubles() {
FakeConfiguration configuration = new FakeConfiguration(ImmutableMap.<String, Object>of("key", "value",
"num", 1.0));
assertThat(configuration.getDouble("num")).isEqualTo(1.0);
assertThat(configuration.getDoubleOrDie("num")).isEqualTo(1.0);
assertThat(configuration.getDoubleWithDefault("num", 3.0)).isEqualTo(1.0);
assertThat(configuration.getDoubleWithDefault("missing", 3.0)).isEqualTo(3.0);
try {
configuration.getIntegerOrDie("missing");
fail("Exception expected");
} catch (RuntimeException e) {
// OK
}
}
@Test
public void testLong() {
FakeConfiguration configuration = new FakeConfiguration(ImmutableMap.<String, Object>of("key", "value",
"num", 1l));
assertThat(configuration.getLong("num")).isEqualTo(1l);
assertThat(configuration.getLong("missing")).isNull();
assertThat(configuration.getLongOrDie("num")).isEqualTo(1l);
assertThat(configuration.getLongWithDefault("num", 3l)).isEqualTo(1l);
assertThat(configuration.getLongWithDefault("missing", 3l)).isEqualTo(3l);
try {
configuration.getLongOrDie("missing");
fail("Exception expected");
} catch (RuntimeException e) {
// OK
}
}
@Test
public void testGetBoolean() throws Exception {
FakeConfiguration configuration = new FakeConfiguration(ImmutableMap.<String, Object>of("key", "value",
"num", true));
assertThat(configuration.getBoolean("num")).isTrue();
assertThat(configuration.getBoolean("missing")).isNull();
assertThat(configuration.getBooleanOrDie("num")).isTrue();
assertThat(configuration.getBooleanWithDefault("num", false)).isTrue();
assertThat(configuration.getBooleanWithDefault("missing", false)).isFalse();
try {
configuration.getBooleanOrDie("missing");
fail("Exception expected");
} catch (RuntimeException e) {
// OK
}
}
@Test
public void testGetDuration() throws Exception {
FakeConfiguration configuration = new FakeConfiguration(ImmutableMap.<String, Object>of("key", "value",
"duration", 1000l));
assertThat(configuration.getDuration("duration", TimeUnit.SECONDS)).isEqualTo(1000);
assertThat(configuration.getDuration("missing", TimeUnit.HOURS)).isNull();
assertThat(configuration.getDuration("missing", TimeUnit.HOURS, 2)).isEqualTo(2);
}
@Test
public void testGetBytes() throws Exception {
FakeConfiguration configuration = new FakeConfiguration(ImmutableMap.<String, Object>of("key", "value",
"size", 1024l));
assertThat(configuration.getBytes("size")).isEqualTo(1024);
assertThat(configuration.getBytes("missing")).isNull();
assertThat(configuration.getBytes("missing", 2)).isEqualTo(2);
}
@Test
public void testGetStringArray() throws Exception {
FakeConfiguration configuration = new FakeConfiguration(ImmutableMap.<String, Object>of("key", "value",
"array", new String[] {"a", "b"}));
assertThat(configuration.getStringArray("array")).hasSize(2);
assertThat(configuration.getStringArray("missing")).hasSize(0);
}
@Test
public void testGetList() throws Exception {
FakeConfiguration configuration = new FakeConfiguration(ImmutableMap.<String, Object>of("key", "value",
"array", ImmutableList.of("a", "b")));
assertThat(configuration.getList("array")).hasSize(2);
assertThat(configuration.getList("missing")).hasSize(0);
}
@Test
public void testAsProperties() throws Exception {
FakeConfiguration configuration = new FakeConfiguration(ImmutableMap.<String, Object>of("key", "value",
"num", true));
assertThat(configuration.asProperties()).hasSize(2);
}
@Test
public void testAsMap() throws Exception {
FakeConfiguration configuration = new FakeConfiguration(ImmutableMap.<String, Object>of("key", "value",
"num", true));
assertThat(configuration.asMap()).hasSize(2);
}
}