Skip to content

Commit

Permalink
Add support for stage-specific options on random kernel.
Browse files Browse the repository at this point in the history
Close #1072
  • Loading branch information
abellgithub committed Dec 21, 2015
1 parent e105dcd commit 277b2a2
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 0 deletions.
1 change: 1 addition & 0 deletions kernels/random/RandomKernel.cpp
Expand Up @@ -168,6 +168,7 @@ int RandomKernel::execute()

Stage& writer = makeWriter(m_outputFile, makeReader(readerOptions));
writer.setOptions(writerOptions);
applyExtraStageOptionsRecursive(&writer);

PointTable table;

Expand Down
1 change: 1 addition & 0 deletions test/unit/CMakeLists.txt
Expand Up @@ -121,6 +121,7 @@ if (WITH_APPS)
if (BUILD_PIPELINE_TESTS)
PDAL_ADD_TEST(pcpipeline_test FILES apps/pcpipelineTest.cpp)
endif()
PDAL_ADD_TEST(random_test FILES apps/RandomTest.cpp)
endif(WITH_APPS)

if(LIBXML2_FOUND)
Expand Down
78 changes: 78 additions & 0 deletions test/unit/apps/RandomTest.cpp
@@ -0,0 +1,78 @@
/******************************************************************************
* Copyright (c) 2015, Hobu Inc., (info@hobu.co)
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following
* conditions are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided
* with the distribution.
* * Neither the name of Hobu, Inc. nor the names of contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
****************************************************************************/

#include <iostream>
#include <string>

#include <pdal/pdal_test_main.hpp>
#include <pdal/util/FileUtils.hpp>
#include <pdal/util/Utils.hpp>
#include <pdal/PDALUtils.hpp>
#include <LasReader.hpp>

#include "Support.hpp"

using namespace pdal;

namespace
{
std::string appName()
{
return Support::binpath("pdal random");
}
}

TEST(Random, extra_ops)
{
std::string outfile(Support::temppath("out.las"));

const std::string cmd = appName() +
" --count=100 --writers.las.minor_version=3 " + outfile;

FileUtils::deleteFile(outfile);
std::string output;
Utils::run_shell_command(cmd, output);

Options o;
o.add("filename", outfile);

PointTable t;

LasReader r;
r.setOptions(o);
r.prepare(t);

MetadataNode n = r.getMetadata();
EXPECT_EQ(n.findChild("minor_version").value<uint8_t>(), 3);
}

0 comments on commit 277b2a2

Please sign in to comment.