package com.levelup.java;
import static org.hamcrest.collection.IsIterableContainingInOrder.contains;
import static org.junit.Assert.assertThat;
import java.util.Arrays;
import java.util.List;
import org.apache.log4j.Logger;
import org.junit.Test;
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;
/**
* This java example will demonstrate how to sort an enum.
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/sorting-enum/'>Sort Enum</a>
*/
public class SortEnum {
private static final Logger logger = Logger.getLogger(SortEnum.class);
enum Fruit {
ORANGE, APPLE, BANANAS, CHERRIES;
}
List<Fruit> RANDOM_FRUIT = Lists.newArrayList(Fruit.CHERRIES, Fruit.ORANGE,
Fruit.APPLE, Fruit.CHERRIES, Fruit.BANANAS, Fruit.ORANGE);
@Test
public void create_drop_down() {
Ordering<Fruit> byFruitAlphabetical = Ordering.explicit(Fruit.APPLE,
Fruit.BANANAS, Fruit.CHERRIES, Fruit.ORANGE);
List<Fruit> dropDown = byFruitAlphabetical.sortedCopy(Arrays
.asList(Fruit.values()));
logger.info(dropDown);
assertThat(
dropDown,
contains(Fruit.APPLE, Fruit.BANANAS, Fruit.CHERRIES,
Fruit.ORANGE));
}
@Test
public void sort_enum_with_guava() {
Ordering<Fruit> byFruitAlphabetical = Ordering.explicit(Fruit.APPLE,
Fruit.BANANAS, Fruit.CHERRIES, Fruit.ORANGE);
List<Fruit> fruitAlphabetical = byFruitAlphabetical
.sortedCopy(RANDOM_FRUIT);
logger.info(fruitAlphabetical);
assertThat(
fruitAlphabetical,
contains(Fruit.APPLE, Fruit.BANANAS, Fruit.CHERRIES,
Fruit.CHERRIES, Fruit.ORANGE, Fruit.ORANGE));
}
}