/*
* 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.openejb.arquillian.common;
import junit.framework.TestCase;
import java.net.URL;
import java.util.Collection;
import java.util.List;
import java.util.Properties;
/**
* @version $Rev$ $Date$
*/
public class ConfigurationOverridesTest extends TestCase {
/**
* This test is to guarantee the order that we find the related properties
* files. Changing the order would significantly change the logic.
*
* Do not change the order
*
* Note: the order is guaranteed by org.apache.openejb.arquillian.common.ConfigurationOverrides#apply(java.lang.Object, java.util.Properties, java.lang.String...)
* because it needs to know if we work on a default or not property file
* to be able to not override already set properties with defaults ones
*
* @throws Exception
*/
public void testFindPropertiesFiles() throws Exception {
String[] prefixes = { "color", "color.orange" };
final List<URL> color = ConfigurationOverrides.apply(new Color(), new Properties(), prefixes);
assertEquals(4, color.size());
assertTrue(color.get(0).toExternalForm().endsWith("/default.arquillian-color.properties"));
assertTrue(color.get(1).toExternalForm().endsWith("/default.arquillian-color-orange.properties"));
assertTrue(color.get(2).toExternalForm().endsWith("/arquillian-color.properties"));
assertTrue(color.get(3).toExternalForm().endsWith("/arquillian-color-orange.properties"));
}
public void testApply() throws Exception {
{
final Color color = new Color();
ConfigurationOverrides.apply(color, new Properties(), "color");
assertEquals(240, color.red);
assertEquals(241, color.green);
assertEquals(255, color.blue);
assertEquals("1.0", color.alpha);
}
{
final Color color = new Color();
final Properties systemProperties = new Properties();
systemProperties.setProperty("color.green", "20");
systemProperties.setProperty("blue", "20"); // should have no effect
ConfigurationOverrides.apply(color, systemProperties, "color");
assertEquals(240, color.red);
assertEquals(20, color.green);
assertEquals(255, color.blue);
assertEquals("1.0", color.alpha);
}
{
final Color color = new Color();
ConfigurationOverrides.apply(color, new Properties(), "color", "color.orange");
assertEquals(240, color.red);
assertEquals(140, color.green);
assertEquals(0, color.blue);
assertEquals("1.0", color.alpha);
}
{
final Properties systemProperties = new Properties();
systemProperties.setProperty("color.blue", "1");
systemProperties.setProperty("red", "20"); // should have no effect
final Color color = new Color();
ConfigurationOverrides.apply(color, systemProperties, "color", "color.orange");
assertEquals(240, color.red);
assertEquals(140, color.green);
assertEquals(1, color.blue);
assertEquals("1.0", color.alpha);
}
{
final Properties systemProperties = new Properties();
systemProperties.setProperty("color.blue", "1");
systemProperties.setProperty("color.orange.blue", "2");
systemProperties.setProperty("red", "20"); // should have no effect
final Color color = new Color();
ConfigurationOverrides.apply(color, systemProperties, "color", "color.orange");
assertEquals(240, color.red);
assertEquals(140, color.green);
assertEquals(2, color.blue);
assertEquals("1.0", color.alpha);
}
}
public static class Color {
private int red;
private int green;
private int blue;
private String alpha;
public int getRed() {
return red;
}
public void setRed(int red) {
this.red = red;
}
public int getGreen() {
return green;
}
public void setGreen(int green) {
this.green = green;
}
public int getBlue() {
return blue;
}
public void setBlue(int blue) {
this.blue = blue;
}
public String getAlpha() {
return alpha;
}
public void setAlpha(String alpha) {
this.alpha = alpha;
}
}
}