/* * Copyright (c) 2017, PostgreSQL Global Development Group * See the LICENSE file in the project root for more information. */ package org.postgresql.test.util; import org.postgresql.util.ExpressionProperties; import org.junit.Assert; import org.junit.Test; import java.util.Properties; public class ExpressionPropertiesTest { @Test public void simpleReplace() { ExpressionProperties p = new ExpressionProperties(); p.put("server", "app1"); p.put("file", "pgjdbc_${server}.txt"); Assert.assertEquals("${server} should be replaced", "pgjdbc_app1.txt", p.getProperty("file")); } @Test public void replacementMissing() { ExpressionProperties p = new ExpressionProperties(); p.put("file", "pgjdbc_${server}.txt"); Assert.assertEquals("${server} should be kept as is as there is no replacement", "pgjdbc_${server}.txt", p.getProperty("file")); } @Test public void multipleReplacements() { ExpressionProperties p = new ExpressionProperties(); p.put("server", "app1"); p.put("file", "${server}${server}${server}${server}${server}"); Assert.assertEquals("All the ${server} entries should be replaced", "app1app1app1app1app1", p.getProperty("file")); } @Test public void multipleParentProperties() { Properties p1 = new Properties(); p1.setProperty("server", "app1_${app.type}"); Properties p2 = new Properties(); p2.setProperty("app.type", "production"); ExpressionProperties p = new ExpressionProperties(p1, p2); p.put("file", "pgjdbc_${server}.txt"); Assert.assertEquals("All the ${...} entries should be replaced", "pgjdbc_app1_production.txt", p.getProperty("file")); } @Test public void rawValue() { ExpressionProperties p = new ExpressionProperties(); p.put("server", "app1"); p.put("file", "${server}${server}${server}${server}${server}"); Assert.assertEquals("No replacements in raw value expected", "${server}${server}${server}${server}${server}", p.getRawPropertyValue("file")); } }