1
0
mirror of https://github.com/pevans/erc-c.git synced 2024-11-27 20:51:17 +00:00
erc-c/tests/option.c

91 lines
1.9 KiB
C
Raw Normal View History

2017-12-08 23:06:21 +00:00
#include <criterion/criterion.h>
#include <unistd.h>
#include "option.h"
static void
setup()
{
option_set_error("");
}
static void
teardown()
{
}
TestSuite(options, .init = setup, .fini = teardown);
// No need to do this one...
/* Test(option, print_help) */
/* Test(option, get_error) */
/* Test(option, set_error) */
2018-01-07 22:31:00 +00:00
Test(option, error)
2017-12-08 23:06:21 +00:00
{
char *str = "hahaha FUN";
cr_assert_str_empty(option_get_error());
option_set_error(str);
cr_assert_str_eq(option_get_error(), str);
}
2018-01-07 22:31:00 +00:00
Test(option, read_file)
2017-12-08 23:06:21 +00:00
{
char *str = "so much FUN";
char *bad_file = "/tmp/BLEH";
char *file = "/tmp/erc-test.txt";
char buf[256];
FILE *stream_a;
FILE *stream_b;
2017-12-08 23:06:21 +00:00
// Maybe we should use sterror(ENOENT)?
cr_assert_eq(option_read_file(&stream_a, bad_file), 0);
cr_assert_str_eq(option_get_error(), "--diskN: No such file or directory");
2017-12-08 23:06:21 +00:00
option_set_error("");
stream_a = fopen(file, "w");
cr_assert_neq(stream_a, NULL);
fwrite(str, sizeof(char), strlen(str), stream_a);
fclose(stream_a);
2017-12-08 23:06:21 +00:00
option_read_file(&stream_b, file);
fread(buf, sizeof(char), 255, stream_b);
2017-12-08 23:06:21 +00:00
cr_assert_str_eq(buf, str);
fclose(stream_b);
2017-12-08 23:06:21 +00:00
unlink(file);
}
/*
* This test is really imperfect... that's because option_parse() does
* a ton of stuff, and is quite complex. I'm punting a lot on the
* complexity here, while pushing as much of the logic as I can into
* other functions that are more easily testable.
*/
2018-01-07 22:31:00 +00:00
Test(option, parse)
2017-12-08 23:06:21 +00:00
{
int argc = 2;
char *argv[] = {
"prog_name",
"--disk1=etc",
};
cr_assert_eq(option_parse(argc, argv), 0);
}
2017-12-27 04:35:50 +00:00
Test(option, flag)
{
int argc = 2;
char *argv[] = {
"prog_name",
"--flash",
};
cr_assert_eq(option_flag(OPTION_FLASH), false);
cr_assert_eq(option_parse(argc, argv), 1);
cr_assert_eq(option_flag(OPTION_FLASH), true);
}