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