blob: c98170446086c749784ad39c3e7da884eb04b97b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010-2014 SAP AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.skalli.services.tagging;
import static org.junit.Assert.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.junit.Test;
@SuppressWarnings("nls")
public class TagCountTest {
@Test
public void testValidTagCounts() throws Exception {
TagCount t = new TagCount("foobar", 4711);
assertTagCount(t, "foobar", 4711);
t = new TagCount("foobar", 0);
assertTagCount(t, "foobar", 0);
}
@Test
public void testInvalidTagCounts() throws Exception {
assertInvalidTagCount(null, 4711);
assertInvalidTagCount("", 4711);
assertInvalidTagCount(" \t", 4711);
assertInvalidTagCount("foobar", -1);
}
@Test
public void testCompare() throws Exception {
assertLess("zzz", 4, "aaa", 3); //sorted by count descending!
assertLess("aaa", 4, "zzz", 3); //sorted by count descending!
assertLess("aaa", 3, "zzz", 3); // sorted alphanumerically!
assertLess("ZZZ", 3, "aaa", 3); // sorted alphanumerically!
assertLess("4711", 3, "ZZZ", 3); // sorted alphanumerically!
assertEqualTagCounts("aaa", 3, "aaa", 3);
}
@Test
public void testAsMap() throws Exception {
List<TagCount> tags = Arrays.asList(
new TagCount("zzz", 4),
new TagCount("aaa", 3),
new TagCount("foo", 1),
new TagCount("bar", 5));
Map<String,Integer> map = TagCount.asMap(tags);
assertNotNull(map);
assertEquals(4, map.size());
Iterator<Entry<String,Integer>> it = map.entrySet().iterator();
assertTagCount(it.next(), "aaa", 3);
assertTagCount(it.next(), "bar", 5);
assertTagCount(it.next(), "foo", 1);
assertTagCount(it.next(), "zzz", 4);
}
@Test
public void testAsMapEmptyCollection() throws Exception {
Map<String,Integer> map = TagCount.asMap(Collections.<TagCount>emptyList());
assertNotNull(map);
assertTrue(map.isEmpty());
map = TagCount.asMap(null);
assertNotNull(map);
assertTrue(map.isEmpty());
}
private void assertLess(String name1, int count1, String name2, int count2) {
TagCount less = new TagCount(name1, count1);
TagCount greater = new TagCount(name2, count2);
assertTrue(less.compareTo(greater) < 0);
assertTrue(greater.compareTo(less) > 0);
}
private void assertEqualTagCounts(String name1, int count1, String name2, int count2) {
TagCount t1 = new TagCount(name1, count1);
TagCount t2 = new TagCount(name2, count2);
assertEquals(0, t1.compareTo(t2));
assertEquals(0, t2.compareTo(t1));
assertTrue(t1.equals(t2));
assertTrue(t2.equals(t1));
}
private void assertTagCount(TagCount next, String name, int count) {
assertEquals(name, next.getName());
assertEquals(count, next.getCount());
}
private void assertTagCount(Entry<String,Integer> next, String name, int count) {
assertEquals(name, next.getKey());
assertEquals(count, (int)next.getValue());
}
private void assertInvalidTagCount(String name, int count) {
try {
new TagCount(name, count);
fail("IllegalArgumentException expected");
} catch (IllegalArgumentException e) {
// expected
}
}
}