Skip to content
Snippets Groups Projects
Commit cc6b63a7 authored by Jö Fahlke's avatar Jö Fahlke
Browse files

[Test] Check that `className(arg)` returns the dynamic type.

parent a32c5aac
Branches
Tags
1 merge request!659Make `className(expr)` return dynamic type
......@@ -60,6 +60,12 @@ void checkname(Dune::TestSuite &t, const std::string &name, CVRef cvref,
<< '`' << name << "` contains `&` or `&&`";
}
struct Base {
virtual ~Base() = default;
};
struct Derived : Base {};
int main()
{
Dune::TestSuite t("className()");
......@@ -111,5 +117,15 @@ int main()
R"(\bFieldVector\s*<.*\bcomplex\s*<\s*double\s*>\s*,\s*10\s*>)");
std::cout << std::endl;
std::cout << "Test printing dynamic vs. static types:" << std::endl;
Derived d{};
Base &b = d;
checkname(t, Dune::className(b), {}, R"(\bDerived\b)");
checkname(t, Dune::className<decltype(b)>(), is_lvalue_reference,
R"(\bBase\b)");
t.check(Dune::className<Derived>() == Dune::className(b))
<< "dynamic type of base reference should match derived type";
std::cout << std::endl;
return t.exit();
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment