package com.kickstarter.models; import com.kickstarter.factories.CategoryFactory; import junit.framework.TestCase; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; public class CategoryTest extends TestCase { public void testCompareTo() { final List<Category> categories = Arrays.asList( CategoryFactory.bluesCategory(), CategoryFactory.ceramicsCategory(), CategoryFactory.worldMusicCategory(), CategoryFactory.musicCategory(), CategoryFactory.artCategory(), CategoryFactory.photographyCategory(), CategoryFactory.artCategory(), CategoryFactory.textilesCategory() ); final List<Category> sorted = new ArrayList<>(categories); Collections.sort(sorted); final List<Category> expected = Arrays.asList( CategoryFactory.artCategory(), CategoryFactory.artCategory(), CategoryFactory.ceramicsCategory(), CategoryFactory.textilesCategory(), CategoryFactory.musicCategory(), CategoryFactory.bluesCategory(), CategoryFactory.worldMusicCategory(), CategoryFactory.photographyCategory() ); assertEquals(expected, sorted); } public void testComparableRootCategories() { final Category artCategory = CategoryFactory.artCategory(); final Category musicCategory = CategoryFactory.musicCategory(); assertTrue(artCategory.compareTo(musicCategory) <= -1); assertTrue(musicCategory.compareTo(artCategory) >= 1); } public void testComparableRootAndSelf() { final Category artCategory = CategoryFactory.artCategory(); assertTrue(artCategory.compareTo(artCategory) == 0); } public void testComparableChildAndSelf() { final Category bluesCategory = CategoryFactory.bluesCategory(); assertTrue(bluesCategory.compareTo(bluesCategory) == 0); } public void testComparableParentAndChildren() { final Category musicCategory = CategoryFactory.musicCategory(); final Category bluesCategory = CategoryFactory.bluesCategory(); final Category worldMusicCategory = CategoryFactory.worldMusicCategory(); assertTrue(musicCategory.compareTo(bluesCategory) <= -1); assertTrue(bluesCategory.compareTo(musicCategory) >= 1); assertTrue(musicCategory.compareTo(worldMusicCategory) <= -1); assertTrue(worldMusicCategory.compareTo(musicCategory) >= -1); } public void testComparableChildrenAndOtherRoot() { final Category photographyCategory = CategoryFactory.photographyCategory(); final Category bluesCategory = CategoryFactory.bluesCategory(); final Category worldMusicCategory = CategoryFactory.worldMusicCategory(); assertTrue(bluesCategory.compareTo(photographyCategory) <= -1); assertTrue(worldMusicCategory.compareTo(photographyCategory) <= -1); assertTrue(photographyCategory.compareTo(bluesCategory) >= 1); assertTrue(photographyCategory.compareTo(worldMusicCategory) >= 1); } public void testComparableChildrenDifferentRoots() { final Category bluesCategory = CategoryFactory.bluesCategory(); final Category textilesCategory = CategoryFactory.textilesCategory(); assertTrue(bluesCategory.compareTo(textilesCategory) >= 1); assertTrue(textilesCategory.compareTo(bluesCategory) <= -1); final Category ceramicsCategory = CategoryFactory.ceramicsCategory(); final Category worldMusicCategory = CategoryFactory.worldMusicCategory(); assertTrue(ceramicsCategory.compareTo(worldMusicCategory) <= -1); assertTrue(worldMusicCategory.compareTo(ceramicsCategory) >= 1); } }