diff --git a/src/Nibbler.cpp b/src/Nibbler.cpp index 284b4527f..fc8ab29ca 100644 --- a/src/Nibbler.cpp +++ b/src/Nibbler.cpp @@ -219,7 +219,7 @@ bool Nibbler::getUntilEOS (std::string& result) //////////////////////////////////////////////////////////////////////////////// bool Nibbler::getN (const int quantity, std::string& result) { - if (mCursor + quantity < mLength) + if (mCursor + quantity <= mLength) { result = mInput.substr (mCursor, quantity); mCursor += quantity; diff --git a/test/nibbler.t.cpp b/test/nibbler.t.cpp index 3f245aa34..8d0717897 100644 --- a/test/nibbler.t.cpp +++ b/test/nibbler.t.cpp @@ -34,7 +34,7 @@ Context context; //////////////////////////////////////////////////////////////////////////////// int main (int argc, char** argv) { - UnitTest t (282); + UnitTest t (289); try { @@ -468,6 +468,17 @@ int main (int argc, char** argv) t.ok (n.skipWS (), " '' skip , -> ok"); t.ok (n.depleted (), " '' depleted -> true"); + // bool getN (int, std::string&); + t.diag ("Nibbler::getN"); + n = Nibbler ("111223"); + t.ok (n.getN (3, s), " '111223' : getN (3) -> true"); + t.is (s, "111", " '111223' : getN (3) -> '111'"); + t.ok (n.getN (2, s), " '223' : getN (2) -> true"); + t.is (s, "22", " '223' : getN (2) -> '22'"); + t.ok (n.getN (1, s), " '3' : getN (1) -> true"); + t.is (s, "3", " '3' : getN (1) -> '1'"); + t.ok (n.depleted (), " '' : depleted () -> true"); + // bool getUntilEOL (std::string&); t.diag ("Nibbler::getUntilEOL"); n = Nibbler ("one\ntwo");