/* ParameterDomain(Test) - document the handling of parameter type domain Copyright (C) 2026, Hermann Vosseler   **Lumiera** is free software; you can redistribute it and/or modify it   under the terms of the GNU General Public License as published by the   Free Software Foundation; either version 2 of the License, or (at your   option) any later version. See the file COPYING for further details. * *****************************************************************/ /** @file parameter-domain-test.cpp ** unit test \ref ParameterDomain_test */ #include "test/run.hpp" //#include "test/test-helper.hpp" #include "lib/par/domain.hpp" #include "test/diagnostic-output.hpp"////////////TODO //#include //#include //#include //using std::string; //using std::vector; //using std::swap; namespace lib { namespace par { namespace test{ // using lumiera::error::LUMIERA_ERROR_LOGIC; namespace {//Test fixture.... class Thing { }; template struct Some { X x; }; typedef Some SomeThing; }//(End)Test fixture /**************************************************************************//** * @test cover properties of generic parameter containers. */ class ParameterDomain_test : public Test { virtual void run (Arg) { seedRand(); basics(); verify_valueLimits(); verify_valueAccess(); } void basics() { } void verify_valueLimits() { SHOW_EXPR(preClamp (23)) SHOW_EXPR(preClamp (-55)) SHOW_EXPR(preClamp (23)) SHOW_EXPR(preClamp (-55)) SHOW_EXPR((sub_domain)) SHOW_EXPR((sub_domain)) SHOW_EXPR((sub_domain)) SHOW_EXPR(std::numeric_limits::max()) SHOW_EXPR(std::numeric_limits::max()) SHOW_EXPR(std::numeric_limits::lowest()) SHOW_EXPR(std::numeric_limits::lowest()) // concept sub_domain = std::numeric_limits::max() < std::numeric_limits::max() // or std::numeric_limits::lowest() > std::numeric_limits::lowest() //SHOW_EXPR(std::numeric_limits::lowest() > std::numeric_limits::lowest()) //SHOW_EXPR(abs(std::numeric_limits::lowest()) < (std::numeric_limits::lowest())) SHOW_EXPR(preClamp (INT64_MAX)) SHOW_EXPR(preClamp (INT64_MIN)) } void verify_valueAccess() { BaseDomain domInt; Domain& d1{domInt}; int val1 = 1 + rani (1000); ValBuff& src1 = asValBuff (val1); uint target1{0}; CHECK (not target1); TypeHandler& du1{d1}; du1.extractAs (target1, src1); CHECK (target1 == uint(val1)); float target2{0}; TypeHandler& df1{d1}; df1.extractAs (target2, src1); CHECK (target2 == float(val1)); } }; /** Register this test class... */ LAUNCHER (ParameterDomain_test, "unit lib"); }}} // namespace lib::par::test