summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorKjell Ahlstedt <kjellahlstedt@gmail.com>2021-05-23 14:59:54 +0200
committerKjell Ahlstedt <kjellahlstedt@gmail.com>2021-05-23 14:59:54 +0200
commitb8343851afbe33b7ceb50893f9d7221cffce4dd1 (patch)
treecd6b2698ccc8ab789cb58d75763aaf55d680b54b /tests
parent85c707d3e77c993ec221f08adffdd0918b60fbc7 (diff)
downloadglibmm-b8343851afbe33b7ceb50893f9d7221cffce4dd1.tar.gz
Add Glib::Environ and tests/glibmm_environ
Fixes #89
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am2
-rwxr-xr-xtests/glibmm_environ/main.cc48
-rw-r--r--tests/meson.build1
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],