summaryrefslogtreecommitdiff
path: root/qpid/java/broker-plugins/experimental/info/src/test/java/org/apache/qpid/info/test/IniFileReaderTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java/broker-plugins/experimental/info/src/test/java/org/apache/qpid/info/test/IniFileReaderTest.java')
-rw-r--r--qpid/java/broker-plugins/experimental/info/src/test/java/org/apache/qpid/info/test/IniFileReaderTest.java136
1 files changed, 136 insertions, 0 deletions
diff --git a/qpid/java/broker-plugins/experimental/info/src/test/java/org/apache/qpid/info/test/IniFileReaderTest.java b/qpid/java/broker-plugins/experimental/info/src/test/java/org/apache/qpid/info/test/IniFileReaderTest.java
new file mode 100644
index 0000000000..77ecaa2176
--- /dev/null
+++ b/qpid/java/broker-plugins/experimental/info/src/test/java/org/apache/qpid/info/test/IniFileReaderTest.java
@@ -0,0 +1,136 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ *
+ */
+
+package org.apache.qpid.info.test;
+
+import junit.framework.TestCase;
+import org.apache.qpid.info.util.IniFileReader;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * Test the Loading of the ini file reader by first writing
+ * out a correct ini file.
+ */
+public class IniFileReaderTest extends TestCase
+{
+
+ public void testLoad()
+ {
+ IniFileReader ifr = new IniFileReader();
+ File iniFile = null;
+ try
+ {
+ iniFile = File.createTempFile("temp", "ini");
+ iniFile.deleteOnExit();
+ BufferedWriter writer = new BufferedWriter(new FileWriter(iniFile));
+ writer.write("# Global Comment1\n");
+ writer.write("globalprop1=globalval1\n");
+ writer.write("globalprop2=globalval2\n");
+ writer.write("\n");
+ writer.write("[Section1] # Comment on Section\n");
+ writer.write("key1=val1 # Comment on Value\n");
+ writer.write("key2=val2\n");
+ writer.write("\n");
+ writer.write("#Section2 Comment\n");
+ writer.write("[Section2]\n");
+ writer.write("key3=val3\n");
+ writer.write("key4=val4\n");
+ writer.write("key5=val5\n");
+ writer.write("\n");
+ writer.write("[Section3]\n");
+ writer.write("key6=val6\n");
+ writer.write("key7=val7\n");
+ writer.write("\n");
+ writer.close();
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ fail("Unable to create temporary File");
+ }
+ ifr.load(iniFile.getAbsolutePath());
+ Map<String, Properties> sections = ifr.getSections();
+ assertNotNull("Sections not null", sections);
+ assertEquals("Have 4 sections", sections.keySet().size(), 4);
+ assertTrue("Get globalprop1", sections.get("").getProperty("globalprop1").equals("globalval1"));
+ assertTrue("Get globalprop2", sections.get("").getProperty("globalprop2").equals("globalval2"));
+ assertNotNull("Section1 not null", sections.get("Section1"));
+ assertEquals("Section1 has 2 properties", sections.get("Section1").size(), 2);
+ assertTrue("Section1 key1 has val1", sections.get("Section1").getProperty("key1").equals("val1"));
+ assertTrue("Section1 key2 has val2", sections.get("Section1").getProperty("key2").equals("val2"));
+ assertEquals("Section2 has 3 properties", sections.get("Section2").size(), 3);
+ assertTrue("Section2 key3 has val3", sections.get("Section2").getProperty("key3").equals("val3"));
+ assertTrue("Section2 key4 has val4", sections.get("Section2").getProperty("key4").equals("val4"));
+ assertTrue("Section2 key5 has val5", sections.get("Section2").getProperty("key5").equals("val5"));
+ assertEquals("Section3 has 2 properties", sections.get("Section3").size(), 2);
+ assertTrue("Section3 key6 has val6", sections.get("Section3").getProperty("key6").equals("val6"));
+ assertTrue("Section3 key7 has val7", sections.get("Section3").getProperty("key7").equals("val7"));
+ }
+
+ /**
+ * Test to ensure that the loading of a file with an unclosed section header
+ * fails to parse.
+ *
+ * Section needs to be fully enclosed in square brackets '[<name>]'
+ */
+ public void testIncompleteSection1Load()
+ {
+ IniFileReader ifr = new IniFileReader();
+ File iniFile = null;
+ try
+ {
+ iniFile = File.createTempFile(getName(), "ini");
+ iniFile.deleteOnExit();
+ BufferedWriter writer = new BufferedWriter(new FileWriter(iniFile));
+ writer.write("# Global Comment1\n");
+ writer.write("globalprop1=globalval1\n");
+ writer.write("globalprop2=globalval2\n");
+ writer.write("\n");
+ writer.write("[Section1\n"); // Note '[Section1' not complete
+ writer.write("key1=val1\n");
+ writer.write("key2=val2\n");
+ writer.write("\n");
+ writer.close();
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ fail("Unable to create temporary File");
+ }
+ try
+ {
+ ifr.load(iniFile.getAbsolutePath());
+ fail("File should fail to parse");
+ }
+ catch (IllegalArgumentException iae)
+ {
+ assertEquals("Incorrect Exception", "Section1 is not closed", iae.getMessage());
+ }
+
+ }
+
+}