/** * Extract a HeaderDefinition from the meta data. Throws a QuandlRuntimeException if it cannot construct a valid HeaderDefinition * * @return the header definition, not null */ public HeaderDefinition getHeaderDefinition() { JSONArray jsonArray = null; try { jsonArray = _jsonObject.getJSONArray(COLUMN_NAMES_FIELD); List<String> columnNames = new ArrayList<String>(jsonArray.length()); for (int i = 0; i < jsonArray.length(); i++) { columnNames.add(jsonArray.getString(i)); } return HeaderDefinition.of(columnNames); } catch (JSONException ex) { s_logger.error("Metadata had unexpected structure - could not extract column_names field. Was:\n{}", _jsonObject.toString()); throw new QuandlRuntimeException("Metadata had unexpected structure", ex); } }
@Test(expectedExceptions = QuandlRuntimeException.class) public final void testHeaderDefinitionVarArgs() { HeaderDefinition.of((String[]) null); }
@Test(expectedExceptions = QuandlRuntimeException.class) public final void testHeaderDefinition() { HeaderDefinition.of((List<String>) null); }
@Test(expectedExceptions = QuandlRuntimeException.class) public final void testHeaderDefinition() { HeaderDefinition.of((List<String>) null); }
@Test(expectedExceptions = QuandlRuntimeException.class) public final void testHeaderDefinitionVarArgs() { HeaderDefinition.of((String[]) null); }
@Test(expectedExceptions = QuandlRuntimeException.class) public final void testRowValuesNull() { Row.of(HeaderDefinition.of("one", "two"), null); }
@Test(expectedExceptions = QuandlRuntimeException.class) public final void testRowValuesNull() { Row.of(HeaderDefinition.of("one", "two"), null); }
@Test public void testHeaderDefinition() { HeaderDefinition headerDefinition1 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition2 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition3 = HeaderDefinition.of("B", "A", "C", "D"); // test ordering counts HeaderDefinition headerDefinition4 = HeaderDefinition.of("A", "B", "C", "D", "E"); HeaderDefinition headerDefinitionEmpty = HeaderDefinition.of(); HeaderDefinition headerDefinitionEmpty2 = HeaderDefinition.of(); Assert.assertEquals(headerDefinition1, headerDefinition1); Assert.assertEquals(headerDefinition1, headerDefinition2); Assert.assertEquals(headerDefinition1.hashCode(), headerDefinition2.hashCode()); Assert.assertNotEquals(headerDefinition2, headerDefinition3); Assert.assertNotEquals(headerDefinition2.hashCode(), headerDefinition3.hashCode()); Assert.assertNotEquals(headerDefinition1, headerDefinition4); Assert.assertNotEquals(headerDefinition1.hashCode(), headerDefinition4.hashCode()); Assert.assertNotEquals(null, headerDefinition1); Assert.assertNotEquals(null, headerDefinitionEmpty); Assert.assertEquals(headerDefinitionEmpty, headerDefinitionEmpty2); Assert.assertEquals(headerDefinitionEmpty.hashCode(), headerDefinitionEmpty2.hashCode()); }
@Test public void testHeaderDefinition() { HeaderDefinition headerDefinition1 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition2 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition3 = HeaderDefinition.of("B", "A", "C", "D"); // test ordering counts HeaderDefinition headerDefinition4 = HeaderDefinition.of("A", "B", "C", "D", "E"); HeaderDefinition headerDefinitionEmpty = HeaderDefinition.of(); HeaderDefinition headerDefinitionEmpty2 = HeaderDefinition.of(); Assert.assertEquals(headerDefinition1, headerDefinition1); Assert.assertEquals(headerDefinition1, headerDefinition2); Assert.assertEquals(headerDefinition1.hashCode(), headerDefinition2.hashCode()); Assert.assertNotEquals(headerDefinition2, headerDefinition3); Assert.assertNotEquals(headerDefinition2.hashCode(), headerDefinition3.hashCode()); Assert.assertNotEquals(headerDefinition1, headerDefinition4); Assert.assertNotEquals(headerDefinition1.hashCode(), headerDefinition4.hashCode()); Assert.assertNotEquals(null, headerDefinition1); Assert.assertNotEquals(null, headerDefinitionEmpty); Assert.assertEquals(headerDefinitionEmpty, headerDefinitionEmpty2); Assert.assertEquals(headerDefinitionEmpty.hashCode(), headerDefinitionEmpty2.hashCode()); }
@Test public void testRow() { HeaderDefinition headerDefinition1 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition2 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition3 = HeaderDefinition.of("B", "A", "C", "D"); Row row1 = Row.of(headerDefinition1, new String[] {"Jim", "Miranda", "Elaine", "Kostas" }); Row row2 = Row.of(headerDefinition1, new String[] {"Jim", "Miranda", "Elaine", "Kostas" }); Row row3 = Row.of(headerDefinition2, new String[] {"Jim", "Miranda", "Elaine", "Kostas" }); Row row4 = Row.of(headerDefinition3, new String[] {"Jim", "Miranda", "Elaine", "Kostas" }); Assert.assertEquals(row1, row1); Assert.assertEquals(row1.hashCode(), row1.hashCode()); Assert.assertEquals(row2, row3); Assert.assertEquals(row2.hashCode(), row3.hashCode()); Assert.assertNotEquals(row3, row4); Assert.assertNotEquals(row3.hashCode(), row4.hashCode()); }
@Test public void testRow() { HeaderDefinition headerDefinition1 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition2 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition3 = HeaderDefinition.of("B", "A", "C", "D"); Row row1 = Row.of(headerDefinition1, new String[] {"Jim", "Miranda", "Elaine", "Kostas" }); Row row2 = Row.of(headerDefinition1, new String[] {"Jim", "Miranda", "Elaine", "Kostas" }); Row row3 = Row.of(headerDefinition2, new String[] {"Jim", "Miranda", "Elaine", "Kostas" }); Row row4 = Row.of(headerDefinition3, new String[] {"Jim", "Miranda", "Elaine", "Kostas" }); Assert.assertEquals(row1, row1); Assert.assertEquals(row1.hashCode(), row1.hashCode()); Assert.assertEquals(row2, row3); Assert.assertEquals(row2.hashCode(), row3.hashCode()); Assert.assertNotEquals(row3, row4); Assert.assertNotEquals(row3.hashCode(), row4.hashCode()); }
@Test public void testIterator() { HeaderDefinition headerDefinition1 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition2 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition3 = HeaderDefinition.of("B", "A", "C", "D"); Row row1 = Row.of(headerDefinition1, new String[] {"Jim", "Miranda", "1.2", "2009-09-13" }); Row row2 = Row.of(headerDefinition1, new String[] {"Jim", "Miranda", "1.2", "2009-09-13" });
@Test public void testIterator() { HeaderDefinition headerDefinition1 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition2 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition3 = HeaderDefinition.of("B", "A", "C", "D"); Row row1 = Row.of(headerDefinition1, new String[] {"Jim", "Miranda", "1.2", "2009-09-13" }); Row row2 = Row.of(headerDefinition1, new String[] {"Jim", "Miranda", "1.2", "2009-09-13" });
@Test public void testSize() { HeaderDefinition headerDefinition1 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition2 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition3 = HeaderDefinition.of("B", "A", "C", "D"); Row row1 = Row.of(headerDefinition1, new String[] {"Jim", "Miranda", "1.2", "2009-09-13" }); Row row2 = Row.of(headerDefinition1, new String[] {"Jim", "Miranda", "1.2", "2009-09-13" }); Row row3 = Row.of(headerDefinition2, new String[] {"Jim", "Miranda", "Elaine", "Kostas" }); Row row4 = Row.of(headerDefinition3, new String[] {"Jim", "Miranda", "Elaine", "Kostas" }); TabularResult tr1 = TabularResult.of(headerDefinition1, Arrays.asList(row1, row2, row3, row4)); TabularResult tr2 = TabularResult.of(headerDefinition2, Arrays.asList(row2, row4)); TabularResult tr3 = TabularResult.of(headerDefinition3, Collections.<Row>emptyList()); Assert.assertEquals(tr1.size(), 4); Assert.assertFalse(tr1.isEmpty()); Assert.assertEquals(tr2.size(), 2); Assert.assertFalse(tr2.isEmpty()); Assert.assertEquals(tr3.size(), 0); Assert.assertTrue(tr3.isEmpty()); } // CHECKSTYLE:ON
@Test public void testTabularResult() { HeaderDefinition headerDefinition1 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition2 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition3 = HeaderDefinition.of("B", "A", "C", "D"); Row row1 = Row.of(headerDefinition1, new String[] {"Jim", "Miranda", "1.2", "2009-09-13" }); Row row2 = Row.of(headerDefinition1, new String[] {"Jim", "Miranda", "1.2", "2009-09-13" }); Row row3 = Row.of(headerDefinition2, new String[] {"Jim", "Miranda", "Elaine", "Kostas" }); Row row4 = Row.of(headerDefinition3, new String[] {"Jim", "Miranda", "Elaine", "Kostas" }); TabularResult tr1 = TabularResult.of(headerDefinition1, Arrays.asList(row1, row3)); Assert.assertEquals(tr1, tr1); Assert.assertEquals(tr1.hashCode(), tr1.hashCode()); Assert.assertNotEquals(null, tr1); TabularResult tr2 = TabularResult.of(headerDefinition2, Arrays.asList(row2, row4)); Assert.assertNotEquals(tr1, tr2); Assert.assertNotEquals(tr1.hashCode(), tr2.hashCode()); TabularResult tr3 = TabularResult.of(headerDefinition2, Arrays.asList(row2, row1)); Assert.assertNotEquals(tr2, tr3); Assert.assertNotEquals(tr2.hashCode(), tr3.hashCode()); }
@Test public void testTabularResult() { HeaderDefinition headerDefinition1 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition2 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition3 = HeaderDefinition.of("B", "A", "C", "D"); Row row1 = Row.of(headerDefinition1, new String[] {"Jim", "Miranda", "1.2", "2009-09-13" }); Row row2 = Row.of(headerDefinition1, new String[] {"Jim", "Miranda", "1.2", "2009-09-13" }); Row row3 = Row.of(headerDefinition2, new String[] {"Jim", "Miranda", "Elaine", "Kostas" }); Row row4 = Row.of(headerDefinition3, new String[] {"Jim", "Miranda", "Elaine", "Kostas" }); TabularResult tr1 = TabularResult.of(headerDefinition1, Arrays.asList(row1, row3)); Assert.assertEquals(tr1, tr1); Assert.assertEquals(tr1.hashCode(), tr1.hashCode()); Assert.assertNotEquals(null, tr1); TabularResult tr2 = TabularResult.of(headerDefinition2, Arrays.asList(row2, row4)); Assert.assertNotEquals(tr1, tr2); Assert.assertNotEquals(tr1.hashCode(), tr2.hashCode()); TabularResult tr3 = TabularResult.of(headerDefinition2, Arrays.asList(row2, row1)); Assert.assertNotEquals(tr2, tr3); Assert.assertNotEquals(tr2.hashCode(), tr3.hashCode()); }
@Test public void testSize() { HeaderDefinition headerDefinition1 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition2 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition3 = HeaderDefinition.of("B", "A", "C", "D"); Row row1 = Row.of(headerDefinition1, new String[] {"Jim", "Miranda", "1.2", "2009-09-13" }); Row row2 = Row.of(headerDefinition1, new String[] {"Jim", "Miranda", "1.2", "2009-09-13" }); Row row3 = Row.of(headerDefinition2, new String[] {"Jim", "Miranda", "Elaine", "Kostas" }); Row row4 = Row.of(headerDefinition3, new String[] {"Jim", "Miranda", "Elaine", "Kostas" }); TabularResult tr1 = TabularResult.of(headerDefinition1, Arrays.asList(row1, row2, row3, row4)); TabularResult tr2 = TabularResult.of(headerDefinition2, Arrays.asList(row2, row4)); TabularResult tr3 = TabularResult.of(headerDefinition3, Collections.<Row>emptyList()); Assert.assertEquals(tr1.size(), 4); Assert.assertFalse(tr1.isEmpty()); Assert.assertEquals(tr2.size(), 2); Assert.assertFalse(tr2.isEmpty()); Assert.assertEquals(tr3.size(), 0); Assert.assertTrue(tr3.isEmpty()); } // CHECKSTYLE:ON
@Test public void runAccessorTests() { HeaderDefinition headerDefinition1 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition2 = HeaderDefinition.of("A", "B", "C", "D"); Row row1 = Row.of(headerDefinition1, new String[] {"Jim", "Miranda", "1.2", "2009-09-13" }); Row row3 = Row.of(headerDefinition2, new String[] {"Jim", "Miranda", "Elaine", "Kostas" }); TabularResult tr1 = TabularResult.of(headerDefinition1, Arrays.asList(row1, row3)); Assert.assertEquals(tr1.get(0).getString(0), "Jim"); Assert.assertEquals(tr1.get(0).getString(1), "Miranda"); Assert.assertEquals(tr1.get(0).getString(2), "1.2"); Assert.assertEquals(tr1.get(0).getDouble(2), 1.2d, 1e-14); Assert.assertEquals(tr1.get(0).getString(3), "2009-09-13"); Assert.assertEquals(tr1.get(0).getLocalDate(3), LocalDate.of(2009, 9, 13)); Assert.assertEquals(tr1.get(0).getString("A"), "Jim"); Assert.assertEquals(tr1.get(0).getString("B"), "Miranda"); Assert.assertEquals(tr1.get(0).getString("C"), "1.2"); Assert.assertEquals(tr1.get(0).getDouble("C"), 1.2d, 1e-14); Assert.assertEquals(tr1.get(0).getString("D"), "2009-09-13"); Assert.assertEquals(tr1.get(0).getLocalDate("D"), LocalDate.of(2009, 9, 13)); }
@Test public void runAccessorTests() { HeaderDefinition headerDefinition1 = HeaderDefinition.of("A", "B", "C", "D"); HeaderDefinition headerDefinition2 = HeaderDefinition.of("A", "B", "C", "D"); Row row1 = Row.of(headerDefinition1, new String[] {"Jim", "Miranda", "1.2", "2009-09-13" }); Row row3 = Row.of(headerDefinition2, new String[] {"Jim", "Miranda", "Elaine", "Kostas" }); TabularResult tr1 = TabularResult.of(headerDefinition1, Arrays.asList(row1, row3)); Assert.assertEquals(tr1.get(0).getString(0), "Jim"); Assert.assertEquals(tr1.get(0).getString(1), "Miranda"); Assert.assertEquals(tr1.get(0).getString(2), "1.2"); Assert.assertEquals(tr1.get(0).getDouble(2), 1.2d, 1e-14); Assert.assertEquals(tr1.get(0).getString(3), "2009-09-13"); Assert.assertEquals(tr1.get(0).getLocalDate(3), LocalDate.of(2009, 9, 13)); Assert.assertEquals(tr1.get(0).getString("A"), "Jim"); Assert.assertEquals(tr1.get(0).getString("B"), "Miranda"); Assert.assertEquals(tr1.get(0).getString("C"), "1.2"); Assert.assertEquals(tr1.get(0).getDouble("C"), 1.2d, 1e-14); Assert.assertEquals(tr1.get(0).getString("D"), "2009-09-13"); Assert.assertEquals(tr1.get(0).getLocalDate("D"), LocalDate.of(2009, 9, 13)); }
String[] headerRow = reader.readNext(); if (headerRow != null) { HeaderDefinition headerDef = HeaderDefinition.of(Arrays.asList(headerRow)); List<Row> rows = new ArrayList<Row>(); String[] next = reader.readNext();