//////////////////////////////////////// // Programming project code // UniBw M, 2022, 2023, 2024 // www.unibw.de/inf2 // (c) Mark Minas (mark.minas@unibw.de) //////////////////////////////////////// package pp.util.config; import org.junit.Before; import org.junit.Test; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Properties; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public class ConfigTest { private TestConfig config; @Before public void setUp() { config = new TestConfig(); } @Test public void testReadFromProperties() { Properties properties = new Properties(); properties.setProperty("test.string", "hello"); //NON-NLS properties.setProperty("test.int", "42"); properties.setProperty("test.boolean", "true"); //NON-NLS properties.setProperty("test.intArray", "1; 2 ;3;4"); config.readFrom(properties); assertEquals("hello", config.getTestString()); assertEquals(42, config.getTestInt()); assertTrue(config.isTestBoolean()); assertArrayEquals(new int[]{1, 2, 3, 4}, config.getTestIntArray()); } @Test public void testReadFromFile() throws IOException { Properties properties = new Properties(); properties.setProperty("test.string", "fileTest"); properties.setProperty("test.int", "24"); properties.setProperty("test.boolean", "false"); //NON-NLS properties.setProperty("test.intArray", "10;20;30"); File tempFile = File.createTempFile("testConfig", ".properties"); try (FileWriter writer = new FileWriter(tempFile)) { properties.store(writer, null); } config.readFrom(tempFile); assertEquals("fileTest", config.getTestString()); assertEquals(24, config.getTestInt()); assertFalse(config.isTestBoolean()); assertArrayEquals(new int[]{10, 20, 30}, config.getTestIntArray()); // Clean up tempFile.delete(); } @Test public void testConvertToType() { assertEquals(42, config.convertToType("42", int.class)); assertEquals(true, config.convertToType("true", boolean.class)); //NON-NLS assertEquals(3.14, config.convertToType("3.14", double.class)); } @Test(expected = IllegalArgumentException.class) public void testConvertToTypeWithUnsupportedType() { config.convertToType("unsupported", Object.class); //NON-NLS } @Test public void testToString() { Properties properties = new Properties(); properties.setProperty("test.string", "stringValue"); properties.setProperty("test.int", "123"); properties.setProperty("test.boolean", "true"); //NON-NLS properties.setProperty("test.intArray", "5;6;7"); config.readFrom(properties); String expected = "[\ntest.boolean -> testBoolean = true,\n" + "test.int -> testInt = 123,\n" + "test.intArray -> testIntArray = {5, 6, 7},\n" + "test.string -> testString = stringValue\n" + "]"; assertEquals(expected, config.toString()); } }