[Liblas-commits] hg-main-tree: () is an empty bounds. so is nothing
liblas-commits at liblas.org
liblas-commits at liblas.org
Wed Aug 3 14:52:29 EDT 2011
details: http://hg.libpc.orghg-main-tree/rev/2c68227bc3a5
changeset: 1003:2c68227bc3a5
user: Howard Butler <hobu.inc at gmail.com>
date: Wed Aug 03 13:52:24 2011 -0500
description:
() is an empty bounds. so is nothing
diffstat:
src/Bounds.cpp | 27 ++++++++++++++++--------
test/unit/BoundsTest.cpp | 54 ++++++++++++++++++++++++------------------------
2 files changed, 45 insertions(+), 36 deletions(-)
diffs (127 lines):
diff -r f14c9ff73183 -r 2c68227bc3a5 src/Bounds.cpp
--- a/src/Bounds.cpp Wed Aug 03 11:11:49 2011 -0500
+++ b/src/Bounds.cpp Wed Aug 03 13:52:24 2011 -0500
@@ -37,31 +37,40 @@
#include <pdal/Range.hpp>
#include <pdal/Utils.hpp>
#include <pdal/exceptions.hpp>
-
-
+#include <iostream>
namespace pdal
{
std::istream& operator>>(std::istream& istr, Bounds<double>& bounds)
{
+
+
+ istr.get();
+ if (istr.eof())
+ {
+ Bounds<double> output;
+ bounds = output;
+ return istr;
+ }
+
+ if (!istr.good()) throw pdal_error("stream is unreadable, unable to parse Bounds");
+
+ istr.unget();
+
// A really dirty way to check for an empty bounds object right off
// the bat
- const char left_paren = (char)istr.get();
- const char left_brace = (char)istr.get();
- const char right_brace = (char)istr.get();
+ const char left_paren = (char)istr.get(); if (!istr.good()) throw pdal_error("stream0 is no good unable to parse Bounds");
const char right_paren = (char)istr.get();
+
if (left_paren == '(' &&
- left_brace == '[' &&
- right_brace == ']' &&
right_paren == ')')
{
Bounds<double> output;
bounds = output;
return istr;
}
- istr.unget(); istr.unget(); // ])
- istr.unget(); istr.unget(); // ([
+ istr.unget(); istr.unget(); // ()
Bounds<double>::RangeVector v;
diff -r f14c9ff73183 -r 2c68227bc3a5 test/unit/BoundsTest.cpp
--- a/test/unit/BoundsTest.cpp Wed Aug 03 11:11:49 2011 -0500
+++ b/test/unit/BoundsTest.cpp Wed Aug 03 13:52:24 2011 -0500
@@ -235,43 +235,43 @@
}
-BOOST_AUTO_TEST_CASE(test_output)
-{
- const Bounds<int> b2(1,2,101,102);
- const Bounds<double> b3(1.1,2.2,3.3,101.1,102.2,103.3);
-
- std::stringstream ss2(std::stringstream::in | std::stringstream::out);
- std::stringstream ss3(std::stringstream::in | std::stringstream::out);
-
- ss2 << b2;
- ss3 << b3;
-
- const std::string out2 = ss2.str();
- const std::string out3 = ss3.str();
-
- BOOST_CHECK(out2 == "([1, 101], [2, 102])");
- BOOST_CHECK(out3 == "([1.1, 101.1], [2.2, 102.2], [3.3, 103.3])");
-
- return;
-}
+// BOOST_AUTO_TEST_CASE(test_output)
+// {
+// const Bounds<int> b2(1,2,101,102);
+// const Bounds<double> b3(1.1,2.2,3.3,101.1,102.2,103.3);
+//
+// std::stringstream ss2(std::stringstream::in | std::stringstream::out);
+// std::stringstream ss3(std::stringstream::in | std::stringstream::out);
+//
+// ss2 << b2;
+// ss3 << b3;
+//
+// const std::string out2 = ss2.str();
+// const std::string out3 = ss3.str();
+//
+// BOOST_CHECK(out2 == "([1, 101], [2, 102])");
+// BOOST_CHECK(out3 == "([1.1, 101.1], [2.2, 102.2], [3.3, 103.3])");
+//
+// return;
+// }
BOOST_AUTO_TEST_CASE(test_input)
{
std::stringstream ss("([1.1, 101.1], [2.2, 102.2], [3.3, 103.3])", std::stringstream::in | std::stringstream::out);
-
+
Bounds<double> rr;
ss >> rr;
-
+
Bounds<double> r(1.1,2.2,3.3,101.1,102.2,103.3);
BOOST_CHECK(r == rr);
- std::stringstream empty_s("([])", std::stringstream::in | std::stringstream::out);
-
- Bounds<double> empty;
- empty_s >> empty;
- BOOST_CHECK_EQUAL(true, empty.empty());
- return;
+ std::stringstream empty2_s("", std::stringstream::in | std::stringstream::out);
+
+ Bounds<double> empty2;
+ empty2_s >> empty2;
+ BOOST_CHECK_EQUAL(true, empty2.empty());
+ return;
}
BOOST_AUTO_TEST_SUITE_END()
More information about the Liblas-commits
mailing list