File: startup-win32-internals.c

package info (click to toggle)
mmlib 1.4.2-2.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,716 kB
  • sloc: ansic: 18,071; makefile: 431; sh: 135; python: 63
file content (73 lines) | stat: -rw-r--r-- 1,673 bytes parent folder | download
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
66
67
68
69
70
71
72
73
/*
   @mindmaze_header@
*/
#if HAVE_CONFIG_H
# include <config.h>
#endif

#include "../src/startup-win32.c"

#include <check.h>

#include "internals-testcases.h"

struct cmdline_case {
	const char* cmdline;
	int argc;
	char* argv[16];
};

struct cmdline_case cmdline_cases[] = {
	{.cmdline = "prog", .argc = 1,
	 .argv = {"prog"}},
	{.cmdline = "\"prog space\"", .argc = 1,
	 .argv = {"prog space"}},
	{.cmdline = "prog \"arg\"", .argc = 2,
	 .argv = {"prog", "arg"}},
	{.cmdline = "prog \\\"arg\\\"", .argc = 2,
	 .argv = {"prog", "\"arg\""}},
	{.cmdline = "prog \\\\\"arg1 arg2\\\\\"", .argc = 2,
	 .argv = {"prog", "\\arg1 arg2\\"}},
	{.cmdline = "prog \\\"arg arg2\\\"", .argc = 3,
	 .argv = {"prog", "\"arg", "arg2\""}},
	{.cmdline = "prog arg1 arg2", .argc = 3,
	 .argv = {"prog", "arg1", "arg2"}},
	{.cmdline = "prog \"arg1 arg2\"remaining", .argc = 2,
	 .argv = {"prog", "arg1 arg2remaining"}},
	{.cmdline = "prog ", .argc = 1,
	 .argv = {"prog"}},
	{.cmdline = "prog  arg", .argc = 2,
	 .argv = {"prog", "arg"}},
	{.cmdline = "prog  arg    arg2", .argc = 3,
	 .argv = {"prog", "arg", "arg2"}},
};

START_TEST(split_cmdline)
{
	int i, argc;
	const char* cmdline = cmdline_cases[_i].cmdline;
	char** ref_argv = cmdline_cases[_i].argv;
	int ref_argc = cmdline_cases[_i].argc;
	char** argv;

	argc = parse_cmdline(&argv, cmdline);
	ck_assert_int_eq(argc, ref_argc);

	for (i = 0; i < argc; i++)
		ck_assert_str_eq(argv[i], ref_argv[i]);

	free(argv);
}
END_TEST


LOCAL_SYMBOL
TCase* create_case_startup_win32_internals(void)
{
	TCase *tc = tcase_create("startup-win32_internals");
	tcase_add_loop_test(tc, split_cmdline, 0, MM_NELEM(cmdline_cases));

	return tc;
}