package io.ebeaninternal.server.query; import io.ebean.Version; import org.junit.Test; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Collections; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; public class OrderVersionDescTest { private final long now = System.currentTimeMillis(); @Test public void sort() { Version<?> atNull = atNull(); Version<?> at100 = at(100); Version<?> at200 = at(200); Version<?> at300 = at(300); List<Version<?>> versions = new ArrayList<>(); versions.add(at200); versions.add(atNull); versions.add(at300); versions.add(at100); Collections.sort(versions, OrderVersionDesc.INSTANCE); assertThat(versions.get(0)).isSameAs(at300); assertThat(versions.get(1)).isSameAs(at200); assertThat(versions.get(2)).isSameAs(at100); assertThat(versions.get(3)).isSameAs(atNull); } @Test public void compare_lt() { assertEquals(OrderVersionDesc.INSTANCE.compare(at(0), at(1)), 1); } @Test public void compare_gt() { assertEquals(OrderVersionDesc.INSTANCE.compare(at(2), at(1)), -1); } @Test public void compare_eq() { assertEquals(OrderVersionDesc.INSTANCE.compare(at(1), at(1)), 0); } @Test public void compare_nullFirst() { assertEquals(OrderVersionDesc.INSTANCE.compare(atNull(), at(1)), 1); } @Test public void compare_nullLast() { assertEquals(OrderVersionDesc.INSTANCE.compare(at(0), atNull()), -1); } private Version<?> atNull() { return new Version(); } private Version at(long diff) { Timestamp timestamp = new Timestamp(now + diff); Version ver = new Version(); ver.setStart(timestamp); return ver; } }