getTable() and getTables() return null for missing keys

This commit is contained in:
moandji.ezana 2015-04-29 21:46:22 +02:00
parent a210896477
commit 24a5134c2c
4 changed files with 24 additions and 14 deletions

View file

@ -203,23 +203,25 @@ public class Toml {
/**
* @param key A table name, not including square brackets.
* @return A new Toml instance. Empty if no value is found for key.
* @return A new Toml instance or <code>null</code> if no value is found for key.
*/
@SuppressWarnings("unchecked")
public Toml getTable(String key) {
return new Toml(null, (Map<String, Object>) get(key));
Map<String, Object> map = (Map<String, Object>) get(key);
return map != null ? new Toml(null, map) : null;
}
/**
* @param key Name of array of tables, not including square brackets.
* @return An empty {@link List} if no value is found for key.
* @return A {@link List} of Toml instances or <code>null</code> if no value is found for key.
*/
@SuppressWarnings("unchecked")
public List<Toml> getTables(String key) {
List<Map<String, Object>> tableArray = (List<Map<String, Object>>) get(key);
if (tableArray == null) {
return Collections.emptyList();
return null;
}
ArrayList<Toml> tables = new ArrayList<Toml>();

View file

@ -5,7 +5,6 @@ import static org.hamcrest.Matchers.hasSize;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.util.List;
@ -76,10 +75,10 @@ public class TableArrayTest {
}
@Test
public void should_return_empty_list_when_no_value_for_table_array() throws Exception {
public void should_return_null_for_missing_table_array() throws Exception {
List<Toml> tomls = new Toml().parse("[a]").getTables("b");
assertTrue(tomls.isEmpty());
assertNull(tomls);
}
@Test

View file

@ -54,14 +54,25 @@ public class TableTest {
}
@Test
public void should_handle_navigation_to_missing_value() throws Exception {
public void should_get_empty_table() throws Exception {
Toml toml = new Toml().parse("[a]");
assertTrue(toml.getTable("a").isEmpty());
}
@Test
public void should_return_null_for_missing_table() throws Exception {
assertNull(new Toml().getTable("a"));
}
@Test
public void should_return_null_when_navigating_to_missing_value() throws Exception {
Toml toml = new Toml();
assertNull(toml.getString("a.b"));
assertNull(toml.getString("a.b[0].c"));
assertNull(toml.getList("a.b"));
assertTrue(toml.getTable("a.b").isEmpty());
assertTrue(toml.getTable("a.b[0]").isEmpty());
assertNull(toml.getTable("a.b"));
assertNull(toml.getTable("a.b[0]"));
}
@Test

View file

@ -11,6 +11,7 @@ import java.util.Calendar;
import java.util.TimeZone;
import org.hamcrest.Matchers;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@ -64,10 +65,7 @@ public class TomlTest {
@Test
public void should_be_empty_if_no_values() throws Exception {
assertTrue(new Toml().isEmpty());
Toml toml = new Toml().parse("[a]");
assertTrue(toml.getTable("a").isEmpty());
assertTrue(toml.getTable("b").isEmpty());
assertFalse(toml.isEmpty());
assertFalse(new Toml().parse("a = 1").isEmpty());
}
@Test(expected = IllegalStateException.class)