package com.vaadin.data.provider; import java.time.LocalDate; import java.util.Arrays; import java.util.List; import org.junit.Assert; import org.junit.Test; import com.vaadin.shared.data.sort.SortDirection; import com.vaadin.ui.Grid; import com.vaadin.ui.Grid.Column; import com.vaadin.ui.renderers.NumberRenderer; public class SortOrderBuildersTest { @Test public void gridSortOrderBuilder() { Grid<String> grid = new Grid<>(); Column<String, String> col1 = grid.addColumn(string -> string); Column<String, Number> col2 = grid.addColumn(string -> 1, new NumberRenderer()); Column<String, ?> col3 = grid .addColumn(string -> LocalDate.of(0, 0, 0)); // construct with asc verifySortOrders( Arrays.asList( new GridSortOrder<>(col1, SortDirection.ASCENDING), new GridSortOrder<>(col2, SortDirection.DESCENDING), new GridSortOrder<>(col3, SortDirection.ASCENDING)), GridSortOrder.asc(col1).thenDesc(col2).thenAsc(col3).build()); // construct with desc verifySortOrders( Arrays.asList( new GridSortOrder<>(col1, SortDirection.DESCENDING), new GridSortOrder<>(col2, SortDirection.DESCENDING), new GridSortOrder<>(col3, SortDirection.ASCENDING)), GridSortOrder.desc(col1).thenDesc(col2).thenAsc(col3).build()); } @Test public void querySortOrderBuilder() { verifySortOrders( Arrays.asList(new QuerySortOrder("a", SortDirection.ASCENDING), new QuerySortOrder("b", SortDirection.DESCENDING), new QuerySortOrder("c", SortDirection.ASCENDING)), QuerySortOrder.asc("a").thenDesc("b").thenAsc("c").build()); verifySortOrders( Arrays.asList(new QuerySortOrder("a", SortDirection.DESCENDING), new QuerySortOrder("b", SortDirection.DESCENDING), new QuerySortOrder("c", SortDirection.ASCENDING)), QuerySortOrder.desc("a").thenDesc("b").thenAsc("c").build()); } private <T extends SortOrder<?>> void verifySortOrders(List<T> order1, List<T> order2) { Assert.assertEquals(order1.size(), order2.size()); for (int i = 0; i < order1.size(); i++) { Assert.assertEquals(order1.get(i).getDirection(), order2.get(i).getDirection()); Assert.assertEquals(order1.get(i).getSorted(), order1.get(i).getSorted()); } } }