1/*
2 * Copyright 2008, Haiku.
3 * Distributed under the terms of the MIT license.
4 *
5 * Authors:
6 *		Michael Pfeiffer <laplace@users.sourceforge.net>
7 */
8
9#include <stdio.h>
10#include <stdlib.h>
11#include <string.h>
12#include <List.h>
13
14void TestScanner();
15void TestParser();
16void TestPPDParser(bool all, bool verbose = true);
17void TestExtractUI();
18
19const char* gPPDFile = "aptollw1.ppd";
20
21static BList gArgs;
22
23bool enabled(const char* name, const char* arg)
24{
25	gArgs.AddItem((void*)name);
26	if (arg == NULL) return false;
27	if (strcmp(arg, "all") == 0) return true;
28	return strcmp(arg, name) == 0;
29}
30
31void printArgs(const char* programName)
32{
33	fprintf(stderr, "%s: argument\n", programName);
34	fprintf(stderr, "Argument is missing. The available arguments are:\n");
35	fprintf(stderr, "  all\n");
36	for (int i = 0; i < gArgs.CountItems(); i ++) {
37		fprintf(stderr, "  %s\n", (const char*)gArgs.ItemAt(i));
38	}
39}
40
41int main(int argc, char* argv[])
42{
43	const char* arg = argc >= 2 ? argv[1] : NULL;
44
45	if (argc >= 3) {
46		gPPDFile = argv[2];
47	}
48
49	if (enabled("scanner", arg)) {
50		TestScanner();
51	}
52	if (enabled("parser", arg)) {
53		TestParser();
54	}
55	if (enabled("ppd", arg)) {
56		TestPPDParser(true);
57	}
58	if (enabled("header", arg)) {
59		TestPPDParser(false);
60	}
61	if (enabled("ui", arg)) {
62		TestExtractUI();
63	}
64	if (enabled("ppd-timing", arg)) {
65		TestPPDParser(true, false);
66	}
67	if (enabled("header-timing", arg)) {
68		TestPPDParser(false, false);
69	}
70
71	if (arg == NULL) {
72		printArgs(argv[0]);
73	}
74}
75