1b18c2d1eSnia/*
2b18c2d1eSnia * Test mk_twmkeys_entry()
3b18c2d1eSnia */
4b18c2d1eSnia
5b18c2d1eSnia#include "ctwm.h"
6b18c2d1eSnia
7b18c2d1eSnia#include <string.h>
8b18c2d1eSnia#include <stdio.h>
9b18c2d1eSnia#include <stdlib.h>
10b18c2d1eSnia
11b18c2d1eSnia#include "menus.h"
12b18c2d1eSnia
13b18c2d1eSniaint
14b18c2d1eSniamain(int argc, char *argv[])
15b18c2d1eSnia{
16b18c2d1eSnia	FuncKey key;
17b18c2d1eSnia
18b18c2d1eSnia	// Init
19b18c2d1eSnia	memset(&key, 0, sizeof(key));
20b18c2d1eSnia	key.name   = "KEY";
21b18c2d1eSnia	key.action = "ACT";
22b18c2d1eSnia
23b18c2d1eSnia#define TST(expect) do { \
24b18c2d1eSnia                const char *ret = mk_twmkeys_entry(&key); \
25b18c2d1eSnia                if(strcmp(ret, expect) != 0) { \
26b18c2d1eSnia                        fprintf(stderr, "Expected '%s', got '%s'\n", \
27b18c2d1eSnia                                        expect, ret); \
28b18c2d1eSnia                        exit(1); \
29b18c2d1eSnia                } \
30b18c2d1eSnia        } while(0)
31b18c2d1eSnia
32b18c2d1eSnia	// Simple
33b18c2d1eSnia	key.mods = ShiftMask;
34b18c2d1eSnia	TST("[S+KEY] ACT");
35b18c2d1eSnia
36b18c2d1eSnia	key.mods = ControlMask;
37b18c2d1eSnia	TST("[C+KEY] ACT");
38b18c2d1eSnia
39b18c2d1eSnia	// Combo
40b18c2d1eSnia	key.mods = Mod1Mask | Alt1Mask;
41b18c2d1eSnia	TST("[M+A1+KEY] ACT");
42b18c2d1eSnia
43b18c2d1eSnia	key.mods = Alt1Mask | Alt2Mask | Alt3Mask | Alt4Mask | Alt5Mask;
44b18c2d1eSnia	TST("[A1+A2+A3+A4+A5+KEY] ACT");
45b18c2d1eSnia
46b18c2d1eSnia	// All the mods!
47b18c2d1eSnia	key.mods = ShiftMask | ControlMask
48b18c2d1eSnia	           | Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask
49b18c2d1eSnia	           | Alt1Mask | Alt2Mask | Alt3Mask | Alt4Mask | Alt5Mask;
50b18c2d1eSnia	TST("[M+S+C+M2+M3+M4+M5+A1+A2+A3+A4+A5+KEY] ACT");
51b18c2d1eSnia
52b18c2d1eSnia
53b18c2d1eSnia	// Magic value used to test overflow
54b18c2d1eSnia	{
55b18c2d1eSnia		// Overflow by 1: inherit mods from above, and add a bit
56b18c2d1eSnia		key.mods |= 1 << 30;
57b18c2d1eSnia
58b18c2d1eSnia		const char *ret = mk_twmkeys_entry(&key);
59b18c2d1eSnia		if(ret != NULL) {
60b18c2d1eSnia			fprintf(stderr, "Should have blown up for Over1, instead "
61b18c2d1eSnia			        "got '%s'.\n", ret);
62b18c2d1eSnia			exit(1);
63b18c2d1eSnia		}
64b18c2d1eSnia	}
65b18c2d1eSnia	{
66b18c2d1eSnia		// Overflow by itself
67b18c2d1eSnia		key.mods = 1 << 31;
68b18c2d1eSnia
69b18c2d1eSnia		const char *ret = mk_twmkeys_entry(&key);
70b18c2d1eSnia		if(ret != NULL) {
71b18c2d1eSnia			fprintf(stderr, "Should have blown up for OverAll, instead "
72b18c2d1eSnia			        "got '%s'.\n", ret);
73b18c2d1eSnia			exit(1);
74b18c2d1eSnia		}
75b18c2d1eSnia	}
76b18c2d1eSnia
77b18c2d1eSnia
78b18c2d1eSnia	// OK then
79b18c2d1eSnia	exit(0);
80b18c2d1eSnia}
81