blob: 9544f65f8e5ffec2f2cd496964020b8284e1abc8 [file] [log] [blame]
/*
* Copyright 2012-present Facebook, Inc.
*
* Licensed 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 com.facebook.buck.cli;
import static org.junit.Assert.assertEquals;
import com.google.common.base.Supplier;
import com.google.common.collect.ImmutableSet;
import org.junit.Test;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;
public class StringSetOptionHandlerTest {
private class TestBean {
@Option(
name = "--option1",
handler = StringSetOptionHandler.class)
private Supplier<ImmutableSet<String>> option1;
@Option(
name = "--option2",
handler = StringSetOptionHandler.class)
private Supplier<ImmutableSet<String>> option2;
public ImmutableSet<String> getOption1() {
return option1.get();
}
public ImmutableSet<String> getOption2() {
return option2.get();
}
}
@Test
public void testDefaultValues() throws CmdLineException {
TestBean bean = new TestBean();
CmdLineParser parser = new CmdLineParser(bean);
parser.parseArgument(
"--option2", "a", "b");
assertEquals(ImmutableSet.of(), bean.getOption1());
assertEquals(ImmutableSet.of("a", "b"), bean.getOption2());
}
@Test
public void testOptionSpecifiedMultipleTimes() throws CmdLineException {
TestBean bean = new TestBean();
CmdLineParser parser = new CmdLineParser(bean);
parser.parseArgument(
"--option1", "a", "b",
"--option2", "c", "d",
"--option1", "e", "f",
"--option2", "g", "h");
assertEquals(ImmutableSet.of("a", "b", "e", "f"), bean.getOption1());
assertEquals(ImmutableSet.of("c", "d", "g", "h"), bean.getOption2());
}
@Test(expected = IllegalArgumentException.class)
public void testEmptyOption() throws CmdLineException {
TestBean bean = new TestBean();
CmdLineParser parser = new CmdLineParser(bean);
parser.parseArgument(
"--option1",
"--option2", "c", "d",
"--option2", "f");
}
@Test(expected = IllegalArgumentException.class)
public void testOptionSpecifiedWithoutElements() throws CmdLineException {
TestBean bean = new TestBean();
CmdLineParser parser = new CmdLineParser(bean);
parser.parseArgument(
"--option1", "a",
"--option2", "c", "d",
"--option1",
"--option2", "f");
}
}