Commit a2090f1d authored by Mukund Sivaraman's avatar Mukund Sivaraman
Browse files

[2369] Throw OpenError when opening the input file fails

parent f142087f
......@@ -47,6 +47,10 @@ InputSource::InputSource(const char* filename) :
input_(file_stream_)
{
file_stream_.open(filename, std::fstream::in);
if (file_stream_.fail()) {
isc_throw(OpenError,
"Error opening the input source file: " << filename);
}
}
InputSource::~InputSource()
......
......@@ -43,6 +43,8 @@ public:
/// \brief Constructor which takes a filename to read from. The
/// associated file stream is managed internally.
///
/// \throws OpenError when opening the input file fails.
InputSource(const char* filename);
/// \brief Destructor
......@@ -87,6 +89,13 @@ public:
{}
};
/// \brief Exception thrown when we fail to open the input file.
struct OpenError : public Unexpected {
OpenError(const char* file, size_t line, const char* what) :
Unexpected(file, line, what)
{}
};
/// \brief Returned by getChar() when end of stream is reached.
static const int END_OF_STREAM;
......
......@@ -59,6 +59,12 @@ TEST_F(InputSourceTest, getName) {
EXPECT_EQ(TEST_DATA_SRCDIR "/masterload.txt", source2.getName());
}
TEST_F(InputSourceTest, nonExistentFile) {
EXPECT_THROW({
InputSource source(TEST_DATA_SRCDIR "/videokilledtheradiostar");
}, InputSource::OpenError);
}
// getChar() should return characters from the input stream in
// sequence. ungetChar() should skip backwards.
void
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment