Add test case for SGTime::updateLocal crash
SF-ID: https://sourceforge.net/p/flightgear/codetickets/2780/
This commit is contained in:
parent
2c0b3d20a2
commit
5800143b96
5 changed files with 106 additions and 0 deletions
|
@ -4,6 +4,7 @@ foreach( simgear_test_category
|
|||
props
|
||||
canvas
|
||||
structure
|
||||
timing
|
||||
)
|
||||
|
||||
add_subdirectory(${simgear_test_category})
|
||||
|
|
12
test_suite/simgear_tests/timing/CMakeLists.txt
Normal file
12
test_suite/simgear_tests/timing/CMakeLists.txt
Normal file
|
@ -0,0 +1,12 @@
|
|||
set(TESTSUITE_SOURCES
|
||||
${TESTSUITE_SOURCES}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/TestSuite.cxx
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/test_SGTime.cxx
|
||||
PARENT_SCOPE
|
||||
)
|
||||
|
||||
set(TESTSUITE_HEADERS
|
||||
${TESTSUITE_HEADERS}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/test_SGTime.hxx
|
||||
PARENT_SCOPE
|
||||
)
|
11
test_suite/simgear_tests/timing/TestSuite.cxx
Normal file
11
test_suite/simgear_tests/timing/TestSuite.cxx
Normal file
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: (C) 2022 James Turner <james@flightgear.org>
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
|
||||
#include "test_SGTime.hxx"
|
||||
|
||||
|
||||
// Set up the tests.
|
||||
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(SimgearTimingTests, "Simgear unit tests");
|
49
test_suite/simgear_tests/timing/test_SGTime.cxx
Normal file
49
test_suite/simgear_tests/timing/test_SGTime.cxx
Normal file
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: (C) 2022 James Turner <james@flightgear.org>
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <algorithm>
|
||||
#include <memory>
|
||||
|
||||
#include "test_SGTime.hxx"
|
||||
#include "test_suite/dataStore.hxx"
|
||||
|
||||
#include <simgear/math/SGGeod.hxx>
|
||||
|
||||
using namespace std;
|
||||
|
||||
// Set up function for each test.
|
||||
void SimgearTimingTests::setUp()
|
||||
{
|
||||
}
|
||||
|
||||
// Clean up after each test.
|
||||
void SimgearTimingTests::tearDown()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
void SimgearTimingTests::testBadZoneDetectPosition()
|
||||
{
|
||||
DataStore &data = DataStore::get();
|
||||
const SGPath rootPath{data.getFGRoot()};
|
||||
if (rootPath.isNull()) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::unique_ptr<SGTime> t(new SGTime{rootPath});
|
||||
|
||||
const auto goodPos = SGGeod::fromDeg(-69.5, 12.0);
|
||||
CPPUNIT_ASSERT(t->updateLocal(goodPos, rootPath / "Timezone"));
|
||||
|
||||
// discovered while flying with the Shuttle, but actually
|
||||
// can happen at sea level.
|
||||
// https://sourceforge.net/p/flightgear/codetickets/2780/
|
||||
|
||||
const auto pos = SGGeod::fromDeg(-69.0, 12.0);
|
||||
CPPUNIT_ASSERT(t->updateLocal(pos, rootPath / "Timezone") == false);
|
||||
}
|
33
test_suite/simgear_tests/timing/test_SGTime.hxx
Normal file
33
test_suite/simgear_tests/timing/test_SGTime.hxx
Normal file
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: (C) 2022 James Turner <james@flightgear.org>
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <cppunit/TestFixture.h>
|
||||
#include <cppunit/extensions/HelperMacros.h>
|
||||
|
||||
#include <simgear/timing/sg_time.hxx>
|
||||
|
||||
// The unit tests of the simgear property tree.
|
||||
class SimgearTimingTests : public CppUnit::TestFixture
|
||||
{
|
||||
// Set up the test suite.
|
||||
CPPUNIT_TEST_SUITE(SimgearTimingTests);
|
||||
CPPUNIT_TEST(testBadZoneDetectPosition);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
public:
|
||||
// Set up function for each test.
|
||||
void setUp();
|
||||
|
||||
// Clean up after each test.
|
||||
void tearDown();
|
||||
|
||||
// The tests.
|
||||
void testBadZoneDetectPosition();
|
||||
|
||||
private:
|
||||
|
||||
};
|
Loading…
Reference in a new issue