void
Mussa::load_mupa_stream(std::istream& para_file, fs::path& file_path_base)
{
+ bool error_occured = false;
string file_data_line;
string param, value;
fs::path annot_file;
did_seq = true;
}
//ignore empty lines or that start with '#'
- else if ((param == "") || (param == "#")) {}
+ else if ( (param.size() == 0) || (param[0] == '#'))
+ {} // pass
else
{
clog << "Illegal/misplaced mussa parameter in file\n";
clog << param << "\n";
+ error_occured = true;
}
if (!did_seq)
}
}
+ if (error_occured) {
+ throw mussa_load_error("Error parsing MUPA file");
+ }
soft_thres = threshold;
// no file was loaded, signal error
set_dirty(true);
// Should run with no exceptions
}
+BOOST_AUTO_TEST_CASE( mussa_load_mupa_comment_character )
+{
+ fs::path mupa_path(EXAMPLE_DIR, fs::native);
+ fs::path seq_path = fs::initial_path() / "seq" / "mouse_mck_pro.fa";
+ fs::path annot_path = fs::initial_path() / "mm_mck3test.annot";
+
+ std::string mupa(
+ "# hello\015\012"
+ "ANA_NAME load_mupa_crlf\015\012");
+ mupa += "#SEQUENCE " + seq_path.native_file_string() + "\015\012";
+ mupa += "#ANNOTATION " + annot_path.native_file_string() + "\015\012";
+
+ istringstream mupa_stream(mupa);
+ Mussa m;
+ fs::path base;
+ m.load_mupa_stream( mupa_stream, base );
+ // Should run with no exceptions
+}
+
+BOOST_AUTO_TEST_CASE( mussa_load_mupa_exception )
+{
+ std::string mupa(
+ "# hello\015\012"
+ "ANA_NAME load_mupa_crlf\015\012"
+ "mwahhaha I broke you!\n"
+ );
+
+ istringstream mupa_stream(mupa);
+ Mussa m;
+ fs::path base;
+ BOOST_CHECK_THROW(m.load_mupa_stream( mupa_stream, base ), mussa_load_error);
+}
+
BOOST_AUTO_TEST_CASE( mussa_load_mupa )
{
fs::path mupa_path(EXAMPLE_DIR, fs::native);