summaryrefslogtreecommitdiff
path: root/tests/glibmm_variant/main.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/glibmm_variant/main.cc')
-rw-r--r--tests/glibmm_variant/main.cc238
1 files changed, 107 insertions, 131 deletions
diff --git a/tests/glibmm_variant/main.cc b/tests/glibmm_variant/main.cc
index bf17d143..e5877a87 100644
--- a/tests/glibmm_variant/main.cc
+++ b/tests/glibmm_variant/main.cc
@@ -1,76 +1,70 @@
#include <glibmm.h>
#include <iostream>
-//Use this line if you want debug output:
-//std::ostream& ostr = std::cout;
+// Use this line if you want debug output:
+// std::ostream& ostr = std::cout;
-//This seems nicer and more useful than putting an ifdef around the use of ostr:
+// This seems nicer and more useful than putting an ifdef around the use of ostr:
std::stringstream debug;
std::ostream& ostr = debug;
static void test_variant_floating();
static void test_dynamic_cast();
-int main(int, char**)
+int
+main(int, char**)
{
Glib::init();
- //vector<int>:
- const int int_list[] = {1, 2, 3, 4, 5, 6, 7, 8};
+ // vector<int>:
+ const int int_list[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
- std::vector<int> int_vector(int_list,
- int_list + sizeof(int_list) / sizeof(int));
+ std::vector<int> int_vector(int_list, int_list + sizeof(int_list) / sizeof(int));
ostr << "The elements of the original vector are:" << std::endl;
- for(guint i = 0; i < int_vector.size(); i++)
+ for (guint i = 0; i < int_vector.size(); i++)
ostr << int_vector[i] << std::endl;
- auto integers_variant =
- Glib::Variant< std::vector<int> >::create(int_vector);
+ auto integers_variant = Glib::Variant<std::vector<int>>::create(int_vector);
auto int_vector2 = integers_variant.get();
- ostr << "The size of the copied vector is " << int_vector2.size() <<
- '.' << std::endl;
+ ostr << "The size of the copied vector is " << int_vector2.size() << '.' << std::endl;
ostr << "The elements of the copied vector are:" << std::endl;
- for(guint i = 0; i < int_vector2.size(); i++)
+ for (guint i = 0; i < int_vector2.size(); i++)
ostr << int_vector2[i] << std::endl;
- ostr << "The number of children in the iterator of the " <<
- "variant are " << integers_variant.get_iter().get_n_children() <<
- '.' << std::endl;
+ ostr << "The number of children in the iterator of the "
+ << "variant are " << integers_variant.get_iter().get_n_children() << '.' << std::endl;
unsigned index = 4;
- ostr << "Element number " << index + 1 << " in the copy is " <<
- integers_variant.get_child(index) << '.' << std::endl;
+ ostr << "Element number " << index + 1 << " in the copy is " << integers_variant.get_child(index)
+ << '.' << std::endl;
ostr << std::endl;
-
-
- //vector<std::string>:
- std::vector<std::string> vec_strings = {"a"};
- auto variant_vec_strings =
- Glib::Variant<std::vector<std::string> >::create(vec_strings);
- //Dict:
+ // vector<std::string>:
+ std::vector<std::string> vec_strings = { "a" };
+ auto variant_vec_strings = Glib::Variant<std::vector<std::string>>::create(vec_strings);
+
+ // Dict:
typedef std::pair<Glib::ustring, Glib::ustring> TypeDictEntry;
TypeDictEntry dict_entry("A key", "A value");
- ostr << "The original dictionary entry is (" << dict_entry.first <<
- ", " << dict_entry.second << ")." << std::endl;
+ ostr << "The original dictionary entry is (" << dict_entry.first << ", " << dict_entry.second
+ << ")." << std::endl;
- auto dict_entry_variant =
- Glib::Variant<TypeDictEntry>::create(dict_entry);
+ auto dict_entry_variant = Glib::Variant<TypeDictEntry>::create(dict_entry);
TypeDictEntry copy_entry = dict_entry_variant.get();
- ostr << "The copy dictionary entry is (" << copy_entry.first <<
- ", " << copy_entry.second << ")." << std::endl;
+ ostr << "The copy dictionary entry is (" << copy_entry.first << ", " << copy_entry.second << ")."
+ << std::endl;
ostr << std::endl;
@@ -78,7 +72,7 @@ int main(int, char**)
TypeDict orig_dict;
- for(unsigned i = 0; i < 10; i++)
+ for (unsigned i = 0; i < 10; i++)
{
std::string x_repeated(i, 'x');
orig_dict.insert(std::pair<unsigned, Glib::ustring>(i, x_repeated));
@@ -86,19 +80,18 @@ int main(int, char**)
ostr << "The original dictionary:" << std::endl;
- for(unsigned i = 0; i < orig_dict.size(); i++)
+ for (unsigned i = 0; i < orig_dict.size(); i++)
{
ostr << "(" << i << ", " << orig_dict[i] << ")." << std::endl;
}
- auto orig_dict_variant =
- Glib::Variant<TypeDict>::create(orig_dict);
+ auto orig_dict_variant = Glib::Variant<TypeDict>::create(orig_dict);
TypeDict dict_copy = orig_dict_variant.get();
ostr << "The copy of the dictionary:" << std::endl;
- for(unsigned i = 0; i < dict_copy.size(); i++)
+ for (unsigned i = 0; i < dict_copy.size(); i++)
{
ostr << "(" << i << ", " << dict_copy[i] << ")." << std::endl;
}
@@ -107,25 +100,24 @@ int main(int, char**)
auto a_pair = orig_dict_variant.get_child(index);
- ostr << "Element number " << index + 1 << " in the variant is: (" <<
- a_pair.first << ", " << a_pair.second << ")." << std::endl;
-
+ ostr << "Element number " << index + 1 << " in the variant is: (" << a_pair.first << ", "
+ << a_pair.second << ")." << std::endl;
Glib::ustring value;
- if(orig_dict_variant.lookup(index, value))
+ if (orig_dict_variant.lookup(index, value))
{
- ostr << "The x's of element number " << index + 1 <<
- " in the variant are: " << value << '.' << std::endl;
+ ostr << "The x's of element number " << index + 1 << " in the variant are: " << value << '.'
+ << std::endl;
}
- //std::vector< std::map< Glib::ustring, Glib::Variant<int> > >
- typedef std::map< Glib::ustring, Glib::Variant<int> > ComplexDictType;
+ // std::vector< std::map< Glib::ustring, Glib::Variant<int> > >
+ typedef std::map<Glib::ustring, Glib::Variant<int>> ComplexDictType;
ComplexDictType complex_dict1;
ComplexDictType complex_dict2;
- for(int i = 0; i < 10; i++)
+ for (int i = 0; i < 10; i++)
{
// Convert integer i to string.
std::stringstream ss;
@@ -135,144 +127,130 @@ int main(int, char**)
auto v = Glib::Variant<int>::create(i);
- complex_dict1.insert(
- std::pair< Glib::ustring, Glib::Variant<int> >("Map 1 " + s, v));
+ complex_dict1.insert(std::pair<Glib::ustring, Glib::Variant<int>>("Map 1 " + s, v));
- complex_dict2.insert(
- std::pair< Glib::ustring, Glib::Variant<int> >("Map 2 " + s, v));
+ complex_dict2.insert(std::pair<Glib::ustring, Glib::Variant<int>>("Map 2 " + s, v));
}
- typedef std::vector< std::map< Glib::ustring, Glib::Variant<int> > >
- ComplexVecType;
+ typedef std::vector<std::map<Glib::ustring, Glib::Variant<int>>> ComplexVecType;
- ComplexVecType complex_vector = {complex_dict1, complex_dict2};
+ ComplexVecType complex_vector = { complex_dict1, complex_dict2 };
- auto complex_variant =
- Glib::Variant<ComplexVecType>::create(complex_vector);
+ auto complex_variant = Glib::Variant<ComplexVecType>::create(complex_vector);
// This will output the type string aa{sv}.
ostr << "The type string of the variant containing a vector of "
- "dictionaries is: " << std::endl << complex_variant.get_type_string() <<
- "." << std::endl << std::endl;
+ "dictionaries is: "
+ << std::endl
+ << complex_variant.get_type_string() << "." << std::endl
+ << std::endl;
ComplexVecType copy_complex_vector = complex_variant.get();
- for(guint i = 0; i < copy_complex_vector.size(); i++)
+ for (guint i = 0; i < copy_complex_vector.size(); i++)
{
ostr << "Printing dictionary # " << i + 1 << ":" << std::endl;
ComplexDictType map = copy_complex_vector[i];
- for(const auto& entry : map)
+ for (const auto& entry : map)
{
ostr << entry.first << " -> " << entry.second.get() << "." << std::endl;
}
ostr << std::endl;
}
-
+
test_variant_floating();
test_dynamic_cast();
return EXIT_SUCCESS;
}
-//Test casting of multiple types to a ustring:
-static void test_dynamic_cast_ustring_types()
+// Test casting of multiple types to a ustring:
+static void
+test_dynamic_cast_ustring_types()
{
- Glib::VariantBase vbase_string = Glib::wrap(
- g_variant_new("s", "somestring"));
+ Glib::VariantBase vbase_string = Glib::wrap(g_variant_new("s", "somestring"));
try
{
- auto derived =
- Glib::VariantBase::cast_dynamic< Glib::Variant<Glib::ustring> >(vbase_string);
+ auto derived = Glib::VariantBase::cast_dynamic<Glib::Variant<Glib::ustring>>(vbase_string);
ostr << "Casted string Glib::Variant<Glib::ustring>: " << derived.get() << std::endl;
}
- catch(const std::bad_cast& e)
+ catch (const std::bad_cast& e)
{
g_assert_not_reached();
}
-
- Glib::VariantBase vbase_objectpath = Glib::wrap(
- g_variant_new_object_path("/remote/object/path"));
+ Glib::VariantBase vbase_objectpath = Glib::wrap(g_variant_new_object_path("/remote/object/path"));
try
{
- auto derived =
- Glib::VariantBase::cast_dynamic< Glib::Variant<Glib::ustring> >(vbase_objectpath);
+ auto derived = Glib::VariantBase::cast_dynamic<Glib::Variant<Glib::ustring>>(vbase_objectpath);
ostr << "Casted object path Glib::Variant<Glib::ustring>: " << derived.get() << std::endl;
}
- catch(const std::bad_cast& e)
+ catch (const std::bad_cast& e)
{
g_assert_not_reached();
}
- Glib::VariantBase vbase_signature = Glib::wrap(
- g_variant_new_signature("aas"));
+ Glib::VariantBase vbase_signature = Glib::wrap(g_variant_new_signature("aas"));
try
{
- auto derived =
- Glib::VariantBase::cast_dynamic< Glib::Variant<Glib::ustring> >(vbase_signature);
+ auto derived = Glib::VariantBase::cast_dynamic<Glib::Variant<Glib::ustring>>(vbase_signature);
ostr << "Casted signature Glib::Variant<Glib::ustring>: " << derived.get() << std::endl;
}
- catch(const std::bad_cast& e)
+ catch (const std::bad_cast& e)
{
g_assert_not_reached();
}
}
-
-//Test casting of multiple types to a std::string:
-static void test_dynamic_cast_string_types()
+// Test casting of multiple types to a std::string:
+static void
+test_dynamic_cast_string_types()
{
- Glib::VariantBase vbase_string = Glib::wrap(
- g_variant_new("s", "somestring"));
+ Glib::VariantBase vbase_string = Glib::wrap(g_variant_new("s", "somestring"));
try
{
- auto derived =
- Glib::VariantBase::cast_dynamic< Glib::Variant<std::string> >(vbase_string);
+ auto derived = Glib::VariantBase::cast_dynamic<Glib::Variant<std::string>>(vbase_string);
ostr << "Casted string Glib::Variant<std::string>: " << derived.get() << std::endl;
}
- catch(const std::bad_cast& e)
+ catch (const std::bad_cast& e)
{
g_assert_not_reached();
}
-
- Glib::VariantBase vbase_objectpath = Glib::wrap(
- g_variant_new_object_path("/remote/object/path"));
+ Glib::VariantBase vbase_objectpath = Glib::wrap(g_variant_new_object_path("/remote/object/path"));
try
{
- auto derived =
- Glib::VariantBase::cast_dynamic< Glib::Variant<std::string> >(vbase_objectpath);
+ auto derived = Glib::VariantBase::cast_dynamic<Glib::Variant<std::string>>(vbase_objectpath);
ostr << "Casted object path Glib::Variant<std::string>: " << derived.get() << std::endl;
}
- catch(const std::bad_cast& e)
+ catch (const std::bad_cast& e)
{
g_assert_not_reached();
}
- Glib::VariantBase vbase_signature = Glib::wrap(
- g_variant_new_signature("aas"));
+ Glib::VariantBase vbase_signature = Glib::wrap(g_variant_new_signature("aas"));
try
{
- auto derived =
- Glib::VariantBase::cast_dynamic< Glib::Variant<std::string> >(vbase_signature);
+ auto derived = Glib::VariantBase::cast_dynamic<Glib::Variant<std::string>>(vbase_signature);
ostr << "Casted signature Glib::Variant<std::string>: " << derived.get() << std::endl;
}
- catch(const std::bad_cast& e)
+ catch (const std::bad_cast& e)
{
g_assert_not_reached();
}
}
// Test casting a complicated type, containing an object path and a DBus type signature.
-void test_dynamic_cast_composite_types()
+void
+test_dynamic_cast_composite_types()
{
// Build a GVaraint of type a{oag}, and cast it to
// Glib::Variant<std::map<Glib::ustring, std::vector<std::string>>>.
@@ -283,23 +261,22 @@ void test_dynamic_cast_composite_types()
g_variant_builder_init(&dict_builder, G_VARIANT_TYPE("a{oag}"));
g_variant_builder_init(&array_builder, G_VARIANT_TYPE("ag"));
- g_variant_builder_add(&array_builder, "g","id");
- g_variant_builder_add(&array_builder, "g","isi");
- g_variant_builder_add(&array_builder, "g","ia{si}");
+ g_variant_builder_add(&array_builder, "g", "id");
+ g_variant_builder_add(&array_builder, "g", "isi");
+ g_variant_builder_add(&array_builder, "g", "ia{si}");
g_variant_builder_add(&dict_builder, "{oag}", "/remote/object/path1", &array_builder);
g_variant_builder_init(&array_builder, G_VARIANT_TYPE("ag"));
- g_variant_builder_add(&array_builder, "g","i(d)");
- g_variant_builder_add(&array_builder, "g","i(si)");
+ g_variant_builder_add(&array_builder, "g", "i(d)");
+ g_variant_builder_add(&array_builder, "g", "i(si)");
g_variant_builder_add(&dict_builder, "{oag}", "/remote/object/path2", &array_builder);
Glib::VariantBase cppdict(g_variant_builder_end(&dict_builder));
try
{
- typedef std::map<Glib::ustring, std::vector<std::string> > composite_type;
- auto derived =
- Glib::VariantBase::cast_dynamic<Glib::Variant<composite_type> >(cppdict);
+ typedef std::map<Glib::ustring, std::vector<std::string>> composite_type;
+ auto derived = Glib::VariantBase::cast_dynamic<Glib::Variant<composite_type>>(cppdict);
ostr << "Cast composite type (get_type_string()=" << derived.get_type_string()
<< ", variant_type().get_string()=" << derived.variant_type().get_string() << "): ";
@@ -321,7 +298,7 @@ void test_dynamic_cast_composite_types()
try
{
auto derived =
- Glib::VariantBase::cast_dynamic<Glib::Variant<std::map<Glib::ustring, std::string> > >(cppdict);
+ Glib::VariantBase::cast_dynamic<Glib::Variant<std::map<Glib::ustring, std::string>>>(cppdict);
g_assert_not_reached();
}
catch (const std::bad_cast& e)
@@ -329,28 +306,29 @@ void test_dynamic_cast_composite_types()
}
}
-static void test_dynamic_cast()
+static void
+test_dynamic_cast()
{
auto v1 = Glib::Variant<int>::create(10);
Glib::VariantBase& v2 = v1;
- auto v3 = Glib::VariantBase::cast_dynamic<Glib::Variant<int> >(v2);
+ auto v3 = Glib::VariantBase::cast_dynamic<Glib::Variant<int>>(v2);
g_assert(v3.get() == 10);
Glib::VariantBase v5 = v1;
- v3 = Glib::VariantBase::cast_dynamic<Glib::Variant<int> >(v5);
+ v3 = Glib::VariantBase::cast_dynamic<Glib::Variant<int>>(v5);
g_assert(v3.get() == 10);
Glib::Variant<double> v4;
// v4 contain a NULL GVariant: The cast succeed
- v3 = Glib::VariantBase::cast_dynamic<Glib::Variant<int> >(v4);
+ v3 = Glib::VariantBase::cast_dynamic<Glib::Variant<int>>(v4);
v4 = Glib::Variant<double>::create(1.0);
try
{
- v3 = Glib::VariantBase::cast_dynamic<Glib::Variant<int> >(v4);
+ v3 = Glib::VariantBase::cast_dynamic<Glib::Variant<int>>(v4);
g_assert_not_reached();
}
- catch(const std::bad_cast& e)
+ catch (const std::bad_cast& e)
{
}
@@ -362,14 +340,14 @@ static void test_dynamic_cast()
g_assert(var_tuple.get_type_string() == "(is)");
v5 = var_tuple;
- Glib::VariantContainerBase v6 = Glib::VariantBase::cast_dynamic<Glib::VariantContainerBase >(v5);
+ Glib::VariantContainerBase v6 = Glib::VariantBase::cast_dynamic<Glib::VariantContainerBase>(v5);
try
{
- v6 = Glib::VariantBase::cast_dynamic<Glib::VariantContainerBase >(v1);
+ v6 = Glib::VariantBase::cast_dynamic<Glib::VariantContainerBase>(v1);
g_assert_not_reached();
}
- catch(const std::bad_cast& e)
+ catch (const std::bad_cast& e)
{
}
@@ -380,8 +358,7 @@ static void test_dynamic_cast()
type_dict_sv var_map;
type_map_sv map;
- auto var_string =
- Glib::Variant<Glib::ustring>::create("test variant");
+ auto var_string = Glib::Variant<Glib::ustring>::create("test variant");
map["test key"] = var_string;
var_map = type_dict_sv::create(map);
g_assert(var_map.get_type_string() == "a{sv}");
@@ -392,22 +369,22 @@ static void test_dynamic_cast()
try
{
auto var_wrong_map =
- Glib::VariantBase::cast_dynamic<Glib::Variant<std::map<Glib::ustring, Glib::ustring> > >(ref_var_base);
+ Glib::VariantBase::cast_dynamic<Glib::Variant<std::map<Glib::ustring, Glib::ustring>>>(
+ ref_var_base);
g_assert_not_reached();
}
- catch(const std::bad_cast& e)
+ catch (const std::bad_cast& e)
{
}
type_map_sv get_map = var_map_cast.get();
- var_string = Glib::VariantBase::cast_dynamic<Glib::Variant<Glib::ustring> >(get_map["test key"]);
+ var_string = Glib::VariantBase::cast_dynamic<Glib::Variant<Glib::ustring>>(get_map["test key"]);
g_assert(var_string.get() == "test variant");
// A variant of type v
auto var_v = Glib::Variant<Glib::VariantBase>::create(var_string);
g_assert(var_v.get_type_string() == "v");
- auto var_s2 =
- Glib::VariantBase::cast_dynamic<Glib::Variant<Glib::ustring> >(var_v.get());
+ auto var_s2 = Glib::VariantBase::cast_dynamic<Glib::Variant<Glib::ustring>>(var_v.get());
g_assert(var_s2.get() == "test variant");
test_dynamic_cast_ustring_types();
@@ -418,26 +395,25 @@ static void test_dynamic_cast()
static GLogLevelFlags
get_log_flags()
{
- return static_cast<GLogLevelFlags>(static_cast<unsigned>(G_LOG_LEVEL_CRITICAL) | static_cast<unsigned>(G_LOG_LEVEL_WARNING));
+ return static_cast<GLogLevelFlags>(
+ static_cast<unsigned>(G_LOG_LEVEL_CRITICAL) | static_cast<unsigned>(G_LOG_LEVEL_WARNING));
}
struct WarnCatcher
{
WarnCatcher(const std::string& domain)
- : m_domain(domain)
- , m_old_flags(g_log_set_fatal_mask(m_domain.c_str(), get_log_flags()))
- {}
-
- ~WarnCatcher()
+ : m_domain(domain), m_old_flags(g_log_set_fatal_mask(m_domain.c_str(), get_log_flags()))
{
- g_log_set_fatal_mask(m_domain.c_str(), m_old_flags);
}
+ ~WarnCatcher() { g_log_set_fatal_mask(m_domain.c_str(), m_old_flags); }
+
std::string m_domain;
GLogLevelFlags m_old_flags;
};
-static void test_variant_floating()
+static void
+test_variant_floating()
{
WarnCatcher warn_catcher("GLib");