package dbfit.environment; import java.util.List; import java.util.ArrayList; import java.util.Arrays; import org.junit.Test; import static org.junit.Assert.*; public class InformixDateTimeTypesTest { @Test public void timeTypesTest() { assertEquals(getTimeTypes(), InformixDateTimeTypes.TIME_TYPES); } @Test public void timestampTypesTest() { assertEquals(getTimestampTypes(), InformixDateTimeTypes.TIMESTAMP_TYPES); } /* * Ordered list (largest first) of all time units from YEAR to FRACTION(5) */ private List<String> getTimeUnits() { List<String> timeUnits = new ArrayList<>(Arrays.asList( "YEAR", "MONTH", "DAY", "HOUR", "MINUTE", "SECOND")); // 5 levels of fractions for (int i = 1; i <= 5; ++i) { timeUnits.add("FRACTION(" + i + ")"); } return timeUnits; } /* * Generate "DATETIME Ai TO Bj" combinations where Ai, Bj are time units * such as Ai >= Bi; Ai is between [Aastart, Aalast], Bj <= Bblast */ private List<String> genDateTimePairs(String aStart, String aLast, String bLast) { List<String> timeUnits = getTimeUnits(); int iaStart = timeUnits.indexOf(aStart); int iaLast = timeUnits.indexOf(aLast); int ibLast = timeUnits.indexOf(bLast); List<String> types = new ArrayList<String>(); for (int ia = iaStart; ia <= iaLast; ++ia) { for (int ib = ia; ib <= ibLast; ++ib) { types.add(String.format("DATETIME %s TO %s", timeUnits.get(ia), timeUnits.get(ib))); } } return types; } private List<String> getTimeTypes() { return genDateTimePairs("HOUR", "SECOND", "SECOND"); } private List<String> getTimestampTypes() { List<String> list = genDateTimePairs("YEAR", "SECOND", "FRACTION(5)"); list.removeAll(getTimeTypes()); return list; } }