mirror of
https://github.com/djcb/mu.git
synced 2024-06-30 08:01:07 +02:00
48d3f9cfab
De-clutter the source directories a bit. Ensure tests build with meson, and remove from autotools in a few places (no need to do things twice).
194 lines
6.7 KiB
C++
194 lines
6.7 KiB
C++
/*
|
|
** Copyright (C) 2008-2020 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
**
|
|
** This program is free software; you can redistribute it and/or modify it
|
|
** under the terms of the GNU General Public License as published by the
|
|
** Free Software Foundation; either version 3, or (at your option) any
|
|
** later version.
|
|
**
|
|
** This program is distributed in the hope that it will be useful,
|
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
** GNU General Public License for more details.
|
|
**
|
|
** You should have received a copy of the GNU General Public License
|
|
** along with this program; if not, write to the Free Software Foundation,
|
|
** Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
**
|
|
*/
|
|
|
|
#if HAVE_CONFIG_H
|
|
#include "config.h"
|
|
#endif /*HAVE_CONFIG_H*/
|
|
|
|
#include <glib.h>
|
|
#include "mu-flags.hh"
|
|
#include "test-mu-common.hh"
|
|
|
|
using namespace Mu;
|
|
|
|
static void
|
|
test_mu_flag_char(void)
|
|
{
|
|
g_assert_cmpuint(mu_flag_char(MU_FLAG_DRAFT), ==, 'D');
|
|
g_assert_cmpuint(mu_flag_char(MU_FLAG_FLAGGED), ==, 'F');
|
|
g_assert_cmpuint(mu_flag_char(MU_FLAG_PASSED), ==, 'P');
|
|
g_assert_cmpuint(mu_flag_char(MU_FLAG_REPLIED), ==, 'R');
|
|
g_assert_cmpuint(mu_flag_char(MU_FLAG_SEEN), ==, 'S');
|
|
g_assert_cmpuint(mu_flag_char(MU_FLAG_TRASHED), ==, 'T');
|
|
g_assert_cmpuint(mu_flag_char(MU_FLAG_NEW), ==, 'N');
|
|
g_assert_cmpuint(mu_flag_char(MU_FLAG_SIGNED), ==, 'z');
|
|
g_assert_cmpuint(mu_flag_char(MU_FLAG_ENCRYPTED), ==, 'x');
|
|
g_assert_cmpuint(mu_flag_char(MU_FLAG_HAS_ATTACH), ==, 'a');
|
|
g_assert_cmpuint(mu_flag_char(MU_FLAG_UNREAD), ==, 'u');
|
|
g_assert_cmpuint(mu_flag_char((MuFlags)12345), ==, 0);
|
|
}
|
|
|
|
static void
|
|
test_mu_flag_name(void)
|
|
{
|
|
g_assert_cmpstr(mu_flag_name(MU_FLAG_DRAFT), ==, "draft");
|
|
g_assert_cmpstr(mu_flag_name(MU_FLAG_FLAGGED), ==, "flagged");
|
|
g_assert_cmpstr(mu_flag_name(MU_FLAG_PASSED), ==, "passed");
|
|
g_assert_cmpstr(mu_flag_name(MU_FLAG_REPLIED), ==, "replied");
|
|
g_assert_cmpstr(mu_flag_name(MU_FLAG_SEEN), ==, "seen");
|
|
g_assert_cmpstr(mu_flag_name(MU_FLAG_TRASHED), ==, "trashed");
|
|
g_assert_cmpstr(mu_flag_name(MU_FLAG_NEW), ==, "new");
|
|
g_assert_cmpstr(mu_flag_name(MU_FLAG_SIGNED), ==, "signed");
|
|
g_assert_cmpstr(mu_flag_name(MU_FLAG_ENCRYPTED), ==, "encrypted");
|
|
g_assert_cmpstr(mu_flag_name(MU_FLAG_HAS_ATTACH), ==, "attach");
|
|
g_assert_cmpstr(mu_flag_name(MU_FLAG_UNREAD), ==, "unread");
|
|
g_assert_cmpstr(mu_flag_name((MuFlags)12345), ==, NULL);
|
|
}
|
|
|
|
static void
|
|
test_mu_flags_to_str_s(void)
|
|
{
|
|
g_assert_cmpstr(
|
|
mu_flags_to_str_s((MuFlags)(MU_FLAG_PASSED | MU_FLAG_SIGNED), MU_FLAG_TYPE_ANY),
|
|
==,
|
|
"Pz");
|
|
g_assert_cmpstr(mu_flags_to_str_s(MU_FLAG_NEW, MU_FLAG_TYPE_ANY), ==, "N");
|
|
g_assert_cmpstr(
|
|
mu_flags_to_str_s((MuFlags)(MU_FLAG_HAS_ATTACH | MU_FLAG_TRASHED), MU_FLAG_TYPE_ANY),
|
|
==,
|
|
"Ta");
|
|
g_assert_cmpstr(mu_flags_to_str_s(MU_FLAG_NONE, MU_FLAG_TYPE_ANY), ==, "");
|
|
|
|
g_assert_cmpstr(
|
|
mu_flags_to_str_s((MuFlags)(MU_FLAG_PASSED | MU_FLAG_SIGNED), MU_FLAG_TYPE_CONTENT),
|
|
==,
|
|
"z");
|
|
|
|
g_assert_cmpstr(mu_flags_to_str_s(MU_FLAG_NEW, MU_FLAG_TYPE_MAILDIR), ==, "N");
|
|
g_assert_cmpstr(mu_flags_to_str_s((MuFlags)(MU_FLAG_HAS_ATTACH | MU_FLAG_TRASHED),
|
|
MU_FLAG_TYPE_MAILFILE),
|
|
==,
|
|
"T");
|
|
|
|
g_assert_cmpstr(mu_flags_to_str_s(MU_FLAG_NONE, MU_FLAG_TYPE_PSEUDO), ==, "");
|
|
}
|
|
|
|
static void
|
|
test_mu_flags_from_str(void)
|
|
{
|
|
/* note, the 3rd arg to mu_flags_from_str determines whether
|
|
* invalid flags will be ignored (if TRUE) or MU_FLAG_INVALID (if FALSE)
|
|
*/
|
|
|
|
g_assert_cmpuint(mu_flags_from_str("RP", MU_FLAG_TYPE_ANY, TRUE),
|
|
==,
|
|
(MuFlags)(MU_FLAG_REPLIED | MU_FLAG_PASSED));
|
|
g_assert_cmpuint(mu_flags_from_str("Nz", MU_FLAG_TYPE_ANY, TRUE),
|
|
==,
|
|
MU_FLAG_NEW | MU_FLAG_SIGNED);
|
|
g_assert_cmpuint(mu_flags_from_str("axD", MU_FLAG_TYPE_ANY, TRUE),
|
|
==,
|
|
(MuFlags)(MU_FLAG_HAS_ATTACH | MU_FLAG_ENCRYPTED | MU_FLAG_DRAFT));
|
|
|
|
g_assert_cmpuint(mu_flags_from_str("RP", MU_FLAG_TYPE_MAILFILE, TRUE),
|
|
==,
|
|
MU_FLAG_REPLIED | MU_FLAG_PASSED);
|
|
g_assert_cmpuint(mu_flags_from_str("Nz", MU_FLAG_TYPE_MAILFILE, TRUE), ==, MU_FLAG_NONE);
|
|
|
|
/* ignore errors or not */
|
|
g_assert_cmpuint(mu_flags_from_str("qwi", MU_FLAG_TYPE_MAILFILE, FALSE),
|
|
==,
|
|
MU_FLAG_INVALID);
|
|
g_assert_cmpuint(mu_flags_from_str("qwi", MU_FLAG_TYPE_MAILFILE, TRUE), ==, 0);
|
|
}
|
|
|
|
static void
|
|
test_mu_flags_from_str_delta(void)
|
|
{
|
|
g_assert_cmpuint(mu_flags_from_str_delta("+S-R",
|
|
(MuFlags)(MU_FLAG_REPLIED | MU_FLAG_DRAFT),
|
|
MU_FLAG_TYPE_ANY),
|
|
==,
|
|
(MuFlags)(MU_FLAG_SEEN | MU_FLAG_DRAFT));
|
|
|
|
g_assert_cmpuint(mu_flags_from_str_delta("",
|
|
(MuFlags)(MU_FLAG_REPLIED | MU_FLAG_DRAFT),
|
|
MU_FLAG_TYPE_ANY),
|
|
==,
|
|
(MuFlags)(MU_FLAG_REPLIED | MU_FLAG_DRAFT));
|
|
|
|
g_assert_cmpuint(mu_flags_from_str_delta("-N+P+S-D",
|
|
(MuFlags)(MU_FLAG_SIGNED | MU_FLAG_DRAFT),
|
|
MU_FLAG_TYPE_ANY),
|
|
==,
|
|
(MuFlags)(MU_FLAG_PASSED | MU_FLAG_SEEN | MU_FLAG_SIGNED));
|
|
}
|
|
|
|
static void
|
|
test_mu_flags_custom_from_str(void)
|
|
{
|
|
unsigned u;
|
|
|
|
struct {
|
|
const char* str;
|
|
const char* expected;
|
|
} cases[] = {{"ABC", "ABC"},
|
|
{"PAF", "A"},
|
|
{"ShelloPwoFrDldR123", "helloworld123"},
|
|
{"SPD", NULL}};
|
|
|
|
for (u = 0; u != G_N_ELEMENTS(cases); ++u) {
|
|
char* cust;
|
|
cust = mu_flags_custom_from_str(cases[u].str);
|
|
if (g_test_verbose())
|
|
g_print("%s: str:%s; got:%s; expected:%s\n",
|
|
__func__,
|
|
cases[u].str,
|
|
cust,
|
|
cases[u].expected);
|
|
g_assert_cmpstr(cust, ==, cases[u].expected);
|
|
g_free(cust);
|
|
}
|
|
}
|
|
|
|
int
|
|
main(int argc, char* argv[])
|
|
{
|
|
int rv;
|
|
g_test_init(&argc, &argv, NULL);
|
|
|
|
/* mu_msg_str_date */
|
|
g_test_add_func("/mu-flags/test-mu-flag-char", test_mu_flag_char);
|
|
g_test_add_func("/mu-flags/test-mu-flag-name", test_mu_flag_name);
|
|
g_test_add_func("/mu-flags/test-mu-flags-to-str-s", test_mu_flags_to_str_s);
|
|
g_test_add_func("/mu-flags/test-mu-flags-from-str", test_mu_flags_from_str);
|
|
g_test_add_func("/mu-flags/test-mu-flags-from-str-delta", test_mu_flags_from_str_delta);
|
|
g_test_add_func("/mu-flags/test-mu-flags-custom-from-str", test_mu_flags_custom_from_str);
|
|
|
|
g_log_set_handler(
|
|
NULL,
|
|
(GLogLevelFlags)(G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION),
|
|
(GLogFunc)black_hole,
|
|
NULL);
|
|
|
|
rv = g_test_run();
|
|
|
|
return rv;
|
|
}
|