diff --git a/.travis/build b/.travis/build index eca6c2e0..930a627f 100755 --- a/.travis/build +++ b/.travis/build @@ -10,6 +10,9 @@ urdfdom_headers_dir="$build_dir/urdfdom_headers" # Shortcuts. git_clone="git clone --quiet --recursive" +# create locale for testing +sudo locale-gen nl_NL.UTF-8 + # Create layout. rm -rf "$build_dir" mkdir -p "$build_dir" diff --git a/urdf_parser/test/CMakeLists.txt b/urdf_parser/test/CMakeLists.txt index 0b52d6e6..c57f3479 100644 --- a/urdf_parser/test/CMakeLists.txt +++ b/urdf_parser/test/CMakeLists.txt @@ -38,5 +38,11 @@ foreach(GTEST_SOURCE_file ${tests}) COMMAND ${BINARY_NAME} --gtest_output=xml:${CMAKE_BINARY_DIR}/test_results/${BINARY_NAME}.xml) - set_tests_properties(${BINARY_NAME} PROPERTIES TIMEOUT 240) + set_tests_properties(${BINARY_NAME} PROPERTIES TIMEOUT 240 ENVIRONMENT LC_ALL=C) + + add_test(NAME ${BINARY_NAME}_locale + COMMAND ${BINARY_NAME} + --gtest_output=xml:${CMAKE_BINARY_DIR}/test_results/${BINARY_NAME}_locale.xml) + + set_tests_properties(${BINARY_NAME}_locale PROPERTIES TIMEOUT 240 ENVIRONMENT LC_ALL=nl_NL.UTF-8) endforeach() diff --git a/urdf_parser/test/urdf_unit_test.cpp b/urdf_parser/test/urdf_unit_test.cpp index 9b109325..c46dd326 100644 --- a/urdf_parser/test/urdf_unit_test.cpp +++ b/urdf_parser/test/urdf_unit_test.cpp @@ -257,3 +257,88 @@ TEST(URDF_UNIT_TEST, parse_link_doubles) EXPECT_EQ(0.0012, urdf->links_["l1"]->inertial->iyz); EXPECT_EQ(0.908, urdf->links_["l1"]->inertial->izz); } + + +TEST(URDF_UNIT_TEST, parse_color_doubles) +{ + std::string joint_str = + "" + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + ""; + + urdf::ModelInterfaceSharedPtr urdf = urdf::parseURDF(joint_str); + + EXPECT_EQ(2, urdf->links_.size()); + EXPECT_EQ(2, urdf->joints_.size()); + + EXPECT_EQ(urdf::Geometry::SPHERE, urdf->links_["l1"]->visual->geometry->type); + std::shared_ptr s = std::dynamic_pointer_cast(urdf->links_["l1"]->visual->geometry); + EXPECT_EQ(1.349, s->radius); + EXPECT_FLOAT_EQ(1.0, urdf->links_["l1"]->visual->material->color.r); + EXPECT_FLOAT_EQ(0.65, urdf->links_["l1"]->visual->material->color.g); + EXPECT_FLOAT_EQ(0.0, urdf->links_["l1"]->visual->material->color.b); + EXPECT_FLOAT_EQ(0.01, urdf->links_["l1"]->visual->material->color.a); + EXPECT_EQ("", urdf->links_["l1"]->visual->material->name); + EXPECT_EQ("", urdf->links_["l1"]->visual->material->texture_filename); + + EXPECT_EQ(urdf::Geometry::CYLINDER, urdf->links_["l2"]->visual->geometry->type); + std::shared_ptr c = std::dynamic_pointer_cast(urdf->links_["l2"]->visual->geometry); + EXPECT_EQ(3.349, c->radius); + EXPECT_EQ(7.5490, c->length); + EXPECT_FLOAT_EQ(1.0, urdf->links_["l2"]->visual->material->color.r); + EXPECT_FLOAT_EQ(0.0001, urdf->links_["l2"]->visual->material->color.g); + EXPECT_FLOAT_EQ(0.0, urdf->links_["l2"]->visual->material->color.b); + EXPECT_FLOAT_EQ(1.0, urdf->links_["l2"]->visual->material->color.a); + EXPECT_EQ("red ish", urdf->links_["l2"]->visual->material->name); + EXPECT_EQ("", urdf->links_["l2"]->visual->material->texture_filename); + + EXPECT_EQ(8.4396, urdf->links_["l1"]->inertial->mass); + EXPECT_EQ(0.087, urdf->links_["l1"]->inertial->ixx); + EXPECT_EQ(0.14, urdf->links_["l1"]->inertial->ixy); + EXPECT_EQ(0.912, urdf->links_["l1"]->inertial->ixz); + EXPECT_EQ(0.763, urdf->links_["l1"]->inertial->iyy); + EXPECT_EQ(0.0012, urdf->links_["l1"]->inertial->iyz); + EXPECT_EQ(0.908, urdf->links_["l1"]->inertial->izz); +} + + +int main(int argc, char **argv) +{ + ::testing::InitGoogleTest(&argc, argv); + + // use the environment locale so that the unit test can be repeated with various locales easily + setlocale(LC_ALL, ""); + + return RUN_ALL_TESTS(); +}