DataTypeRegistryTest.cpp
Go to the documentation of this file.
1 /******************************************************************************
2  * Copyright (C) 2014 by Ralf Kaestner *
3  * ralf.kaestner@gmail.com *
4  * *
5  * This program is free software; you can redistribute it and/or modify *
6  * it under the terms of the Lesser GNU General Public License as published by*
7  * the Free Software Foundation; either version 3 of the License, or *
8  * (at your option) any later version. *
9  * *
10  * This program is distributed in the hope that it will be useful, *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13  * Lesser GNU General Public License for more details. *
14  * *
15  * You should have received a copy of the Lesser GNU General Public License *
16  * along with this program. If not, see <http://www.gnu.org/licenses/>. *
17  ******************************************************************************/
18 
19 #include <gtest/gtest.h>
20 
21 #include <std_msgs/Bool.h>
22 #include <std_msgs/String.h>
23 
25 
26 using namespace variant_topic_tools;
27 
29  DataTypeRegistry registry;
30 
31  ArrayDataType a1 = registry.addArrayDataType<int, 3>();
32  ArrayDataType a2 = registry.addArrayDataType<int, 0>();
33  ArrayDataType a3 = registry.addArrayDataType<double[3]>();
34  ArrayDataType a4 = registry.addArrayDataType<double[]>();
35  ArrayDataType a5 = registry.addArrayDataType<bool[3]>();
36  ArrayDataType a6 = registry.addArrayDataType<bool[]>();
37  ArrayDataType a7 = registry.addArrayDataType("int8", 3);
38  ArrayDataType a8 = registry.addArrayDataType(typeid(int8_t));
39 
40  EXPECT_TRUE(registry.getDataType<int[3]>().isArray());
41  EXPECT_TRUE(registry.getDataType("int32[3]").isArray());
42  EXPECT_TRUE(registry.getDataType<int[]>().isArray());
43  EXPECT_TRUE(registry.getDataType("int32[]").isArray());
44  EXPECT_TRUE(registry.getDataType<double[3]>().isArray());
45  EXPECT_TRUE(registry.getDataType("float64[3]").isArray());
46  EXPECT_TRUE(registry.getDataType<double[]>().isArray());
47  EXPECT_TRUE(registry.getDataType("float64[]").isArray());
48  EXPECT_TRUE(registry.getDataType<bool[3]>().isArray());
49  EXPECT_TRUE(registry.getDataType("bool[3]").isArray());
50  EXPECT_TRUE(registry.getDataType<bool[]>().isArray());
51  EXPECT_TRUE(registry.getDataType("bool[]").isArray());
52  EXPECT_TRUE(registry.getDataType<int8_t[3]>().isArray());
53  EXPECT_TRUE(registry.getDataType("int8[3]").isArray());
54  EXPECT_TRUE(registry.getDataType<int8_t[]>().isArray());
55  EXPECT_TRUE(registry.getDataType("int8[]").isArray());
56  EXPECT_FALSE(const_cast<const DataTypeRegistry&>(registry).
57  getDataType("uint8[3]").isArray());
58  EXPECT_TRUE(registry.getDataType("uint8[3]").isArray());
59  EXPECT_FALSE(const_cast<const DataTypeRegistry&>(registry).
60  getDataType("uint8[]").isArray());
61  EXPECT_TRUE(registry.getDataType("uint8[]").isArray());
62 
63  registry.clear();
64 }
65 
67  DataTypeRegistry registry;
68 
69  EXPECT_TRUE(registry.getDataType<int8_t>().isBuiltin());
70  EXPECT_TRUE(registry.getDataType("int8").isBuiltin());
71  EXPECT_TRUE(registry["int8"].isBuiltin());
72  EXPECT_TRUE(registry[typeid(int8_t)].isBuiltin());
73 }
74 
76  DataTypeRegistry registry;
77 
78  MessageDataType m1 = registry.addMessageDataType<std_msgs::String>();
79  MessageDataType m2 = registry.addMessageDataType(
80  ros::message_traits::datatype<std_msgs::Bool>(),
81  ros::message_traits::definition<std_msgs::Bool>());
82  MessageDataType m3 = registry.addMessageDataType("my_msgs/Double");
83  m3.addVariableMember<double>("data");
84 
85  EXPECT_TRUE(registry.getDataType<std_msgs::String>().isMessage());
86  EXPECT_TRUE(registry.getDataType(
87  ros::message_traits::datatype<std_msgs::String>()).isMessage());
88  EXPECT_TRUE(registry.getDataType<std_msgs::Bool>().isMessage());
89  EXPECT_TRUE(registry.getDataType("my_msgs/Double").isMessage());
90 
91  registry.clear();
92 }
void addVariableMember(const MessageVariable &member)
Add a variable member to this message data type (overloaded version taking a message variable) ...
Generic message type.
Definition: Message.h:43
void clear()
Clear the data type registry.
bool isArray() const
True, if this data type represents an array type.
Definition: DataType.cpp:98
bool isMessage() const
True, if this data type represents a message type.
Definition: DataType.cpp:112
TEST(DataTypeRegistry, Array)
Header file providing the DataTypeRegistry class interface.
DataType getDataType(const std::string &identifier)
Retrieve a data type from the registry by identifier (non-const version)
ArrayDataType addArrayDataType(const DataType &memberType, size_t numMembers=0)
Add an array data type to the data type registry (variant-typed version)
bool isBuiltin() const
True, if this data type represents a built-in type.
Definition: DataType.cpp:105
MessageDataType addMessageDataType(const std::string &identifier, const MessageFieldCollection< MessageConstant > &constantMembers=MessageFieldCollection< MessageConstant >(), const MessageFieldCollection< MessageVariable > &variableMembers=MessageFieldCollection< MessageVariable >())
Add a message data type to the data type registry (variant-typed version taking an identifier...


variant_topic_tools
Author(s): Ralf Kaestner
autogenerated on Sat Jan 9 2021 03:56:49