fixed issue within file-reader when reading empty data-parts

This commit is contained in:
2018-01-27 12:07:06 +01:00
parent 1a1f249e9b
commit e44d3421de
5 changed files with 43 additions and 6 deletions

View File

@@ -156,16 +156,25 @@ namespace Offline {
while(!inp.eof() && !inp.bad()) {
// read the next line from the file
// this ensures that we will not read beyond one line within the next steps
std::string line;
std::getline(inp, line);
// create a stream for the read line
std::stringstream sline(line);
uint64_t ts;
char delim;
int idx = -1;
std::string data;
inp >> ts;
inp >> delim;
inp >> idx;
inp >> delim;
inp >> data;
// split the line
sline >> ts;
sline >> delim;
sline >> idx;
sline >> delim;
sline >> data; // might be "" if there is no data
if (idx == (int)Sensor::WIFI) {parseWiFi(ts, data);}
else if (idx == (int)Sensor::BEACON) {parseBeacons(ts, data);}
@@ -267,6 +276,8 @@ namespace Offline {
WiFiMeasurements wifi;
Splitter s(data, sep);
//if (s.empty()) {return;}
// the -1 is due to some old files containing a trailing ";" resulting in one additional stray column
for (size_t i = 0; i < s.size()-1; i += 3) {

View File

@@ -28,6 +28,8 @@ public:
size_t size() const {return split.size();}
bool empty() const {return split.empty();}
private:
void build() {

View File

@@ -7,7 +7,8 @@
static inline std::string getDataFile(const std::string& name) {
//return "/mnt/data/workspaces/Indoor/tests/data/" + name;
return "/home/toni/Documents/programme/localization/Indoor/tests/data/" + name;
return "/mnt/vm/paper/diss/code/Indoor/tests/data/" + name;
//return "/home/toni/Documents/programme/localization/Indoor/tests/data/" + name;
}

View File

@@ -0,0 +1,5 @@
136731;0;1.6424103;2.4756012;14.106628
136728;8;
136731;1;0.5573883;2.0301208;9.57785
136733;3;-0.8585968;-1.057785;-1.1313019
136831;8;68c63a9f81f1;2422;-55;5ccf7fc40df3;2422;-66

View File

@@ -0,0 +1,18 @@
#ifdef WITH_TESTS
#include "../../Tests.h"
#include "../../../sensors/offline/FileReader.h"
TEST(FileReader, test1) {
std::string file = "/tmp/FirstTest.csv";//getDataFile("fileReader1.txt");
Offline::FileReader reader(file);
int i = 0; (void) i;
}
#endif