From: JINMEI Tatuya Date: Tue, 30 Oct 2012 02:25:55 +0000 (-0700) Subject: [2371] tested the nested open operation. no need to change impl. X-Git-Tag: trac2487_base~1^2~21^2~30^2~12 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ffcecb945009df0085dd917cbacd2233d15cc9e8;p=thirdparty%2Fkea.git [2371] tested the nested open operation. no need to change impl. --- diff --git a/src/lib/dns/tests/master_lexer_unittest.cc b/src/lib/dns/tests/master_lexer_unittest.cc index a3046af336..78fb17ab3d 100644 --- a/src/lib/dns/tests/master_lexer_unittest.cc +++ b/src/lib/dns/tests/master_lexer_unittest.cc @@ -32,10 +32,13 @@ namespace { class MasterLexerTest : public ::testing::Test { protected: - MasterLexerTest() {} + MasterLexerTest() : + expected_stream_name("stream-" + lexical_cast(&ss)) + {} MasterLexer lexer; stringstream ss; + const string expected_stream_name; }; // Commonly used check case where the input sources stack is empty. @@ -52,8 +55,7 @@ TEST_F(MasterLexerTest, preOpen) { TEST_F(MasterLexerTest, openStream) { lexer.open(ss); - EXPECT_EQ(string("stream-") + lexical_cast(&ss), - lexer.getSourceName()); + EXPECT_EQ(expected_stream_name, lexer.getSourceName()); // From the point of view of this test, we only have to check (though // indirectly) getSourceLine calls InputSource::getCurrentLine. It should @@ -76,6 +78,22 @@ TEST_F(MasterLexerTest, openFile) { checkEmptySource(lexer); } +TEST_F(MasterLexerTest, nestedOpen) { + lexer.open(ss); + EXPECT_EQ(expected_stream_name, lexer.getSourceName()); + + // We can open another source without closing the previous one. + lexer.open(TEST_DATA_SRCDIR "/masterload.txt"); + EXPECT_EQ(TEST_DATA_SRCDIR "/masterload.txt", lexer.getSourceName()); + + // Close works on the "topmost" (opened last) source + lexer.close(); + EXPECT_EQ(expected_stream_name, lexer.getSourceName()); + + lexer.close(); + EXPECT_TRUE(lexer.getSourceName().empty()); +} + TEST_F(MasterLexerTest, invalidClose) { // close() cannot be called if the sources stack is empty. EXPECT_THROW(lexer.close(), isc::InvalidOperation);