From: "Daniel P. Berrange" <berrange@xxxxxxxxxx> Validate that translations between different keycode sets are functioning. Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx> --- tests/virkeycodetest.c | 107 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 tests/virkeycodetest.c diff --git a/tests/virkeycodetest.c b/tests/virkeycodetest.c new file mode 100644 index 0000000..d3c5975 --- /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 + * <http://www.gnu.org/licenses/>. + * + * Author: Daniel P. Berrange <berrange@xxxxxxxxxx> + */ + +#include <config.h> + +#include <stdlib.h> + +#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) -- 1.8.1.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list