// ---------- sequence.cc -----------
// ----------------------------------------
#include <boost/filesystem/fstream.hpp>
+#include <boost/filesystem/operations.hpp>
namespace fs = boost::filesystem;
#include <boost/spirit/core.hpp>
void
Sequence::load_annot(fs::path file_path, int start_index, int end_index)
{
+ if (not fs::exists(file_path)) {
+ throw mussa_load_error("Annotation File " + file_path.string() + " was not found");
+ }
+ if (fs::is_directory(file_path)) {
+ throw mussa_load_error(file_path.string() +
+ " is a directory, please provide a file for annotations."
+ );
+ }
fs::fstream data_stream(file_path, std::ios::in);
if (!data_stream)
{
- throw mussa_load_error("Sequence File: " + file_path.string() + " not found");
+ throw mussa_load_error("Error loading annotation file " + file_path.string());
}
// so i should probably be passing the parse function some iterators
BOOST_CHECK_THROW(m1.load_mupa_file( curdir ), mussa_load_error );
}
+// catch error if annotation isn't a file
+BOOST_AUTO_TEST_CASE( mussa_annotation_is_not_file )
+{
+ Mussa m1;
+ fs::path full_path(fs::path(EXAMPLE_DIR, fs::native) / "directory.mupa");
+ BOOST_CHECK_THROW( m1.load_mupa_file( full_path ), mussa_load_error );
+}
+
BOOST_AUTO_TEST_CASE( mussa_load_analysis )
{
fs::path example_dir(EXAMPLE_DIR, fs::native);