|
Packit |
a4aae4 |
// -*- mode: c++; c-basic-offset:4 -*-
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
// This file is part of libdap, A C++ implementation of the OPeNDAP Data
|
|
Packit |
a4aae4 |
// Access Protocol.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
// Copyright (c) 2002,2003 OPeNDAP, Inc.
|
|
Packit |
a4aae4 |
// Author: James Gallagher <jgallagher@opendap.org>
|
|
Packit |
a4aae4 |
//
|
|
Packit |
a4aae4 |
// This library is free software; you can redistribute it and/or
|
|
Packit |
a4aae4 |
// modify it under the terms of the GNU Lesser General Public
|
|
Packit |
a4aae4 |
// License as published by the Free Software Foundation; either
|
|
Packit |
a4aae4 |
// version 2.1 of the License, or (at your option) any later version.
|
|
Packit |
a4aae4 |
//
|
|
Packit |
a4aae4 |
// This library is distributed in the hope that it will be useful,
|
|
Packit |
a4aae4 |
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
a4aae4 |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
a4aae4 |
// Lesser General Public License for more details.
|
|
Packit |
a4aae4 |
//
|
|
Packit |
a4aae4 |
// You should have received a copy of the GNU Lesser General Public
|
|
Packit |
a4aae4 |
// License along with this library; if not, write to the Free Software
|
|
Packit |
a4aae4 |
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
Packit |
a4aae4 |
//
|
|
Packit |
a4aae4 |
// You can contact OPeNDAP, Inc. at PO Box 112, Saunderstown, RI. 02874-0112.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#include "config.h"
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#include <cppunit/TextTestRunner.h>
|
|
Packit |
a4aae4 |
#include <cppunit/extensions/TestFactoryRegistry.h>
|
|
Packit |
a4aae4 |
#include <cppunit/extensions/HelperMacros.h>
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#include <sstream>
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#include "Byte.h"
|
|
Packit |
a4aae4 |
#include "Int16.h"
|
|
Packit |
a4aae4 |
#include "UInt16.h"
|
|
Packit |
a4aae4 |
#include "Int32.h"
|
|
Packit |
a4aae4 |
#include "UInt32.h"
|
|
Packit |
a4aae4 |
#include "Float32.h"
|
|
Packit |
a4aae4 |
#include "Float64.h"
|
|
Packit |
a4aae4 |
#include "Str.h"
|
|
Packit |
a4aae4 |
#include "Url.h"
|
|
Packit |
a4aae4 |
#include "Array.h"
|
|
Packit |
a4aae4 |
#include "Structure.h"
|
|
Packit |
a4aae4 |
#include "Sequence.h"
|
|
Packit |
a4aae4 |
#include "Grid.h"
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#include "DDS.h"
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#include "GNURegex.h"
|
|
Packit |
a4aae4 |
#include "GetOpt.h"
|
|
Packit |
a4aae4 |
#include "util.h"
|
|
Packit |
a4aae4 |
#include "debug.h"
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#include "testFile.h"
|
|
Packit |
a4aae4 |
#include "test_config.h"
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
static bool debug = false;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#undef DBG
|
|
Packit |
a4aae4 |
#define DBG(x) do { if (debug) {x;} } while(false)
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
using namespace CppUnit;
|
|
Packit |
a4aae4 |
using namespace std;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
namespace libdap {
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
class DDSTest: public TestFixture {
|
|
Packit |
a4aae4 |
private:
|
|
Packit |
a4aae4 |
DDS *dds1, *dds2;
|
|
Packit |
a4aae4 |
BaseTypeFactory factory;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
DDS *dds_dap4;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
public:
|
|
Packit |
a4aae4 |
DDSTest() :
|
|
Packit |
a4aae4 |
dds1(0), dds2(0), dds_dap4(0)
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
~DDSTest()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void setUp()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
dds1 = new DDS(&factory, "test1");
|
|
Packit |
a4aae4 |
dds2 = new DDS(&factory, "test2");
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
dds_dap4 = new DDS(&factory, "test2", "4.0");
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void tearDown()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
delete dds1;
|
|
Packit |
a4aae4 |
dds1 = 0;
|
|
Packit |
a4aae4 |
delete dds2;
|
|
Packit |
a4aae4 |
dds2 = 0;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
delete dds_dap4;
|
|
Packit |
a4aae4 |
dds_dap4 = 0;
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
bool re_match(Regex &r, const string &s)
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
int match = r.match(s.c_str(), s.length());
|
|
Packit |
a4aae4 |
DBG(cerr << "Match: " << match << " should be: " << s.length() << endl);
|
|
Packit |
a4aae4 |
return match == static_cast<int>(s.length());
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
// The tests commented exercise features no longer supported
|
|
Packit |
a4aae4 |
// by libdap. In particular, a DAS must now be properly structured
|
|
Packit |
a4aae4 |
// to work with transfer_attributes() - if a handler builds a malformed
|
|
Packit |
a4aae4 |
// DAS, it will need to specialize the BaseType::transfer_attributes()
|
|
Packit |
a4aae4 |
// method.
|
|
Packit |
a4aae4 |
CPPUNIT_TEST_SUITE (DDSTest);
|
|
Packit |
a4aae4 |
CPPUNIT_TEST(transfer_attributes_test_1);
|
|
Packit |
a4aae4 |
CPPUNIT_TEST(transfer_attributes_test_2);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
CPPUNIT_TEST(symbol_name_test);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
// These test both transfer_attributes() and print_xml()
|
|
Packit |
a4aae4 |
CPPUNIT_TEST(print_xml_test);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
CPPUNIT_TEST(print_xml_test2);
|
|
Packit |
a4aae4 |
CPPUNIT_TEST(print_xml_test3);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
// The X_1 tests look at the proper merging of hdf4's _dim_n attributes.
|
|
Packit |
a4aae4 |
// But that functionality was moved from libdap to the hdf4 handler.
|
|
Packit |
a4aae4 |
// CPPUNIT_TEST(print_xml_test3_1);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
CPPUNIT_TEST(print_xml_test4);
|
|
Packit |
a4aae4 |
CPPUNIT_TEST(print_xml_test5);
|
|
Packit |
a4aae4 |
// CPPUNIT_TEST(print_xml_test5_1);
|
|
Packit |
a4aae4 |
CPPUNIT_TEST(print_xml_test6);
|
|
Packit |
a4aae4 |
// CPPUNIT_TEST(print_xml_test6_1);
|
|
Packit |
a4aae4 |
CPPUNIT_TEST(print_dmr_test);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
CPPUNIT_TEST(get_response_size_test);
|
|
Packit |
a4aae4 |
CPPUNIT_TEST(get_response_size_test_c);
|
|
Packit |
a4aae4 |
CPPUNIT_TEST(get_response_size_test_c2);
|
|
Packit |
a4aae4 |
CPPUNIT_TEST(get_response_size_test_c3);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
// see comment in code below. jhrg 2/4/14 CPPUNIT_TEST(get_response_size_test_seq);
|
|
Packit |
a4aae4 |
CPPUNIT_TEST(get_response_size_test_seq_c);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
CPPUNIT_TEST_SUITE_END()
|
|
Packit |
a4aae4 |
;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void transfer_attributes_test_1()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
try {
|
|
Packit |
a4aae4 |
dds1->parse((string) TEST_SRC_DIR + "/dds-testsuite/fnoc1.nc.dds");
|
|
Packit |
a4aae4 |
DAS das;
|
|
Packit |
a4aae4 |
das.parse((string) TEST_SRC_DIR + "/dds-testsuite/fnoc1.nc.das");
|
|
Packit |
a4aae4 |
dds1->transfer_attributes(&das);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
DBG2(dds1->print_xml(cerr, false, ""));
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
AttrTable &at = dds1->get_attr_table();
|
|
Packit |
a4aae4 |
AttrTable::Attr_iter i = at.attr_begin();
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(i != at.attr_end() && at.get_name(i) == "NC_GLOBAL");
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(i != at.attr_end() && at.get_name(++i) == "DODS_EXTRA");
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
catch (Error &e) {
|
|
Packit |
a4aae4 |
cout << "Error: " << e.get_error_message() << endl;
|
|
Packit |
a4aae4 |
CPPUNIT_FAIL("Error thrown!");
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void transfer_attributes_test_2()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
try {
|
|
Packit |
a4aae4 |
dds2->parse((string) TEST_SRC_DIR + "/dds-testsuite/3B42.980909.5.HDF.dds");
|
|
Packit |
a4aae4 |
DAS das;
|
|
Packit |
a4aae4 |
das.parse((string) TEST_SRC_DIR + "/dds-testsuite/3B42.980909.5.hacked.HDF.das");
|
|
Packit |
a4aae4 |
dds2->transfer_attributes(&das);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
DBG2(dds2->print_xml(cerr, false, ""));
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
AttrTable &at = dds2->get_attr_table();
|
|
Packit |
a4aae4 |
AttrTable::Attr_iter i = at.attr_begin();
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(i != at.attr_end() && at.get_name(i) == "HDF_GLOBAL");
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(i != at.attr_end() && at.get_name(++i) == "CoreMetadata");
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
catch (Error &e) {
|
|
Packit |
a4aae4 |
cout << "Error: " << e.get_error_message() << endl;
|
|
Packit |
a4aae4 |
CPPUNIT_FAIL("Error thrown!");
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void symbol_name_test()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
try {
|
|
Packit |
a4aae4 |
// read a DDS.
|
|
Packit |
a4aae4 |
dds1->parse((string) TEST_SRC_DIR + "/dds-testsuite/test.18");
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(dds1->var("oddTemp"));
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
dds2->parse((string) TEST_SRC_DIR + "/dds-testsuite/test.19b");
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(dds2->var("b#c"));
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(dds2->var("b%23c"));
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(dds2->var("huh.Image#data"));
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(dds2->var("c d"));
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(dds2->var("c%20d"));
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
catch (Error &e) {
|
|
Packit |
a4aae4 |
cerr << e.get_error_message() << endl;
|
|
Packit |
a4aae4 |
CPPUNIT_FAIL("Caught unexpected Error object");
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void print_xml_test()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
try {
|
|
Packit |
a4aae4 |
dds2->parse((string) TEST_SRC_DIR + "/dds-testsuite/test.19b");
|
|
Packit |
a4aae4 |
ostringstream oss;
|
|
Packit |
a4aae4 |
dds2->print_xml_writer(oss, false, "http://localhost/dods/test.xyz");
|
|
Packit |
a4aae4 |
DBG2(cerr << "Printed DDX: " << oss.str() << endl);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
string baseline = readTestBaseline((string) TEST_SRC_DIR + "/dds-testsuite/test.19b.xml");
|
|
Packit |
a4aae4 |
DBG2(cerr << "The baseline: " << baseline << endl);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(baseline == oss.str());
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
catch (Error &e) {
|
|
Packit |
a4aae4 |
cerr << e.get_error_message() << endl;
|
|
Packit |
a4aae4 |
CPPUNIT_FAIL("Caught unexpected Error object");
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void print_xml_test2()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
dds2->parse((string) TEST_SRC_DIR + "/dds-testsuite/test.19c");
|
|
Packit |
a4aae4 |
DAS das;
|
|
Packit |
a4aae4 |
das.parse((string) TEST_SRC_DIR + "/dds-testsuite/test.19c.das");
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
dds2->transfer_attributes(&das);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
ostringstream oss;
|
|
Packit |
a4aae4 |
dds2->print_xml_writer(oss, false, "http://localhost/dods/test.xyz");
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
DBG2(cerr << oss.str() << endl);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
string baseline = readTestBaseline((string) TEST_SRC_DIR + "/dds-testsuite/test.19c.xml");
|
|
Packit |
a4aae4 |
DBG2(cerr << baseline << endl);
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(baseline == oss.str());
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void print_xml_test3()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
dds2->parse((string) TEST_SRC_DIR + "/dds-testsuite/test.19d");
|
|
Packit |
a4aae4 |
DAS das;
|
|
Packit |
a4aae4 |
das.parse((string) TEST_SRC_DIR + "/dds-testsuite/test.19d.das");
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
dds2->transfer_attributes(&das);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
ostringstream oss;
|
|
Packit |
a4aae4 |
dds2->print_xml_writer(oss, false, "http://localhost/dods/test.xyz");
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
DBG2(cerr << oss.str() << endl);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
string baseline = readTestBaseline((string) TEST_SRC_DIR + "/dds-testsuite/test.19d.xml");
|
|
Packit |
a4aae4 |
DBG2(cerr << baseline << endl);
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(baseline == oss.str());
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
// This tests the HDF4 _dim_n attribute. support for that was
|
|
Packit |
a4aae4 |
// moved to the handler itself.
|
|
Packit |
a4aae4 |
void print_xml_test3_1()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
dds2->parse((string) TEST_SRC_DIR + "/dds-testsuite/test.19d");
|
|
Packit |
a4aae4 |
DAS das;
|
|
Packit |
a4aae4 |
das.parse((string) TEST_SRC_DIR + "/dds-testsuite/test.19d1.das");
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
dds2->transfer_attributes(&das);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
ostringstream oss;
|
|
Packit |
a4aae4 |
dds2->print_xml_writer(oss, false, "http://localhost/dods/test.xyz");
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
DBG2(cerr << oss.str() << endl);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
string baseline = readTestBaseline((string) TEST_SRC_DIR + "/dds-testsuite/test.19d1.xml");
|
|
Packit |
a4aae4 |
DBG2(cerr << baseline << endl);
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(baseline == oss.str());
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void print_xml_test4()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
dds2->parse((string) TEST_SRC_DIR + "/dds-testsuite/test.19e");
|
|
Packit |
a4aae4 |
DAS das;
|
|
Packit |
a4aae4 |
das.parse((string) TEST_SRC_DIR + "/dds-testsuite/test.19e.das");
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
dds2->transfer_attributes(&das);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
DBG(dds2->var("c%20d")->get_attr_table().print(stderr));
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
ostringstream oss;
|
|
Packit |
a4aae4 |
dds2->print_xml_writer(oss, false, "http://localhost/dods/test.xyz");
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
DBG(cerr << oss.str() << endl);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
string baseline = readTestBaseline((string) TEST_SRC_DIR + "/dds-testsuite/test.19e.xml");
|
|
Packit |
a4aae4 |
DBG2(cerr << baseline << endl);
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(baseline == oss.str());
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void print_xml_test5()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
string dds_file((string) TEST_SRC_DIR + "/dds-testsuite/test.19f");
|
|
Packit |
a4aae4 |
dds2->parse(dds_file);
|
|
Packit |
a4aae4 |
DAS das;
|
|
Packit |
a4aae4 |
string das_file((string) TEST_SRC_DIR + "/dds-testsuite/test.19f.das");
|
|
Packit |
a4aae4 |
das.parse(das_file);
|
|
Packit |
a4aae4 |
string baseline_file((string) TEST_SRC_DIR + "/dds-testsuite/test.19f.xml");
|
|
Packit |
a4aae4 |
string baseline = readTestBaseline(baseline_file);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
try {
|
|
Packit |
a4aae4 |
dds2->transfer_attributes(&das);
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
catch (Error &e) {
|
|
Packit |
a4aae4 |
cerr << "Error: " << e.get_error_message() << endl;
|
|
Packit |
a4aae4 |
CPPUNIT_FAIL("Error exception");
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
DBG(dds2->var("huh")->get_attr_table().print(stderr));
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
ostringstream oss;
|
|
Packit |
a4aae4 |
dds2->print_xml_writer(oss, false, "http://localhost/dods/test.xyz");
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
DBG(cerr << "BASELINE DOCUMENT: " << baseline_file << endl);
|
|
Packit |
a4aae4 |
DBG(cerr << baseline << endl);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
DBG(cerr << "RESULT DOCUMENT: " << endl);
|
|
Packit |
a4aae4 |
DBG(cerr << oss.str() << endl);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(baseline == oss.str());
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
// Tests flat DAS into a DDS; no longer supported by libdap; specialize
|
|
Packit |
a4aae4 |
// handlers if they make these malformed DAS objects
|
|
Packit |
a4aae4 |
void print_xml_test5_1()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
dds2->parse((string) TEST_SRC_DIR + "/dds-testsuite/test.19f");
|
|
Packit |
a4aae4 |
DAS das;
|
|
Packit |
a4aae4 |
das.parse((string) TEST_SRC_DIR + "/dds-testsuite/test.19f1.das");
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
try {
|
|
Packit |
a4aae4 |
dds2->transfer_attributes(&das);
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
catch (Error &e) {
|
|
Packit |
a4aae4 |
cerr << "Error: " << e.get_error_message() << endl;
|
|
Packit |
a4aae4 |
CPPUNIT_FAIL("Error exception");
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
DBG(dds2->var("huh")->get_attr_table().print(stderr));
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
ostringstream oss;
|
|
Packit |
a4aae4 |
dds2->print_xml_writer(oss, false, "http://localhost/dods/test.xyz");
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
DBG(cerr << oss.str() << endl);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
string baseline = readTestBaseline((string) TEST_SRC_DIR + "/dds-testsuite/test.19f1.xml");
|
|
Packit |
a4aae4 |
DBG2(cerr << baseline << endl);
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(baseline == oss.str());
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void print_xml_test6()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
dds2->parse((string) TEST_SRC_DIR + "/dds-testsuite/test.19b");
|
|
Packit |
a4aae4 |
DAS das;
|
|
Packit |
a4aae4 |
das.parse((string) TEST_SRC_DIR + "/dds-testsuite/test.19b.das");
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
dds2->transfer_attributes(&das);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
ostringstream oss;
|
|
Packit |
a4aae4 |
dds2->print_xml_writer(oss, false, "http://localhost/dods/test.xyz");
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
DBG(cerr << oss.str() << endl);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
string baseline = readTestBaseline((string) TEST_SRC_DIR + "/dds-testsuite/test.19b6.xml");
|
|
Packit |
a4aae4 |
DBG2(cerr << baseline << endl);
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(baseline == oss.str());
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
// Tests flat DAS into a DDS; no longer supported by libdap; specialize
|
|
Packit |
a4aae4 |
// handlers if they make these malformed DAS objects
|
|
Packit |
a4aae4 |
void print_xml_test6_1()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
dds2->parse((string) TEST_SRC_DIR + "/dds-testsuite/test.19g");
|
|
Packit |
a4aae4 |
DAS das;
|
|
Packit |
a4aae4 |
das.parse((string) TEST_SRC_DIR + "/dds-testsuite/test.19g.das");
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
try {
|
|
Packit |
a4aae4 |
dds2->transfer_attributes(&das);
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
catch (Error &e) {
|
|
Packit |
a4aae4 |
cerr << "Error: " << e.get_error_message() << endl;
|
|
Packit |
a4aae4 |
CPPUNIT_FAIL("Error exception");
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
DBG(dds2->var("huh")->get_attr_table().print(stderr));
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
ostringstream oss;
|
|
Packit |
a4aae4 |
dds2->print_xml_writer(oss, false, "http://localhost/dods/test.xyz");
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
DBG(cerr << oss.str() << endl);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
string baseline = readTestBaseline((string) TEST_SRC_DIR + "/dds-testsuite/test.19g.xml");
|
|
Packit |
a4aae4 |
DBG2(cerr << baseline << endl);
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(baseline == oss.str());
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void print_dmr_test()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
try {
|
|
Packit |
a4aae4 |
dds_dap4->parse((string) TEST_SRC_DIR + "/dds-testsuite/fnoc1.nc.dds");
|
|
Packit |
a4aae4 |
DAS das;
|
|
Packit |
a4aae4 |
das.parse((string) TEST_SRC_DIR + "/dds-testsuite/fnoc1.nc.das");
|
|
Packit |
a4aae4 |
dds_dap4->transfer_attributes(&das);
|
|
Packit |
a4aae4 |
#if 0
|
|
Packit |
a4aae4 |
string file = (string) TEST_SRC_DIR + "/dds-testsuite/fnoc1.nc.dmr.xml";
|
|
Packit |
a4aae4 |
ofstream d(file.c_str());
|
|
Packit |
a4aae4 |
dds_dap4->print_dmr(d, false);
|
|
Packit |
a4aae4 |
d.close();
|
|
Packit |
a4aae4 |
#endif
|
|
Packit |
a4aae4 |
ostringstream oss;
|
|
Packit |
a4aae4 |
dds_dap4->print_dmr(oss, false);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
string baseline = readTestBaseline((string) TEST_SRC_DIR + "/dds-testsuite/fnoc1.nc.dmr.xml");
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
DBG(cerr << "Baseline: -->" << baseline << "<--" << endl);
|
|
Packit |
a4aae4 |
DBG(cerr << "DMR: -->" << oss.str() << "<--" << endl);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(baseline == oss.str());
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
catch (Error &e) {
|
|
Packit |
a4aae4 |
CPPUNIT_FAIL(e.get_error_message());
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void get_response_size_test()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
dds1->parse((string) TEST_SRC_DIR + "/dds-testsuite/3B42.980909.5.HDF.dds");
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(dds1->get_request_size(false) == 230400);
|
|
Packit |
a4aae4 |
DBG(cerr << "3B42.980909.5.HDF response size: " << dds1->get_request_size(false) << endl);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
dds2->parse((string) TEST_SRC_DIR + "/dds-testsuite/coads_climatology.nc.dds");
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(dds2->get_request_size(false) == 3119424);
|
|
Packit |
a4aae4 |
DBG(cerr << "coads_climatology.nc response size: " << dds2->get_request_size(false) << endl);
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void get_response_size_test_c()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
ConstraintEvaluator eval;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
dds1->parse((string) TEST_SRC_DIR + "/dds-testsuite/3B42.980909.5.HDF.dds");
|
|
Packit |
a4aae4 |
eval.parse_constraint("percipitate", *dds1);
|
|
Packit |
a4aae4 |
DBG(cerr << "3B42.980909.5.HDF response size: " << dds1->get_request_size(true) << endl);
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(dds1->get_request_size(true) == 115200);
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(dds1->get_request_size(false) == 230400);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
dds2->parse((string) TEST_SRC_DIR + "/dds-testsuite/coads_climatology.nc.dds");
|
|
Packit |
a4aae4 |
eval.parse_constraint("SST", *dds2);
|
|
Packit |
a4aae4 |
DBG(cerr << "coads_climatology.nc response size: " << dds2->get_request_size(true) << endl);
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(dds2->get_request_size(true) == 779856);
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(dds2->get_request_size(false) == 3119424);
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void get_response_size_test_c2()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
ConstraintEvaluator eval;
|
|
Packit |
a4aae4 |
dds2->parse((string) TEST_SRC_DIR + "/dds-testsuite/coads_climatology.nc.dds");
|
|
Packit |
a4aae4 |
eval.parse_constraint("SST[0:5][0:44][0:89]", *dds2);
|
|
Packit |
a4aae4 |
//cerr << "coads_climatology.nc response size: " << dds2->get_request_size(true) << endl;
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(dds2->get_request_size(true) == 98328);
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void get_response_size_test_c3()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
ConstraintEvaluator eval;
|
|
Packit |
a4aae4 |
dds2->parse((string) TEST_SRC_DIR + "/dds-testsuite/coads_climatology.nc.dds");
|
|
Packit |
a4aae4 |
eval.parse_constraint("SST[0][0:44][0:89]", *dds2);
|
|
Packit |
a4aae4 |
DBG(cerr << "coads_climatology.nc response size: " << dds2->get_request_size(true) << endl);
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(dds2->get_request_size(true) == 17288);
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
#if 0
|
|
Packit |
a4aae4 |
// This test includes a DAP String and the current implementation of Str::width(bool)
|
|
Packit |
a4aae4 |
// returns sizeof(std::string) which I'm not sure is what it should be doing. Return to
|
|
Packit |
a4aae4 |
// this and decide if it should be returning *string or ...? jhrg 2/4/14
|
|
Packit |
a4aae4 |
// FIXME
|
|
Packit |
a4aae4 |
void get_response_size_test_seq() {
|
|
Packit |
a4aae4 |
ConstraintEvaluator eval;
|
|
Packit |
a4aae4 |
dds2->parse((string) TEST_SRC_DIR + "/dds-testsuite/S2000415.HDF.dds");
|
|
Packit |
a4aae4 |
eval.parse_constraint("NSCAT%20Rev%2020.NSCAT%20L2", *dds2);
|
|
Packit |
a4aae4 |
DBG(cerr << "S2000415.HDF response size: " << dds2->get_request_size(true) << endl);
|
|
Packit |
a4aae4 |
DBG(dds2->print_constrained(cerr));
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(dds2->get_request_size(true) == 16 || dds2->get_request_size(true) == 12);
|
|
Packit |
a4aae4 |
// sizeof(string) == 8 or 4 depending on the compiler version (?)
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
#endif
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
void get_response_size_test_seq_c()
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
ConstraintEvaluator eval;
|
|
Packit |
a4aae4 |
dds2->parse((string) TEST_SRC_DIR + "/dds-testsuite/S2000415.HDF.dds");
|
|
Packit |
a4aae4 |
eval.parse_constraint("NSCAT%20Rev%2020.NSCAT%20L2.Low_Wind_Speed_Flag", *dds2);
|
|
Packit |
a4aae4 |
DBG(cerr << "S2000415.HDF response size: " << dds2->get_request_size(true) << endl);
|
|
Packit |
a4aae4 |
DBG(dds2->print_constrained(cerr));
|
|
Packit |
a4aae4 |
CPPUNIT_ASSERT(dds2->get_request_size(true) == 4);
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
};
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
CPPUNIT_TEST_SUITE_REGISTRATION(DDSTest);
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
} // namespace libdap
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
int main(int argc, char *argv[])
|
|
Packit |
a4aae4 |
{
|
|
Packit |
a4aae4 |
GetOpt getopt(argc, argv, "dh");
|
|
Packit |
a4aae4 |
int option_char;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
while ((option_char = getopt()) != -1)
|
|
Packit |
a4aae4 |
switch (option_char) {
|
|
Packit |
a4aae4 |
case 'd':
|
|
Packit |
a4aae4 |
debug = 1; // debug is a static global
|
|
Packit |
a4aae4 |
break;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
case 'h': { // help - show test names
|
|
Packit |
a4aae4 |
cerr << "Usage: DDSTest has the following tests:" << endl;
|
|
Packit |
a4aae4 |
const std::vector<Test*> &tests = libdap::DDSTest::suite()->getTests();
|
|
Packit |
a4aae4 |
unsigned int prefix_len = libdap::DDSTest::suite()->getName().append("::").length();
|
|
Packit |
a4aae4 |
for (std::vector<Test*>::const_iterator i = tests.begin(), e = tests.end(); i != e; ++i) {
|
|
Packit |
a4aae4 |
cerr << (*i)->getName().replace(0, prefix_len, "") << endl;
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
return 1;
|
|
Packit |
a4aae4 |
break;
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
default:
|
|
Packit |
a4aae4 |
break;
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
CppUnit::TextTestRunner runner;
|
|
Packit |
a4aae4 |
runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
bool wasSuccessful = true;
|
|
Packit |
a4aae4 |
string test = "";
|
|
Packit |
a4aae4 |
int i = getopt.optind;
|
|
Packit |
a4aae4 |
if (i == argc) {
|
|
Packit |
a4aae4 |
// run them all
|
|
Packit |
a4aae4 |
wasSuccessful = runner.run("");
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
else {
|
|
Packit |
a4aae4 |
for (; i < argc; ++i) {
|
|
Packit |
a4aae4 |
if (debug) cerr << "Running " << argv[i] << endl;
|
|
Packit |
a4aae4 |
test = libdap::DDSTest::suite()->getName().append("::").append(argv[i]);
|
|
Packit |
a4aae4 |
wasSuccessful = wasSuccessful && runner.run(test);
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
return wasSuccessful ? 0 : 1;
|
|
Packit |
a4aae4 |
}
|
|
Packit |
a4aae4 |
|