diff --git a/.gitignore b/.gitignore index 4b448203c6..068cac8486 100644 --- a/.gitignore +++ b/.gitignore @@ -182,6 +182,7 @@ /tests/virendiantest /tests/virhashtest /tests/viridentitytest +/tests/virkeycodetest /tests/virkeyfiletest /tests/virlockspacetest /tests/virnet*test diff --git a/tests/Makefile.am b/tests/Makefile.am index 3abd698108..888968d4e9 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -99,6 +99,7 @@ test_programs = virshtest sockettest \ virauthconfigtest \ virbitmaptest virendiantest \ viridentitytest \ + virkeycodetest \ virlockspacetest \ virstringtest \ virportallocatortest \ @@ -573,6 +574,10 @@ viridentitytest_SOURCES = \ viridentitytest.c testutils.h testutils.c viridentitytest_LDADD = $(LDADDS) +virkeycodetest_SOURCES = \ + virkeycodetest.c testutils.h testutils.c +virkeycodetest_LDADD = $(LDADDS) + virlockspacetest_SOURCES = \ virlockspacetest.c testutils.h testutils.c virlockspacetest_LDADD = $(LDADDS) diff --git a/tests/virkeycodetest.c b/tests/virkeycodetest.c new file mode 100644 index 0000000000..53f9d48a35 --- /dev/null +++ b/tests/virkeycodetest.c @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2013 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; If not, see + * . + * + * Author: Daniel P. Berrange + */ + +#include + +#include + +#include "testutils.h" + +#include "virkeycode.h" +#include "virutil.h" +#include "virerror.h" +#include "viralloc.h" +#include "virlog.h" + +#include "virlockspace.h" + +#define VIR_FROM_THIS VIR_FROM_NONE + + +static int testKeycodeMapping(const void *data ATTRIBUTE_UNUSED) +{ + int ret = -1; + int got; + +#define TRANSLATE(from, to, val, want) \ + do { \ + if ((got = virKeycodeValueTranslate(VIR_KEYCODE_SET_##from, \ + VIR_KEYCODE_SET_##to, \ + val)) != want) { \ + fprintf(stderr, "Translating %d from %s to %s, got %d want %d\n", \ + val, #from, #to, got, want); \ + goto cleanup; \ + } \ + } while (0) + + TRANSLATE(LINUX, LINUX, 111, 111); + TRANSLATE(LINUX, USB, 111, 76); + TRANSLATE(LINUX, RFB, 88, 88); + TRANSLATE(LINUX, RFB, 160, 163); + TRANSLATE(ATSET2, ATSET3, 259, 55); + +#undef TRANSLATE + + ret = 0; +cleanup: + return ret; +} + + +static int testKeycodeStrings(const void *data ATTRIBUTE_UNUSED) +{ + int ret = -1; + int got; + +#define TRANSLATE(from, str, want) \ + do { \ + if ((got = virKeycodeValueFromString(VIR_KEYCODE_SET_##from, \ + str)) != want) { \ + fprintf(stderr, "Converting %s from %s, got %d want %d\n", \ + str, #from, got, want); \ + goto cleanup; \ + } \ + } while (0) + + TRANSLATE(LINUX, "KEY_DELETE", 111); + TRANSLATE(OSX, "Function", 0x3f); + TRANSLATE(WIN32, "VK_UP", 0x26); + +#undef TRANSLATE + + ret = 0; +cleanup: + return ret; +} + +static int +mymain(void) +{ + int ret = 0; + + if (virtTestRun("Keycode mapping ", 1, testKeycodeMapping, NULL) < 0) + ret = -1; + if (virtTestRun("Keycode strings ", 1, testKeycodeStrings, NULL) < 0) + ret = -1; + + return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE; +} + +VIRT_TEST_MAIN(mymain)