/*! ****************************************************************************** * * Pentaho Data Integration * * Copyright (C) 2002-2013 by Pentaho : http://www.pentaho.com * ******************************************************************************* * * 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 org.pentaho.di.core.parameters; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; public class NamedParamsDefaultTest { NamedParams namedParams; @Before public void setUp() throws Exception { namedParams = spy( new NamedParamsDefault() ); } @Test public void testParameters() throws Exception { assertNull( namedParams.getParameterValue( "var1" ) ); assertNull( namedParams.getParameterDefault( "var1" ) ); assertNull( namedParams.getParameterDescription( "var1" ) ); namedParams.setParameterValue( "var1", "y" ); // Values for new parameters must be added by addParameterDefinition assertNull( namedParams.getParameterValue( "var1" ) ); assertNull( namedParams.getParameterDefault( "var1" ) ); assertNull( namedParams.getParameterDescription( "var1" ) ); namedParams.addParameterDefinition( "var2", "z", "My Description" ); assertEquals( "", namedParams.getParameterValue( "var2" ) ); assertEquals( "z", namedParams.getParameterDefault( "var2" ) ); assertEquals( "My Description", namedParams.getParameterDescription( "var2" ) ); namedParams.setParameterValue( "var2", "y" ); assertEquals( "y", namedParams.getParameterValue( "var2" ) ); assertEquals( "z", namedParams.getParameterDefault( "var2" ) ); // clearParameters() just clears their values, not their presence namedParams.clearParameters(); assertEquals( "", namedParams.getParameterValue( "var2" ) ); // eraseParameters() clears the list of parameters namedParams.eraseParameters(); assertNull( namedParams.getParameterValue( "var1" ) ); // Call activateParameters(), an empty method, for coverage namedParams.activateParameters(); } @Test( expected = DuplicateParamException.class ) public void testAddParameterDefinitionWithException() throws DuplicateParamException { namedParams.addParameterDefinition( "key", "value", "description" ); namedParams.addParameterDefinition( "key", "value", "description" ); } @Test public void testCopyParametersFromNullChecks() throws Exception { // Test null case namedParams.copyParametersFrom( null ); NamedParams namedParams2 = new NamedParamsDefault(); // Test internal params == null case ( (NamedParamsDefault) namedParams ).params = null; namedParams.copyParametersFrom( namedParams2 ); } @Test public void testCopyParametersFrom() throws Exception { NamedParams namedParams2 = new NamedParamsDefault(); namedParams2.addParameterDefinition( "key", "default value", "description" ); namedParams2.setParameterValue( "key", "value" ); assertNull( namedParams.getParameterValue( "key" ) ); namedParams.copyParametersFrom( namedParams2 ); assertEquals( "value", namedParams.getParameterValue( "key" ) ); } @Test public void testCopyParametersFromWithException() throws Exception { NamedParams namedParams2 = mock( NamedParams.class ); when( namedParams2.listParameters() ).thenReturn( new String[]{ "key" } ); when( namedParams2.getParameterDescription( anyString() ) ).thenThrow( UnknownParamException.class ); when( namedParams2.getParameterDefault( anyString() ) ).thenThrow( UnknownParamException.class ); when( namedParams2.getParameterValue( anyString() ) ).thenThrow( UnknownParamException.class ); doThrow( DuplicateParamException.class ).when( namedParams ) .addParameterDefinition( anyString(), anyString(), anyString() ); namedParams.copyParametersFrom( namedParams2 ); // Normally the param's properties would be empty, but we're overriding the addParameterDefinition() to throw an // exception, so the param properties never get set and are thus null assertNull( namedParams.getParameterDescription( "key" ) ); assertNull( namedParams.getParameterDefault( "key" ) ); assertNull( namedParams.getParameterValue( "key" ) ); } }