/*
* Copyright 2007 Alin Dreghiciu.
*
* 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.ops4j.pax.swissbox.extender;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.PatternSyntaxException;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import org.junit.Test;
import org.ops4j.lang.NullArgumentException;
/**
* RegexKeyManifestFilter Unit Tests.
*
* @author Alin Dreghiciu
* @since 0.2.0, February 09, 2008
*/
public class RegexKeyManifestFilterTest
{
/**
* Tests that a null regex is not allowed.
* Expected to throw NullArgumentException.
*/
@Test( expected = NullArgumentException.class )
public void nullRegex()
{
new RegexKeyManifestFilter( null );
}
/**
* Tests that an empty regex is not allowed.
* Expected to throw NullArgumentException.
*/
@Test( expected = NullArgumentException.class )
public void emptyRegex()
{
new RegexKeyManifestFilter( "" );
}
/**
* Tests that a regex containing only spaces is not allowed.
* Expected to throw NullArgumentException.
*/
@Test( expected = NullArgumentException.class )
public void onlySpacesRegex()
{
new RegexKeyManifestFilter( " " );
}
/**
* Tests that a malformed regex is not allowed.
* Expected to throw PatternSyntaxException.
*/
@Test( expected = PatternSyntaxException.class )
public void invalidSyntaxPattern()
{
new RegexKeyManifestFilter( "[invalid" );
}
/**
* Tests that matching against a null map will return an empty map.
*/
@Test
public void matchAgainstNullMap()
{
final Map<String, String> filtered = new RegexKeyManifestFilter( "k1" ).match( null );
assertThat( "Manifest entries", filtered, is( notNullValue() ) );
assertThat( "Filtered manifest entries", filtered, is( equalTo( Collections.<String, String>emptyMap() ) ) );
}
/**
* Tests that matching against an empty map will return an empty map.
*/
@Test
public void matchAgainstEmptyMap()
{
final Map<String, String> filtered =
new RegexKeyManifestFilter( "k1" ).match( Collections.<String, String>emptyMap() );
assertThat( "Manifest entries", filtered, is( notNullValue() ) );
assertThat( "Filtered manifest entries", filtered, is( equalTo( Collections.<String, String>emptyMap() ) ) );
}
@Test
public void match01()
{
final Map<String, String> entries = new HashMap<String, String>();
entries.put( "k1", "v1" );
entries.put( "k2", "v2" );
final Map<String, String> expected = new HashMap<String, String>();
expected.put( "k1", "v1" );
final Map<String, String> filtered = new RegexKeyManifestFilter( "k1" ).match( entries );
assertThat( "Manifest entries", filtered, is( notNullValue() ) );
assertThat( "Filtered manifest entries", filtered, is( equalTo( expected ) ) );
}
@Test
public void match02()
{
final Map<String, String> entries = new HashMap<String, String>();
entries.put( "k1", "v1" );
entries.put( "k2", "v2" );
entries.put( "k3", "v3" );
final Map<String, String> expected = new HashMap<String, String>();
expected.put( "k1", "v1" );
expected.put( "k3", "v3" );
final Map<String, String> filtered = new RegexKeyManifestFilter( "k[13]" ).match( entries );
assertThat( "Manifest entries", filtered, is( notNullValue() ) );
assertThat( "Filtered manifest entries", filtered, is( equalTo( expected ) ) );
}
}