Commit 0d513806 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

select from csv :)

parent 94fa810a
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -19,8 +19,13 @@ set(FNORDMETRIC_UI_SOURCES
    stage/src/fnordmetric/ui/linechart.cc
    stage/src/fnordmetric/ui/pointchart.cc)

set(FNORDMETRIC_CSV_BACKEND_SOURCES
    stage/src/fnordmetric/query/backends/csv/csvinputstream.cc
    stage/src/fnordmetric/query/backends/csv/csvtableref.cc)

set(FNORDMETRIC_QUERY_SOURCES
    ${FNORDMETRIC_UI_SOURCES}
    ${FNORDMETRIC_CSV_BACKEND_SOURCES}
    stage/src/fnordmetric/query/query.cc
    stage/src/fnordmetric/query/astnode.cc
    stage/src/fnordmetric/query/compile.cc
@@ -38,10 +43,6 @@ set(FNORDMETRIC_QUERY_SOURCES
    stage/src/fnordmetric/query/token.cc
    stage/src/fnordmetric/query/tokenize.cc)

set(FNORDMETRIC_CSV_BACKEND_SOURCES
    stage/src/fnordmetric/query/backends/csv/csvinputstream.cc
    stage/src/fnordmetric/query/backends/csv/csvtableref.cc)

include_directories(stage/src)
set(CMAKE_CXX_FLAGS "-std=c++0x -stdlib=libc++")

@@ -62,5 +63,4 @@ add_executable(tests/test-input-stream

add_executable(tests/test-csv-backend
    ${FNORDMETRIC_QUERY_SOURCES}
    ${FNORDMETRIC_CSV_BACKEND_SOURCES}
    stage/src/fnordmetric/query/backends/csv/csvbackend_test.cc)
+4 −0
Original line number Diff line number Diff line
@@ -94,6 +94,10 @@ bool CSVTableRef::readNextRow(std::vector<SValue>* target) {
        num_cols_); // FIXPAUL filename
  }

  for (const auto& col : row) {
    target->emplace_back(col);
  }

  return true;
}

+25 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@
#include <stdio.h>
#include <string.h>
#include <fnordmetric/util/unittest.h>
#include <fnordmetric/query/backends/csv/csvtableref.h>
#include <fnordmetric/query/query.h>
#include <fnordmetric/query/parser.h>
#include <fnordmetric/query/token.h>
@@ -845,3 +846,27 @@ TEST_CASE(QueryTest, TestDerivedSeriesDrawQuery, [] () {
  auto chart = query.getChart(0);
  chart->renderSVG();
});

TEST_CASE(QueryTest, TestSimpleSelectFromCSV, [] () {
  auto csv_table = new csv_backend::CSVTableRef(
      csv_backend::CSVInputStream::openFile(
          "test/fixtures/gbp_per_country_simple.csv"), 
      true);

  TableRepository repo;
  repo.addTableRef("gbp_per_country",
      std::unique_ptr<csv_backend::CSVTableRef>(csv_table));

  auto query = Query(
      "  SELECT"
      "    country as country, gbp as gbp"
      "  FROM"
      "    gbp_per_country;",
      &repo);

  query.execute();
  auto results = query.getResultList(0);
  EXPECT(results->getNumRows() == 191);
});