1 /* 2 * Copyright 2002-2011 the original author or authors. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package org.springframework.core.env; 18 19 import static org.hamcrest.CoreMatchers.equalTo; 20 import static org.hamcrest.CoreMatchers.is; 21 import static org.hamcrest.CoreMatchers.nullValue; 22 import static org.junit.Assert.assertThat; 23 24 import java.util.List; 25 26 import org.junit.Test; 27 28 /** 29 * Unit tests for {@link SimpleCommandLinePropertySource}. 30 * 31 * @author Chris Beams 32 * @since 3.1 33 */ 34 public class SimpleCommandLinePropertySourceTests { 35 36 @Test withDefaultName()37 public void withDefaultName() { 38 PropertySource<?> ps = new SimpleCommandLinePropertySource(); 39 assertThat(ps.getName(), 40 equalTo(CommandLinePropertySource.COMMAND_LINE_PROPERTY_SOURCE_NAME)); 41 } 42 43 @Test withCustomName()44 public void withCustomName() { 45 PropertySource<?> ps = new SimpleCommandLinePropertySource("ps1", new String[0]); 46 assertThat(ps.getName(), equalTo("ps1")); 47 } 48 49 @Test withNoArgs()50 public void withNoArgs() { 51 PropertySource<?> ps = new SimpleCommandLinePropertySource(); 52 assertThat(ps.containsProperty("foo"), is(false)); 53 assertThat(ps.getProperty("foo"), nullValue()); 54 } 55 56 @Test withOptionArgsOnly()57 public void withOptionArgsOnly() { 58 CommandLinePropertySource<?> ps = 59 new SimpleCommandLinePropertySource("--o1=v1", "--o2"); 60 assertThat(ps.containsProperty("o1"), is(true)); 61 assertThat(ps.containsProperty("o2"), is(true)); 62 assertThat(ps.containsProperty("o3"), is(false)); 63 assertThat(ps.getProperty("o1"), equalTo("v1")); 64 assertThat(ps.getProperty("o2"), equalTo("")); 65 assertThat(ps.getProperty("o3"), nullValue()); 66 } 67 68 @Test withDefaultNonOptionArgsNameAndNoNonOptionArgsPresent()69 public void withDefaultNonOptionArgsNameAndNoNonOptionArgsPresent() { 70 PropertySource<?> ps = new SimpleCommandLinePropertySource("--o1=v1", "--o2"); 71 72 assertThat(ps.containsProperty("nonOptionArgs"), is(false)); 73 assertThat(ps.containsProperty("o1"), is(true)); 74 assertThat(ps.containsProperty("o2"), is(true)); 75 76 assertThat(ps.containsProperty("nonOptionArgs"), is(false)); 77 assertThat(ps.getProperty("nonOptionArgs"), nullValue()); 78 } 79 80 @Test withDefaultNonOptionArgsNameAndNonOptionArgsPresent()81 public void withDefaultNonOptionArgsNameAndNonOptionArgsPresent() { 82 CommandLinePropertySource<?> ps = 83 new SimpleCommandLinePropertySource("--o1=v1", "noa1", "--o2", "noa2"); 84 85 assertThat(ps.containsProperty("nonOptionArgs"), is(true)); 86 assertThat(ps.containsProperty("o1"), is(true)); 87 assertThat(ps.containsProperty("o2"), is(true)); 88 89 String nonOptionArgs = ps.getProperty("nonOptionArgs"); 90 assertThat(nonOptionArgs, equalTo("noa1,noa2")); 91 } 92 93 @Test withCustomNonOptionArgsNameAndNoNonOptionArgsPresent()94 public void withCustomNonOptionArgsNameAndNoNonOptionArgsPresent() { 95 CommandLinePropertySource<?> ps = 96 new SimpleCommandLinePropertySource("--o1=v1", "noa1", "--o2", "noa2"); 97 ps.setNonOptionArgsPropertyName("NOA"); 98 99 assertThat(ps.containsProperty("nonOptionArgs"), is(false)); 100 assertThat(ps.containsProperty("NOA"), is(true)); 101 assertThat(ps.containsProperty("o1"), is(true)); 102 assertThat(ps.containsProperty("o2"), is(true)); 103 String nonOptionArgs = ps.getProperty("NOA"); 104 assertThat(nonOptionArgs, equalTo("noa1,noa2")); 105 } 106 107 @Test covertNonOptionArgsToStringArrayAndList()108 public void covertNonOptionArgsToStringArrayAndList() { 109 CommandLinePropertySource<?> ps = 110 new SimpleCommandLinePropertySource("--o1=v1", "noa1", "--o2", "noa2"); 111 StandardEnvironment env = new StandardEnvironment(); 112 env.getPropertySources().addFirst(ps); 113 114 String nonOptionArgs = env.getProperty("nonOptionArgs"); 115 assertThat(nonOptionArgs, equalTo("noa1,noa2")); 116 117 String[] nonOptionArgsArray = env.getProperty("nonOptionArgs", String[].class); 118 assertThat(nonOptionArgsArray[0], equalTo("noa1")); 119 assertThat(nonOptionArgsArray[1], equalTo("noa2")); 120 121 @SuppressWarnings("unchecked") 122 List<String> nonOptionArgsList = env.getProperty("nonOptionArgs", List.class); 123 assertThat(nonOptionArgsList.get(0), equalTo("noa1")); 124 assertThat(nonOptionArgsList.get(1), equalTo("noa2")); 125 } 126 } 127