filecomp.c 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. * Copyright © 2009 Dan Nicholson
  3. * SPDX-License-Identifier: MIT
  4. */
  5. #include "config.h"
  6. #include "test-config.h"
  7. #include "test.h"
  8. #include "xkbcommon/xkbcommon.h"
  9. static int
  10. test_file(struct xkb_context *ctx, enum xkb_keymap_format format,
  11. const char *path_rel)
  12. {
  13. struct xkb_keymap *keymap =
  14. test_compile_file( ctx, format, path_rel);
  15. if (!keymap)
  16. return 0;
  17. xkb_keymap_unref(keymap);
  18. return 1;
  19. }
  20. int
  21. main(void)
  22. {
  23. test_init();
  24. struct xkb_context *ctx = test_get_context(0);
  25. assert(test_file(ctx, XKB_KEYMAP_FORMAT_TEXT_V1, "keymaps/basic.xkb"));
  26. assert(test_file(ctx, XKB_KEYMAP_FORMAT_TEXT_V1, "keymaps/comprehensive-plus-geom.xkb"));
  27. assert(test_file(ctx, XKB_KEYMAP_FORMAT_TEXT_V1, "keymaps/no-types.xkb"));
  28. assert(test_file(ctx, XKB_KEYMAP_FORMAT_TEXT_V1, "keymaps/quartz.xkb"));
  29. assert(test_file(ctx, XKB_KEYMAP_FORMAT_TEXT_V1, "keymaps/no-aliases.xkb"));
  30. assert(test_file(ctx, XKB_KEYMAP_FORMAT_TEXT_V2, "keymaps/modmap-none.xkb"));
  31. assert(test_file(ctx, XKB_KEYMAP_FORMAT_TEXT_V1, "keymaps/invalid-escape-sequence.xkb"));
  32. assert(!test_file(ctx, XKB_KEYMAP_FORMAT_TEXT_V1, "keymaps/divide-by-zero.xkb"));
  33. assert(!test_file(ctx, XKB_KEYMAP_FORMAT_TEXT_V1, "keymaps/syntax-error.xkb"));
  34. assert(!test_file(ctx, XKB_KEYMAP_FORMAT_TEXT_V1, "keymaps/syntax-error2.xkb"));
  35. assert(!test_file(ctx, XKB_KEYMAP_FORMAT_TEXT_V1, "keymaps/empty-symbol-decl.xkb"));
  36. assert(!test_file(ctx, XKB_KEYMAP_FORMAT_TEXT_V1, "keymaps/invalid-qualified-type-field.xkb"));
  37. assert(!test_file(ctx, XKB_KEYMAP_FORMAT_TEXT_V1, "keymaps/invalid-qualified-symbols-field.xkb"));
  38. assert(!test_file(ctx, XKB_KEYMAP_FORMAT_TEXT_V1, "does not exist"));
  39. /* Test response to invalid flags and formats. */
  40. fclose(stdin);
  41. assert(!xkb_keymap_new_from_file(ctx, NULL, XKB_KEYMAP_FORMAT_TEXT_V1, 0));
  42. assert(!xkb_keymap_new_from_file(ctx, stdin, 0, 0));
  43. assert(!xkb_keymap_new_from_file(ctx, stdin, XKB_KEYMAP_USE_ORIGINAL_FORMAT, 0));
  44. assert(!xkb_keymap_new_from_file(ctx, stdin, 1234, 0));
  45. assert(!xkb_keymap_new_from_file(ctx, stdin, XKB_KEYMAP_FORMAT_TEXT_V1, -1));
  46. assert(!xkb_keymap_new_from_file(ctx, stdin, XKB_KEYMAP_FORMAT_TEXT_V1, 1234));
  47. xkb_context_unref(ctx);
  48. return 0;
  49. }