From: Wolfgang Bangerth Date: Thu, 22 Aug 2013 04:14:51 +0000 (+0000) Subject: It turns out that, despite assurances in the doc strings, we did not check that the... X-Git-Tag: v8.1.0~1010 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3dce1e6626344bb27357a8706e010045f5e04599;p=dealii.git It turns out that, despite assurances in the doc strings, we did not check that the default value of parameters actually matches the provided pattern. Make sure we fix this oversight. git-svn-id: https://svn.dealii.org/trunk@30406 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/doc/news/changes.h b/deal.II/doc/news/changes.h index 5a70443040..b5e5c86809 100644 --- a/deal.II/doc/news/changes.h +++ b/deal.II/doc/news/changes.h @@ -56,6 +56,15 @@ inconvenience this causes.

Specific improvements

    +
  1. + Fixed: The ParameterHandler::declare_entry() did not check that the + default value of a parameter indeed satisfies the pattern given for this + parameter (despite a statement in the documentation that this checking + would happen). This is now fixed. +
    + (Wolfgang Bangerth, 2013/08/21) +
  2. +
  3. New: Patterns::List and Patterns::Map now accept a string different than the default comma that denotes the separator diff --git a/deal.II/source/base/parameter_handler.cc b/deal.II/source/base/parameter_handler.cc index e59d518c0a..78adb441be 100644 --- a/deal.II/source/base/parameter_handler.cc +++ b/deal.II/source/base/parameter_handler.cc @@ -1579,6 +1579,14 @@ ParameterHandler::declare_entry (const std::string &entry, const Patterns::PatternBase &pattern, const std::string &documentation) { + Assert (pattern.match (default_value), + ExcMessage (std::string("The default value <") + + default_value + + "> for the entry <" + + entry + + "> does not match the given pattern " + + pattern.description())); + entries->put (get_current_full_path(entry) + path_separator + "value", default_value); entries->put (get_current_full_path(entry) + path_separator + "default_value", diff --git a/tests/bits/parameter_handler_13a.cc b/tests/bits/parameter_handler_13a.cc index 8ade8c2cc3..1492f2d695 100644 --- a/tests/bits/parameter_handler_13a.cc +++ b/tests/bits/parameter_handler_13a.cc @@ -26,7 +26,7 @@ void check (const char *p) { ParameterHandler prm; - prm.declare_entry ("test_13", "-1:a, 0:b, 1:c", + prm.declare_entry ("test_13", "-1:a xyz 0:b xyz 1:c", Patterns::Map(Patterns::Integer(-1,1), Patterns::Selection("a|b|c"), 2,3, "xyz")); diff --git a/tests/bits/parameter_handler_1a.cc b/tests/bits/parameter_handler_1a.cc index b26f8bcec1..a0166cf06b 100644 --- a/tests/bits/parameter_handler_1a.cc +++ b/tests/bits/parameter_handler_1a.cc @@ -27,7 +27,7 @@ void check (const char *p) { ParameterHandler prm; - prm.declare_entry ("test_1", "-1,0", + prm.declare_entry ("test_1", "-1 xyz 0", Patterns::List(Patterns::Integer(-1,1),2,3,"xyz")); std::ifstream in(p); diff --git a/tests/bits/parameter_handler_1a/cmp/generic b/tests/bits/parameter_handler_1a/cmp/generic index 4dd3ceb053..f6607cae79 100644 --- a/tests/bits/parameter_handler_1a/cmp/generic +++ b/tests/bits/parameter_handler_1a/cmp/generic @@ -1,2 +1,2 @@ -DEAL::test_1=-1,0 +DEAL::test_1=1 xyz 0 xyz 1 diff --git a/tests/bits/parameter_handler_1a/prm b/tests/bits/parameter_handler_1a/prm index 8927009d62..bceb08beaf 100644 --- a/tests/bits/parameter_handler_1a/prm +++ b/tests/bits/parameter_handler_1a/prm @@ -1 +1 @@ -set test_1 = 1,0,1xyz1,0,-1 +set test_1 = 1 xyz 0 xyz 1