Skip to content

Commit

Permalink
add variable_access test case
Browse files Browse the repository at this point in the history
  • Loading branch information
gfgtdf committed Jul 2, 2014
1 parent 304d3da commit 4ff51a3
Showing 1 changed file with 55 additions and 0 deletions.
55 changes: 55 additions & 0 deletions src/tests/test_config.cpp
Expand Up @@ -18,6 +18,7 @@
#include <cmath>

#include "config.hpp"
#include "variable_info.hpp"

BOOST_AUTO_TEST_SUITE ( test_config )

Expand Down Expand Up @@ -172,4 +173,58 @@ BOOST_AUTO_TEST_CASE ( test_config_attribute_value )
BOOST_CHECK_EQUAL(cc["x"], c["x"]);
}

BOOST_AUTO_TEST_CASE ( test_variable_info )
{
config c;
{
variable_access_const access("", c);
// We dotn allow empty keys
BOOST_CHECK_THROW (access.as_scalar(), invalid_variablename_exception);
}
{
variable_access_const access("some_non_existent.", c);
// We dotn allow empty keys
BOOST_CHECK_THROW (access.as_scalar(), invalid_variablename_exception);
}
{
variable_access_const access("some_non_existent[0]value", c);
// We expect '.' after ']'
BOOST_CHECK_THROW (access.as_scalar(), invalid_variablename_exception);
}
{
variable_access_const access("some_non_existent", c);
// we return empty be default
BOOST_CHECK (!access.exists_as_container());
BOOST_CHECK_EQUAL (access.as_container(), config());
BOOST_CHECK (!access.exists_as_attribute());
BOOST_CHECK_EQUAL (access.as_scalar(), config::attribute_value());
}
{
variable_access_const access("a.b[0].c[1].d.e.f[2]", c);
// we return empty be default
BOOST_CHECK (!access.exists_as_container());
BOOST_CHECK_EQUAL (access.as_container(), config());
// Explicit indexes can never be an attribute
BOOST_CHECK_THROW (access.as_scalar(), invalid_variablename_exception);
}
BOOST_CHECK (c.empty());
{
config c2;
variable_access_create access("a.b[0].c[1].d.e.f[2].g", c2);
access.as_scalar() = 84;
BOOST_CHECK_EQUAL (variable_access_const("a.length", c2).as_scalar(), 1);
BOOST_CHECK_EQUAL (variable_access_const("a.b.length", c2).as_scalar(), 1);
BOOST_CHECK_EQUAL (variable_access_const("a.b.c.length", c2).as_scalar(), 2);
BOOST_CHECK_EQUAL (variable_access_const("a.b.c[1].d.e.f.length", c2).as_scalar(), 3);
// we setted g as a scalar
BOOST_CHECK_EQUAL (variable_access_const("a.b.c[1].d.e.f[2].g.length", c2).as_scalar(), 0);
BOOST_CHECK_EQUAL (variable_access_const("a.b.c[1].d.e.f[2].g", c2).as_scalar(), 84);
}
{
config c2;
variable_access_throw access("a.b[9].c", c2);
BOOST_CHECK_THROW(access.as_scalar(), invalid_variablename_exception);
}
}

BOOST_AUTO_TEST_SUITE_END()

0 comments on commit 4ff51a3

Please sign in to comment.