diff options
Diffstat (limited to 'configgen/src/test/java/com/yahoo/config/codegen/DefLineParsingTest.java')
-rw-r--r-- | configgen/src/test/java/com/yahoo/config/codegen/DefLineParsingTest.java | 221 |
1 files changed, 221 insertions, 0 deletions
diff --git a/configgen/src/test/java/com/yahoo/config/codegen/DefLineParsingTest.java b/configgen/src/test/java/com/yahoo/config/codegen/DefLineParsingTest.java new file mode 100644 index 00000000000..515f7838436 --- /dev/null +++ b/configgen/src/test/java/com/yahoo/config/codegen/DefLineParsingTest.java @@ -0,0 +1,221 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.config.codegen; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.*; + +import org.junit.Test; + +/** + * Tests parsing of a single line of a .def file + * + * @author <a href="mailto:bratseth@yahoo-inc.com">Jon S Bratseth</a> + * @author gjoranv + */ +public class DefLineParsingTest { + + @Test(expected = IllegalArgumentException.class) + public void require_that_null_default_is_not_allowed() { + new DefLine("s string default=null"); + } + + @Test + public void testParseIntArray() { + DefLine l = new DefLine("foo[] int"); + + assertEquals("foo[]", l.getName()); + assertNull(l.getDefault()); + assertEquals("int", l.getType().getName()); + } + + @Test + public void testParseIntMap() { + DefLine l = new DefLine("foo{} int"); + + assertEquals("foo{}", l.getName()); + assertNull(l.getDefault()); + assertEquals("int", l.getType().getName()); + } + + @Test + public void testParseInnerMap() { + DefLine l = new DefLine("foo{}.i int"); + + assertEquals("foo{}.i", l.getName()); + assertNull(l.getDefault()); + assertEquals("int", l.getType().getName()); + } + + @Test + public void testParseEnum() { + DefLine l = new DefLine("idtype enum { us_east, US_WEST, EMEA } default=EMEA"); + + assertEquals("idtype", l.getName()); + assertEquals("EMEA", l.getDefault().getValue()); + assertEquals("EMEA", l.getDefault().getStringRepresentation()); + assertEquals("enum", l.getType().getName()); + assertEquals("us_east", l.getType().getEnumArray()[0]); + assertEquals("US_WEST", l.getType().getEnumArray()[1]); + assertEquals("EMEA", l.getType().getEnumArray()[2]); + } + + @Test + public void testParseDefaultReference() { + DefLine l = new DefLine("foo.bar reference default=\"value\""); + + assertEquals("foo.bar", l.getName()); + assertEquals("value", l.getDefault().getValue()); + assertEquals("\"value\"", l.getDefault().getStringRepresentation()); + assertEquals("reference", l.getType().getName()); + } + + @Test + public void testParseNoDefaultReference() { + DefLine l = new DefLine("foo.bar reference"); + + assertEquals("foo.bar", l.getName()); + assertNull(l.getDefault()); + assertEquals("reference", l.getType().getName()); + } + + /** + * 'file' parameters with default value is currently (2010-01-05) not allowed, but that might change in + * the future, so the test is included to verify that value and name can be retrieved. + */ + @Test + public void testParseDefaultFile() { + DefLine l = new DefLine("fileWithDef file default=\"value\""); + + assertEquals("fileWithDef", l.getName()); + assertEquals("value", l.getDefault().getValue()); + assertEquals("\"value\"", l.getDefault().getStringRepresentation()); + assertEquals("file", l.getType().getName()); + } + + @Test + public void testParseNoDefaultFile() { + DefLine l = new DefLine("fileVal file"); + + assertEquals("fileVal", l.getName()); + assertNull(l.getDefault()); + assertEquals("file", l.getType().getName()); + } + + @Test + public void testParseDefaultInt() { + DefLine l = new DefLine("foo int default=1000"); + + assertEquals("foo", l.getName()); + assertEquals("1000", l.getDefault().getValue()); + assertEquals("1000", l.getDefault().getStringRepresentation()); + assertEquals("int", l.getType().getName()); + } + + @Test + public void testParseDefaultLong() { + DefLine l = new DefLine("foo long default=9223372036854775807"); + + assertEquals("foo", l.getName()); + assertEquals("9223372036854775807", l.getDefault().getValue()); + assertEquals("9223372036854775807", l.getDefault().getStringRepresentation()); + assertEquals("long", l.getType().getName()); + } + + @Test + public void testParseDefaultDouble() { + DefLine l = new DefLine("foo double default=5.37"); + + assertEquals("foo", l.getName()); + assertEquals("5.37", l.getDefault().getValue()); + assertEquals("5.37", l.getDefault().getStringRepresentation()); + assertEquals("double", l.getType().getName()); + } + + @Test + public void testParseDefaultFalseBoolean() { + DefLine l = new DefLine("foo bool default=false"); + + assertEquals("foo", l.getName()); + assertEquals("false", l.getDefault().getValue()); + assertEquals("false", l.getDefault().getStringRepresentation()); + assertEquals("bool", l.getType().getName()); + } + + @Test + public void testParseDefaultTrueBoolean() { + DefLine l = new DefLine("foo bool default=true"); + + assertEquals("foo", l.getName()); + assertEquals("true", l.getDefault().getValue()); + assertEquals("true", l.getDefault().getStringRepresentation()); + assertEquals("bool", l.getType().getName()); + } + + @Test + public void testParseNoDefaultString() { + DefLine l = new DefLine("foo.bar string"); + + assertEquals("foo.bar", l.getName()); + assertNull(l.getDefault()); + assertEquals("string", l.getType().getName()); + } + + @Test + public void testParseDefaultString() { + DefLine l = new DefLine("foo.bar string default=\"value\""); + + assertEquals("foo.bar", l.getName()); + assertEquals("value", l.getDefault().getValue()); + assertEquals("\"value\"", l.getDefault().getStringRepresentation()); + assertEquals("string", l.getType().getName()); + } + + @Test + public void testParseDefaultEmptyString() { + DefLine l = new DefLine("foo.bar string default=\"\""); + + assertEquals("foo.bar", l.getName()); + assertEquals("", l.getDefault().getValue()); + assertEquals("\"\"", l.getDefault().getStringRepresentation()); + assertEquals("string", l.getType().getName()); + } + + @Test + public void testParseDefaultStringUnquoted() { + DefLine l = new DefLine("foo.bar string default=value"); + + assertEquals("foo.bar", l.getName()); + assertEquals("value", l.getDefault().getValue()); + assertEquals("\"value\"", l.getDefault().getStringRepresentation()); + assertEquals("string", l.getType().getName()); + } + + @Test + public void testParseStringnullDefaultString() { + DefLine l = new DefLine("foo.bar string default=\"null\""); + + assertEquals("foo.bar", l.getName()); + assertEquals("null", l.getDefault().getValue()); + assertEquals("\"null\"", l.getDefault().getStringRepresentation()); + assertEquals("string", l.getType().getName()); + } + + @Test + public void testRanges() { + DefLine i = new DefLine("i int range=[0, 100]"); + DefLine l = new DefLine("l long range=[-1e10, 0]"); + DefLine d = new DefLine("d double range=[0, 1.0]"); + assertThat(i.getRange(), is("[0, 100]")); + assertThat(l.getRange(), is("[-1e10, 0]")); + assertThat(d.getRange(), is("[0, 1.0]")); + } + + @Test + public void testRestartSpecification() { + DefLine r0 = new DefLine("i int"); + DefLine r1 = new DefLine("i int restart"); + assertFalse(r0.getRestart()); + assertTrue(r1.getRestart()); + } + +} |