/** * Copyright (C) 2013 Kametic <epo.jemba@kametic.com> * * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE, Version 3, 29 June 2007; * or any later version * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.gnu.org/licenses/lgpl-3.0.txt * * 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.nuunframework.cli; import static org.assertj.core.api.Assertions.assertThat; import java.util.Arrays; import java.util.List; import java.util.Map; import org.apache.commons.cli.Options; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.nuunframework.cli.samples.Holder; import org.nuunframework.kernel.Kernel; import com.google.inject.Key; import com.google.inject.TypeLiteral; /** * @author ejemba * */ public class NuunCliPluginTest { private NuunCliService nuunCliService; @Before public void init () throws Exception { nuunCliService = new NuunCliService(); String[] argsStrings = new String[] { "-o1" , "cli1" , // "--option2" , "cli2" , // "-o3" , // "--option4" , "1/2/3" , // "-o5" , "cli5" , // "arg1" , "arg2" // }; nuunCliService.startSync(argsStrings ); } @After public void uninit() { nuunCliService.stop(); } @Test public void testInjections () { Kernel kernel = nuunCliService.getKernel(); Holder holder = kernel.getMainInjector().getInstance(Holder.class); assertThat( holder.getOption1() ).isNotNull(); assertThat( holder.getOption1() ).isEqualTo("cli1"); assertThat( holder.getOption2() ).isNotNull(); assertThat( holder.getOption2() ).isEqualTo("cli2"); assertThat( holder.getOption3() ).isNotNull(); assertThat( holder.getOption3() ).isTrue(); assertThat( holder.getOption4() ).isNotNull(); assertThat( holder.getOption4() ).isEqualTo(new String[]{ "1" , "2" , "3" }); assertThat( holder.getOption5() ).isNotNull(); assertThat( holder.getOption5() ).isEqualTo("cli5"); assertThat( holder.getArg() ).isNotNull(); assertThat( holder.getArg() ).isEqualTo(new String[]{ "arg1" , "arg2" }); } @Test public void testOptions() { Kernel kernel = nuunCliService.getKernel(); Options globalOptions = kernel.getMainInjector().getInstance(Options.class); Map<Class<?>, Options> optionsMap = kernel.getMainInjector().getInstance(Key.get( new TypeLiteral<Map<Class<?>, Options>> () {} )); Options holdersSpecificsOptions = optionsMap.get(Holder.class); assertThat(globalOptions).isNotNull(); assertThat(holdersSpecificsOptions.getOptions().size()).isEqualTo(5); assertThat(globalOptions.getOptions().size()).isGreaterThan(5); assertThat(holdersSpecificsOptions.getOption("o1")).isNotNull(); assertThat(holdersSpecificsOptions.getOption("o1").getDescription()).isEqualTo("the long description of opt number 1"); assertThat(holdersSpecificsOptions.getOption("o1").getLongOpt()).isEqualTo("option1"); assertThat(holdersSpecificsOptions.getOption("o1").isRequired()).isFalse(); assertThat(holdersSpecificsOptions.getOption("o2")).isNotNull(); assertThat(holdersSpecificsOptions.getOption("o2").getDescription()).isEqualTo("the long description of opt number 2"); assertThat(holdersSpecificsOptions.getOption("o2").getLongOpt()).isEqualTo("option2"); assertThat(holdersSpecificsOptions.getOption("o2").isRequired()).isTrue(); assertThat(holdersSpecificsOptions.getRequiredOptions().size()).isEqualTo(4); } }