1 #define GLIB_DISABLE_DEPRECATION_WARNINGS
5 #include <glib/gstdio.h>
24 file = g_mapped_file_new (g_test_get_filename (G_TEST_DIST, "empty", NULL), FALSE, &error);
25 g_assert_no_error (error);
27 g_mapped_file_ref (file);
28 g_mapped_file_unref (file);
30 g_mapped_file_unref (file);
40 file = g_mapped_file_new (g_test_get_filename (G_TEST_DIST, "empty", NULL), FALSE, &error);
41 g_assert_no_error (error);
43 g_assert (g_mapped_file_get_contents (file) == NULL);
45 g_mapped_file_free (file);
55 file = g_mapped_file_new ("/dev/null", FALSE, &error);
56 g_assert (g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_INVAL) ||
57 g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NODEV) ||
58 g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOMEM));
59 g_assert (file == NULL);
65 test_nonexisting (void)
71 file = g_mapped_file_new ("no-such-file", FALSE, &error);
72 g_assert_error (error, G_FILE_ERROR, G_FILE_ERROR_NOENT);
73 g_clear_error (&error);
74 g_assert (file == NULL);
84 const gchar *old = "MMMMMMMMMMMMMMMMMMMMMMMMM";
85 const gchar *new = "abcdefghijklmnopqrstuvxyz";
88 tmp_copy_path = g_build_filename (g_get_user_runtime_dir (), "glib-test-4096-random-bytes", NULL);
90 g_file_get_contents (g_test_get_filename (G_TEST_DIST, "4096-random-bytes", NULL), &contents, &len, &error);
91 g_assert_no_error (error);
92 g_file_set_contents (tmp_copy_path, contents, len, &error);
93 g_assert_no_error (error);
97 file = g_mapped_file_new (tmp_copy_path, TRUE, &error);
98 g_assert_no_error (error);
100 contents = g_mapped_file_get_contents (file);
101 g_assert (strncmp (contents, old, strlen (old)) == 0);
103 memcpy (contents, new, strlen (new));
104 g_assert (strncmp (contents, new, strlen (new)) == 0);
106 g_mapped_file_free (file);
109 file = g_mapped_file_new (tmp_copy_path, FALSE, &error);
110 g_assert_no_error (error);
112 contents = g_mapped_file_get_contents (file);
113 g_assert (strncmp (contents, old, strlen (old)) == 0);
115 g_mapped_file_free (file);
117 g_free (tmp_copy_path);
121 test_writable_fd (void)
124 GError *error = NULL;
126 const gchar *old = "MMMMMMMMMMMMMMMMMMMMMMMMM";
127 const gchar *new = "abcdefghijklmnopqrstuvxyz";
130 gchar *tmp_copy_path;
132 tmp_copy_path = g_build_filename (g_get_user_runtime_dir (), "glib-test-4096-random-bytes", NULL);
134 g_file_get_contents (g_test_get_filename (G_TEST_DIST, "4096-random-bytes", NULL), &contents, &len, &error);
135 g_assert_no_error (error);
136 g_file_set_contents (tmp_copy_path, contents, len, &error);
137 g_assert_no_error (error);
141 fd = g_open (tmp_copy_path, O_RDWR, 0);
143 file = g_mapped_file_new_from_fd (fd, TRUE, &error);
144 g_assert_no_error (error);
146 contents = g_mapped_file_get_contents (file);
147 g_assert (strncmp (contents, old, strlen (old)) == 0);
149 memcpy (contents, new, strlen (new));
150 g_assert (strncmp (contents, new, strlen (new)) == 0);
152 g_mapped_file_free (file);
156 fd = g_open (tmp_copy_path, O_RDWR, 0);
158 file = g_mapped_file_new_from_fd (fd, TRUE, &error);
159 g_assert_no_error (error);
161 contents = g_mapped_file_get_contents (file);
162 g_assert (strncmp (contents, old, strlen (old)) == 0);
164 g_mapped_file_free (file);
166 g_free (tmp_copy_path);
177 file = g_mapped_file_new (g_test_get_filename (G_TEST_DIST, "empty", NULL), FALSE, &error);
178 g_assert_no_error (error);
180 bytes = g_mapped_file_get_bytes (file);
181 g_mapped_file_unref (file);
183 g_assert_cmpint (g_bytes_get_size (bytes), ==, 0);
184 g_bytes_unref (bytes);
188 main (int argc, char *argv[])
190 g_test_init (&argc, &argv, NULL);
192 g_test_add_func ("/mappedfile/basic", test_basic);
193 g_test_add_func ("/mappedfile/empty", test_empty);
195 g_test_add_func ("/mappedfile/device", test_device);
197 g_test_add_func ("/mappedfile/nonexisting", test_nonexisting);
198 g_test_add_func ("/mappedfile/writable", test_writable);
199 g_test_add_func ("/mappedfile/writable_fd", test_writable_fd);
200 g_test_add_func ("/mappedfile/gbytes", test_gbytes);
202 return g_test_run ();