summaryrefslogtreecommitdiffstats
path: root/tests/datetime/test-endianess.c
blob: 9cb92007a6312d0e9e69b3a44d96242629e3c92c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <glib.h>
#include <glib/gi18n.h>
#include <locale.h>
#include "date-endian.h"

static int verbose = 0;

static void
print_endianess (const char *lang)
{
	DateEndianess endianess;

	if (lang != NULL) {
		setlocale (LC_TIME, lang);
		endianess = date_endian_get_for_lang (lang, verbose);
	} else {
		endianess = date_endian_get_default (verbose);
	}
	if (verbose)
		g_print ("\t\t%s\n", date_endian_to_string (endianess));
}

static void
test_endianess (void)
{
	g_autoptr(GDir) dir = NULL;
	const char *name;

	dir = g_dir_open ("/usr/share/i18n/locales/", 0, NULL);
	if (dir == NULL) {
		/* Try with /usr/share/locale/
		 * https://bugzilla.gnome.org/show_bug.cgi?id=646780 */
		dir = g_dir_open ("/usr/share/locale/", 0, NULL);
		if (dir == NULL) {
			g_assert_not_reached ();
		}
	}

	while ((name = g_dir_read_name (dir)) != NULL)
		print_endianess (name);
}

int main (int argc, char **argv)
{
	setlocale (LC_ALL, "");
	bind_textdomain_codeset ("libc", "UTF-8");

	g_test_init (&argc, &argv, NULL);

	g_setenv ("G_DEBUG", "fatal_warnings", FALSE);

	if (argv[1] != NULL) {
		verbose = 1;

		if (g_str_equal (argv[1], "-c"))
			print_endianess (NULL);
		else
			print_endianess (argv[1]);
		return 0;
	}

	g_test_add_func ("/datetime/endianess", test_endianess);

	return g_test_run ();
}