/*
* Copyright 2010 The Rabbit Eclipse Plug-in Project
*
* 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 rabbit.ui.internal.util;
import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableMap;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import org.junit.Test;
/**
* Tests for {@link Categorizer}.
*/
public class CategorizerTest {
@Test
public void getCategoryShouldAcceptNull() {
ICategory category = mock(ICategory.class);
Categorizer categorizer = new Categorizer(ImmutableMap.of(Predicates.isNull(), category));
assertThat(categorizer.getCategory(null), is(category));
}
@Test
public void getCategoryShouldReturnNullIfTheCategoryOfTheGivenObjectIsNotDefinedByTheMap() {
Categorizer categorizer = new Categorizer(
ImmutableMap.of(Predicates.isNull(), mock(ICategory.class)));
assertThat(categorizer.getCategory(new Object()), is(nullValue()));
}
@Test
public void getCategoryShouldReturnTheCategoryOfTheGivenObjectDefinedByTheMap() {
Object object = new Object();
ICategory category = mock(ICategory.class);
Categorizer categorizer = new Categorizer(ImmutableMap.of(Predicates.equalTo(object), category));
assertThat(categorizer.getCategory(object), is(category));
}
@Test
public void hasCategoryShouldReturnFalseIfTheMapSuppliedDoesNotContainThatCategory() {
Categorizer categorizer = new Categorizer(
ImmutableMap.of(Predicates.alwaysFalse(), mock(ICategory.class)));
assertThat(categorizer.hasCategory(mock(ICategory.class)), is(false));
}
@Test
public void hasCategoryShouldReturnTrueIfTheMapSuppliedContainsThatCategory() {
ICategory category = mock(ICategory.class);
Categorizer categorizer = new Categorizer(ImmutableMap.of(Predicates.alwaysFalse(), category));
assertThat(categorizer.hasCategory(category), is(true));
}
@Test(expected = NullPointerException.class)
public void shouldThrowAnExceptionIfConstructedWithoutAMapOfCategories() {
new Categorizer(null);
}
}