diff options
author | Kjell Ahlstedt <kjellahlstedt@gmail.com> | 2021-05-23 14:59:54 +0200 |
---|---|---|
committer | Kjell Ahlstedt <kjellahlstedt@gmail.com> | 2021-05-23 14:59:54 +0200 |
commit | b8343851afbe33b7ceb50893f9d7221cffce4dd1 (patch) | |
tree | cd6b2698ccc8ab789cb58d75763aaf55d680b54b /tests | |
parent | 85c707d3e77c993ec221f08adffdd0918b60fbc7 (diff) | |
download | glibmm-b8343851afbe33b7ceb50893f9d7221cffce4dd1.tar.gz |
Add Glib::Environ and tests/glibmm_environ
Fixes #89
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 2 | ||||
-rwxr-xr-x | tests/glibmm_environ/main.cc | 48 | ||||
-rw-r--r-- | tests/meson.build | 1 |
3 files changed, 51 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 9adab850..9887f204 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -29,6 +29,7 @@ check_PROGRAMS = \ glibmm_base64/test \ glibmm_binding/test \ glibmm_date/test \ + glibmm_environ/test \ glibmm_buildfilename/test \ glibmm_interface_implementation/test \ glibmm_interface_move/test \ @@ -97,6 +98,7 @@ glibmm_base64_test_SOURCES = glibmm_base64/main.cc glibmm_binding_test_SOURCES = glibmm_binding/main.cc glibmm_buildfilename_test_SOURCES = glibmm_buildfilename/main.cc glibmm_date_test_SOURCES = glibmm_date/main.cc +glibmm_environ_test_SOURCES = glibmm_environ/main.cc glibmm_interface_implementation_test_SOURCES = glibmm_interface_implementation/main.cc glibmm_interface_implementation_test_LDADD = $(giomm_ldadd) diff --git a/tests/glibmm_environ/main.cc b/tests/glibmm_environ/main.cc new file mode 100755 index 00000000..c99e279d --- /dev/null +++ b/tests/glibmm_environ/main.cc @@ -0,0 +1,48 @@ +#include <glibmm.h> +#include <iostream> + +int +main(int, char**) +{ + Glib::Environ env1; + Glib::Environ env2(env1.to_vector()); + g_assert_true(env1.to_vector() == env2.to_vector()); + + // Empty environment. + const std::vector<std::string> empty_vector; + Glib::Environ env3(empty_vector); + g_assert_true(env3.to_vector().size() == 0); + + auto path = env1.get("PATH"); + if (!path) + { + // There ought to be a PATH. If there isn't, add one. + std::cout << "No PATH!" << std::endl; + env1.set("PATH", "/a/b/c"); + } + + path = env1["PATH"]; + if (!path) + { + // Now there really must be a PATH. + std::cerr << "Still no PATH!" << std::endl; + return EXIT_FAILURE; + } + + const std::string name = "GLIBMM_TEST_VAR"; + const std::string value = "This is a test value"; + env1.set(name, value); + g_assert_true(env1[name] == value); + env1.set(name, "Second value", false); + g_assert_true(env1.get(name) == value); + env1.set(name, "Second value"); + g_assert_true(env1.get(name) == "Second value"); + env1.unset(name); + if (env1.get(name)) + { + std::cerr << name << " not removed" << std::endl; + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; +} diff --git a/tests/meson.build b/tests/meson.build index 653ed878..4d1135dc 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -18,6 +18,7 @@ test_programs = [ [['glibmm_buildfilename'], 'test', ['main.cc'], false], [['glibmm_bytearray'], 'test', ['main.cc'], false], [['glibmm_date'], 'test', ['main.cc'], false], + [['glibmm_environ'], 'test', ['main.cc'], false], [['glibmm_interface_implementation'], 'test', ['main.cc'], true], [['glibmm_interface_move'], 'test', ['main.cc'], false], [['glibmm_mainloop'], 'test', ['main.cc'], false], |