@Test public void testAutoConvertNumeric() { Field a = Data.makeColumnField("field", null, new Object[] {1, 2, 3, 4}); Field b = Auto.convert(a); assertEquals(a, b); Assert.assertEquals(true, b.isNumeric()); Assert.assertEquals(false, b.isDate()); Assert.assertEquals(2.5, b.numericProperty("mean"), 0.001); a = Data.makeColumnField("field", null, new Object[] {"1", "2", "3", "4"}); b = Auto.convert(a); Assert.assertEquals(false, a == b); Assert.assertEquals(true, b.isNumeric()); Assert.assertEquals(false, b.isDate()); Assert.assertEquals(2.5, b.numericProperty("mean"), 0.001); a = Data.makeColumnField("field", null, new Object[] {"a", "2", "3", "4"}); b = Auto.convert(a); Assert.assertEquals(false, a == b); Assert.assertEquals(true, b.isNumeric()); Assert.assertEquals(false, b.isDate()); Assert.assertEquals(3.0, b.numericProperty("mean"), 0.001); a = Data.makeColumnField("field", null, new Object[] {"a", "2", "c", "4"}); b = Auto.convert(a); Assert.assertEquals(true, a == b); Assert.assertEquals(false, b.isNumeric()); Assert.assertEquals(false, b.isDate()); }
@Test public void testAutoConvertDate() { // Make some dates Date d1 = Data.asDate("1971-1-3"); Date d2 = Data.asDate("1971-1-9"); Date d3 = Data.asDate("1971-1-31"); Field a = Data.makeColumnField("field", null, new Object[] {d1, d2, d3, null}); Field b = Auto.convert(a); Assert.assertEquals(true, b.isNumeric()); Assert.assertEquals(true, b.isDate()); // Should ignore one error a = Data.makeColumnField("field", null, new Object[] {d1, d2, "oops", d3, null, null}); b = Auto.convert(a); Assert.assertEquals(true, b.isNumeric()); Assert.assertEquals(true, b.isDate()); assertEquals(3, b.valid()); a = Data.makeColumnField("field", null, new Object[] {"1971-1-3", "1971-1-12"}); b = Auto.convert(a); Assert.assertEquals(true, b.isNumeric()); Assert.assertEquals(true, b.isDate()); assertEquals(2, b.valid()); assertEquals(9.0, b.max() - b.min(), 0.001); a = Data.makeColumnField("field", null, new Object[] {1970, 1972, 1978}); b = Auto.convert(a); Assert.assertEquals(true, b.isNumeric()); Assert.assertEquals(true, b.isDate()); assertEquals(3, b.valid()); assertEquals(8 * 365 + 2, b.max() - b.min(), 0.001); a = Data.makeColumnField("field", null, new Object[] {1970, 1971.5, 1978}); b = Auto.convert(a); Assert.assertEquals(true, b.isNumeric()); Assert.assertEquals(false, b.isDate()); assertEquals(3, b.valid()); assertEquals(8, b.max() - b.min(), 0.001); }