[Liblas-commits] hg-main-tree: add more cases for converting data
type names into...
liblas-commits at liblas.org
liblas-commits at liblas.org
Tue May 24 17:27:19 EDT 2011
details: http://hg.libpc.orghg-main-tree/rev/ad148d95ce64
changeset: 723:ad148d95ce64
user: Howard Butler <hobu.inc at gmail.com>
date: Tue May 24 16:26:30 2011 -0500
description:
add more cases for converting data type names into Dimension::Field enums
Subject: hg-main-tree: add a getSchema() method for the xml schema reader
details: http://hg.libpc.orghg-main-tree/rev/320e3b8cbe13
changeset: 724:320e3b8cbe13
user: Howard Butler <hobu.inc at gmail.com>
date: Tue May 24 16:26:52 2011 -0500
description:
add a getSchema() method for the xml schema reader
Subject: hg-main-tree: add simple i/o testing of the XML schema reader/writer
details: http://hg.libpc.orghg-main-tree/rev/67f95ecb3aed
changeset: 725:67f95ecb3aed
user: Howard Butler <hobu.inc at gmail.com>
date: Tue May 24 16:27:10 2011 -0500
description:
add simple i/o testing of the XML schema reader/writer
diffstat:
include/libpc/XMLSchema.hpp | 1 +
src/XMLSchema.cpp | 46 +++++++++++++----------------
test/unit/XMLSchemaTest.cpp | 68 +++++++++++++++++++-------------------------
3 files changed, 52 insertions(+), 63 deletions(-)
diffs (210 lines):
diff -r a828f88d3f17 -r 67f95ecb3aed include/libpc/XMLSchema.hpp
--- a/include/libpc/XMLSchema.hpp Tue May 24 12:47:21 2011 -0500
+++ b/include/libpc/XMLSchema.hpp Tue May 24 16:27:10 2011 -0500
@@ -135,6 +135,7 @@
Reader(std::istream* xml, std::istream* schema);
~Reader();
+ inline libpc::Schema getSchema() { return m_schema; }
protected:
diff -r a828f88d3f17 -r 67f95ecb3aed src/XMLSchema.cpp
--- a/src/XMLSchema.cpp Tue May 24 12:47:21 2011 -0500
+++ b/src/XMLSchema.cpp Tue May 24 16:27:10 2011 -0500
@@ -37,7 +37,6 @@
#include <sstream>
#include <iostream>
-#include <istream>
#include <list>
#include <cstdlib>
#include <map>
@@ -519,22 +518,6 @@
Dimension::DataType Reader::GetDimensionType(std::string const& interpretation)
{
- // enum DataType
- // {
- // Int8,
- // Uint8,
- // Int16,
- // Uint16,
- // Int32,
- // Uint32,
- // Int64,
- // Uint64,
- // Float, // 32 bits
- // Double, // 64 bits
- // Undefined
- // };
-
-
if (!compare_no_case(interpretation.c_str(), "int8_t") ||
!compare_no_case(interpretation.c_str(), "int8"))
return Dimension::Int8;
@@ -605,31 +588,41 @@
if (!compare_no_case(name.c_str(), "Intensity"))
return Dimension::Field_Intensity;
- if (!compare_no_case(name.c_str(), "Return Number"))
+ if (!compare_no_case(name.c_str(), "Return Number") ||
+ !compare_no_case(name.c_str(), "ReturnNumber"))
return Dimension::Field_ReturnNumber;
- if (!compare_no_case(name.c_str(), "Number of Returns"))
+ if (!compare_no_case(name.c_str(), "Number of Returns") ||
+ !compare_no_case(name.c_str(), "NumberOfReturns"))
return Dimension::Field_NumberOfReturns;
if (!compare_no_case(name.c_str(), "Number of Returns"))
return Dimension::Field_NumberOfReturns;
- if (!compare_no_case(name.c_str(), "Scan Direction"))
+ if (!compare_no_case(name.c_str(), "Scan Direction") ||
+ !compare_no_case(name.c_str(), "ScanDirectionFlag") ||
+ !compare_no_case(name.c_str(), "ScanDirection"))
return Dimension::Field_ScanDirectionFlag;
- if (!compare_no_case(name.c_str(), "Flightline Edge"))
+ if (!compare_no_case(name.c_str(), "Flightline Edge") ||
+ !compare_no_case(name.c_str(), "EdgeOfFlightLine") ||
+ !compare_no_case(name.c_str(), "FlightlineEdge"))
return Dimension::Field_EdgeOfFlightLine;
if (!compare_no_case(name.c_str(), "Classification"))
return Dimension::Field_Classification;
- if (!compare_no_case(name.c_str(), "Scan Angle Rank"))
+ if (!compare_no_case(name.c_str(), "Scan Angle Rank") ||
+ !compare_no_case(name.c_str(), "ScanAngle") ||
+ !compare_no_case(name.c_str(), "ScanAngleRank"))
return Dimension::Field_ScanAngleRank;
- if (!compare_no_case(name.c_str(), "User Data"))
+ if (!compare_no_case(name.c_str(), "User Data") ||
+ !compare_no_case(name.c_str(), "UserData"))
return Dimension::Field_UserData;
- if (!compare_no_case(name.c_str(), "Point Source ID"))
+ if (!compare_no_case(name.c_str(), "Point Source ID")||
+ !compare_no_case(name.c_str(), "PointSourceId"))
return Dimension::Field_PointSourceId;
if (!compare_no_case(name.c_str(), "Time"))
@@ -644,6 +637,8 @@
if (!compare_no_case(name.c_str(), "Blue"))
return Dimension::Field_Blue;
+ if (!compare_no_case(name.c_str(), "Alpha"))
+ return Dimension::Field_Alpha;
return Dimension::Field_INVALID;
}
@@ -663,7 +658,7 @@
xmlTextWriterPtr w = static_cast<xmlTextWriterPtr>(writer.get());
xmlTextWriterFlush(w);
- printf("xml: %s", (const char *) b->content);
+ // printf("xml: %s", (const char *) b->content);
return std::string((const char *) b->content, b->size);
}
@@ -695,6 +690,7 @@
boost::uint32_t output = static_cast<boost::uint32_t>(precision);
return output;
}
+
void Writer::writeSchema(TextWriterPtr writer)
{
diff -r a828f88d3f17 -r 67f95ecb3aed test/unit/XMLSchemaTest.cpp
--- a/test/unit/XMLSchemaTest.cpp Tue May 24 12:47:21 2011 -0500
+++ b/test/unit/XMLSchemaTest.cpp Tue May 24 16:27:10 2011 -0500
@@ -59,7 +59,7 @@
std::string ReadXML(std::string filename)
{
- std::istream* infile = Utils::openFile(filename, true);
+ std::istream* infile = Utils::openFile(filename);
std::ifstream::pos_type size;
// char* data;
std::vector<char> data;
@@ -93,48 +93,40 @@
BOOST_AUTO_TEST_CASE(test_schema_read)
{
- std::istream* xml_stream = Utils::openFile(TestConfig::g_data_path+"schemas/8-dimension-schema.xml");
- std::istream* xsd_stream = Utils::openFile(TestConfig::g_data_path+"/schemas/LAS.xsd");
+ // std::istream* xml_stream = Utils::openFile(TestConfig::g_data_path+"schemas/8-dimension-schema.xml");
+ // std::istream* xsd_stream = Utils::openFile(TestConfig::g_data_path+"/schemas/LAS.xsd");
+ std::string xml = ReadXML(TestConfig::g_data_path+"schemas/8-dimension-schema.xml");
+ std::string xsd = ReadXML(TestConfig::g_data_path+"/schemas/LAS.xsd");
+ libpc::schema::Reader reader(xml, xsd);
- libpc::schema::Reader schema(xml_stream, xsd_stream);
+ libpc::Schema schema = reader.getSchema();
+ libpc::schema::Writer writer(schema);
+ std::string xml_output = writer.write();
+
+ libpc::schema::Reader reader2(xml_output, xsd);
+ libpc::Schema schema2 = reader2.getSchema();
+
+ libpc::Schema::Dimensions const& dims1 = schema.getDimensions();
+ libpc::Schema::Dimensions const& dims2 = schema2.getDimensions();
+
+ BOOST_CHECK_EQUAL(dims1.size(), dims2.size());
+
+ for (boost::uint32_t i = 0; i < dims2.size(); ++i)
+ {
+ libpc::Dimension const& dim1 = schema.getDimension(i);
+ libpc::Dimension const& dim2 = schema2.getDimension(i);
+
+ BOOST_CHECK_EQUAL(dim1.getDataType(), dim2.getDataType());
+ BOOST_CHECK_EQUAL(dim1.getByteSize(), dim2.getByteSize());
+
+ BOOST_CHECK_EQUAL(dim1.getField(), dim2.getField());
+ BOOST_CHECK_EQUAL(dim1.getDescription(), dim2.getDescription());
+
+ }
}
-BOOST_AUTO_TEST_CASE(test_schema_writer)
-{
- libpc::drivers::las::LasReader reader(TestConfig::g_data_path+"1.2-with-color.las");
- BOOST_CHECK(reader.getDescription() == "Las Reader");
-
- const Schema& schema = reader.getSchema();
- SchemaLayout layout(schema);
-
- Schema s(schema);
- Dimension& d = s.getDimension(15);
- d.setMinimum(14.00);
- d.setMaximum(142.00);
- libpc::schema::Writer sw(s);
- sw.write();// << std::endl;
-
-
-}
-// BOOST_AUTO_TEST_CASE(clean_up)
-// {
-// if (!ShouldRunTest()) return;
-//
-// libpc::drivers::oci::Options options = GetOptions();
-//
-// Connection connection = Connect(options);
-//
-// std::string base_table_name = options.GetPTree().get<std::string>("base_table_name");
-// std::string block_table_name = options.GetPTree().get<std::string>("block_table_name");
-//
-// std::string drop_base_table = "DROP TABLE " + base_table_name;
-// std::string drop_block_table = "DROP TABLE " + block_table_name;
-// RunSQL(connection, drop_base_table);
-// RunSQL(connection, drop_block_table);
-// }
-
BOOST_AUTO_TEST_SUITE_END()
More information about the Liblas-commits
mailing list