2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier/***
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier This file is part of systemd
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier Copyright 2014 Ronny Chevalier
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier systemd is free software; you can redistribute it and/or modify it
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier under the terms of the GNU Lesser General Public License as published by
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier the Free Software Foundation; either version 2.1 of the License, or
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier (at your option) any later version.
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier systemd is distributed in the hope that it will be useful, but
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier WITHOUT ANY WARRANTY; without even the implied warranty of
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier Lesser General Public License for more details.
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier You should have received a copy of the GNU Lesser General Public License
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier along with systemd; If not, see <http://www.gnu.org/licenses/>.
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier***/
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier#include "locale-util.h"
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier#include "macro.h"
cf0fbc49e67b55f8d346fc94de28c90113505297Thomas Hindoe Paaboel Andersen#include "strv.h"
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalierstatic void test_get_locales(void) {
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier _cleanup_strv_free_ char **locales = NULL;
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier char **p;
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier int r;
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier r = get_locales(&locales);
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier assert_se(r >= 0);
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier assert_se(locales);
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier STRV_FOREACH(p, locales) {
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier puts(*p);
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier assert_se(locale_is_valid(*p));
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier }
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier}
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalierstatic void test_locale_is_valid(void) {
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier assert_se(locale_is_valid("en_EN.utf8"));
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier assert_se(locale_is_valid("fr_FR.utf8"));
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier assert_se(locale_is_valid("fr_FR@euro"));
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier assert_se(locale_is_valid("fi_FI"));
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier assert_se(locale_is_valid("POSIX"));
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier assert_se(locale_is_valid("C"));
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier assert_se(!locale_is_valid(""));
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier assert_se(!locale_is_valid("/usr/bin/foo"));
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier assert_se(!locale_is_valid("\x01gar\x02 bage\x03"));
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier}
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalierint main(int argc, char *argv[]) {
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier test_get_locales();
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier test_locale_is_valid();
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier return 0;
2b89a960604d44ea1483c0d99bfb567dab9c3aa1Ronny Chevalier}