/*========================================================================= Program: Visualization Toolkit Module: TestPiecewiseFunctionLogScale.cxx Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ #include "vtkPiecewiseFunction.h" #include "vtkNew.h" #include // Note that this may evaluate args twice. Use wisely. #define TEST_ASSERT_FUZZY_EQUAL(expect, actual) \ if (std::fabs(expect - actual) >= 1e-5) \ { \ std::cerr << "Error at line " << __LINE__ \ << ": Expected value " << expect << ", got " \ << actual << "\n"; \ return EXIT_FAILURE; \ } int TestPiecewiseFunctionLogScale(int, char*[]) { vtkNew func; func->UseLogScaleOn(); // Add some points that will give easily predictable interpolations. func->AddPoint( .01, -2.); func->AddPoint(-.01, -2.); func->AddPoint( 100., 2.); func->AddPoint(-100., 2.); // Check that the interpolations are correct in logarithmic space. TEST_ASSERT_FUZZY_EQUAL(-1., func->GetValue( .1)); TEST_ASSERT_FUZZY_EQUAL(-1., func->GetValue(-.1)); TEST_ASSERT_FUZZY_EQUAL(0., func->GetValue( 1.)); TEST_ASSERT_FUZZY_EQUAL(0., func->GetValue(-1.)); TEST_ASSERT_FUZZY_EQUAL(1., func->GetValue( 10.)); TEST_ASSERT_FUZZY_EQUAL(1., func->GetValue(-10.)); return EXIT_SUCCESS; }