unibilium-Relax-checks-for-extended-capability-to-support-new-.patch 61 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866
  1. From 9ba283bf2d3c1b96f5811e2091397fcc7d383e3b Mon Sep 17 00:00:00 2001
  2. From: James McCoy <jamessan@jamessan.com>
  3. Date: Sun, 22 Jul 2018 23:08:40 -0400
  4. Subject: [PATCH] Relax checks for extended capability to support new format
  5. In the 20180331 release, the format was slightly changed:
  6. > 20180331
  7. > + improve terminfo write/read by modifying the fourth item of the
  8. > extended header to denote the number of valid strings in the extended
  9. > string table (prompted by a comment in unibilium's sources).
  10. Since the number of valid string capabilities is not necessarily the
  11. same as extstrslen, it's not possible to sanity check the total number
  12. of items up front anymore.
  13. Include a new test with an updated screen terminfo dump.
  14. ---
  15. t/new-extended-format-static_screen.c | 820 ++++++++++++++++++++++++++
  16. unibilium.c | 2 -
  17. 2 files changed, 820 insertions(+), 2 deletions(-)
  18. create mode 100644 t/new-extended-format-static_screen.c
  19. diff --git a/t/new-extended-format-static_screen.c b/t/new-extended-format-static_screen.c
  20. new file mode 100644
  21. index 0000000..c5c4872
  22. --- /dev/null
  23. +++ b/t/new-extended-format-static_screen.c
  24. @@ -0,0 +1,820 @@
  25. +#include <unibilium.h>
  26. +#include <errno.h>
  27. +#include <string.h>
  28. +#include "test-simple.c.inc"
  29. +
  30. +static const char terminfo[] = {
  31. + 26, 1, 42, 0, 43, 0, 15, 0, 105, 1, -103, 2, 115, 99, 114, 101, 101, 110, 124, 86,
  32. + 84, 32, 49, 48, 48, 47, 65, 78, 83, 73, 32, 88, 51, 46, 54, 52, 32, 118, 105, 114,
  33. + 116, 117, 97, 108, 32, 116, 101, 114, 109, 105, 110, 97, 108, 0, 0, 1, 0, 0, 1, 0,
  34. + 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  35. + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 80, 0,
  36. + 8, 0, 24, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  37. + -1, -1, -1, -1, 8, 0, 64, 0, 0, 0, 4, 0, 6, 0, 8, 0, 25, 0, 30, 0,
  38. + 37, 0, 41, 0, 45, 0, -1, -1, 56, 0, 73, 0, 75, 0, 79, 0, 86, 0, -1, -1,
  39. + 88, 0, 100, 0, -1, -1, 104, 0, 107, 0, 113, 0, 117, 0, -1, -1, -1, -1, 121, 0,
  40. + 123, 0, -128, 0, -123, 0, -1, -1, -114, 0, -109, 0, -1, -1, -1, -1, -104, 0, -99, 0,
  41. + -94, 0, -1, -1, -89, 0, -87, 0, -82, 0, -1, -1, -73, 0, -68, 0, -62, 0, -56, 0,
  42. + -1, -1, -1, -1, -1, -1, -53, 0, -1, -1, -1, -1, -1, -1, -49, 0, -1, -1, -45, 0,
  43. + -1, -1, -1, -1, -1, -1, -43, 0, -1, -1, -38, 0, -1, -1, -1, -1, -1, -1, -1, -1,
  44. + -34, 0, -30, 0, -24, 0, -20, 0, -16, 0, -12, 0, -6, 0, 0, 1, 6, 1, 12, 1,
  45. + 18, 1, 23, 1, -1, -1, 28, 1, -1, -1, 32, 1, 37, 1, 42, 1, -1, -1, -1, -1,
  46. + -1, -1, 46, 1, 50, 1, 58, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  47. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, 1, -1, -1, 69, 1,
  48. + 78, 1, 87, 1, 96, 1, 105, 1, 114, 1, 123, 1, -124, 1, -1, -1, -115, 1, -1, -1,
  49. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -106, 1, -1, -1, -1, -1,
  50. + -89, 1, -86, 1, -75, 1, -72, 1, -70, 1, -67, 1, 17, 2, -1, -1, 20, 2, -1, -1,
  51. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  52. + 22, 2, -1, -1, 87, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, 2,
  53. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 98, 2, -1, -1,
  54. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  55. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  56. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  57. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  58. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  59. + 103, 2, 109, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  60. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  61. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  62. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  63. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  64. + -1, -1, -1, -1, -1, -1, 115, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  65. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  66. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  67. + -1, -1, 120, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  68. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  69. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  70. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  71. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  72. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -127, 2,
  73. + -1, -1, -1, -1, -1, -1, -123, 2, -113, 2, 27, 91, 90, 0, 7, 0, 13, 0, 27, 91,
  74. + 37, 105, 37, 112, 49, 37, 100, 59, 37, 112, 50, 37, 100, 114, 0, 27, 91, 51, 103, 0,
  75. + 27, 91, 72, 27, 91, 74, 0, 27, 91, 75, 0, 27, 91, 74, 0, 27, 91, 37, 105, 37,
  76. + 112, 49, 37, 100, 71, 0, 27, 91, 37, 105, 37, 112, 49, 37, 100, 59, 37, 112, 50, 37,
  77. + 100, 72, 0, 10, 0, 27, 91, 72, 0, 27, 91, 63, 50, 53, 108, 0, 8, 0, 27, 91,
  78. + 51, 52, 104, 27, 91, 63, 50, 53, 104, 0, 27, 91, 67, 0, 27, 77, 0, 27, 91, 51,
  79. + 52, 108, 0, 27, 91, 80, 0, 27, 91, 77, 0, 14, 0, 27, 91, 53, 109, 0, 27, 91,
  80. + 49, 109, 0, 27, 91, 63, 49, 48, 52, 57, 104, 0, 27, 91, 50, 109, 0, 27, 91, 52,
  81. + 104, 0, 27, 91, 55, 109, 0, 27, 91, 51, 109, 0, 27, 91, 52, 109, 0, 15, 0, 27,
  82. + 91, 109, 15, 0, 27, 91, 63, 49, 48, 52, 57, 108, 0, 27, 91, 52, 108, 0, 27, 91,
  83. + 50, 51, 109, 0, 27, 91, 50, 52, 109, 0, 27, 103, 0, 27, 41, 48, 0, 27, 91, 76,
  84. + 0, 127, 0, 27, 91, 51, 126, 0, 27, 79, 66, 0, 27, 79, 80, 0, 27, 91, 50, 49,
  85. + 126, 0, 27, 79, 81, 0, 27, 79, 82, 0, 27, 79, 83, 0, 27, 91, 49, 53, 126, 0,
  86. + 27, 91, 49, 55, 126, 0, 27, 91, 49, 56, 126, 0, 27, 91, 49, 57, 126, 0, 27, 91,
  87. + 50, 48, 126, 0, 27, 91, 49, 126, 0, 27, 91, 50, 126, 0, 27, 79, 68, 0, 27, 91,
  88. + 54, 126, 0, 27, 91, 53, 126, 0, 27, 79, 67, 0, 27, 79, 65, 0, 27, 91, 63, 49,
  89. + 108, 27, 62, 0, 27, 91, 63, 49, 104, 27, 61, 0, 27, 69, 0, 27, 91, 37, 112, 49,
  90. + 37, 100, 80, 0, 27, 91, 37, 112, 49, 37, 100, 77, 0, 27, 91, 37, 112, 49, 37, 100,
  91. + 66, 0, 27, 91, 37, 112, 49, 37, 100, 64, 0, 27, 91, 37, 112, 49, 37, 100, 83, 0,
  92. + 27, 91, 37, 112, 49, 37, 100, 76, 0, 27, 91, 37, 112, 49, 37, 100, 68, 0, 27, 91,
  93. + 37, 112, 49, 37, 100, 67, 0, 27, 91, 37, 112, 49, 37, 100, 65, 0, 27, 99, 27, 91,
  94. + 63, 49, 48, 48, 48, 108, 27, 91, 63, 50, 53, 104, 0, 27, 56, 0, 27, 91, 37, 105,
  95. + 37, 112, 49, 37, 100, 100, 0, 27, 55, 0, 10, 0, 27, 77, 0, 27, 91, 48, 37, 63,
  96. + 37, 112, 54, 37, 116, 59, 49, 37, 59, 37, 63, 37, 112, 49, 37, 116, 59, 51, 37, 59,
  97. + 37, 63, 37, 112, 50, 37, 116, 59, 52, 37, 59, 37, 63, 37, 112, 51, 37, 116, 59, 55,
  98. + 37, 59, 37, 63, 37, 112, 52, 37, 116, 59, 53, 37, 59, 37, 63, 37, 112, 53, 37, 116,
  99. + 59, 50, 37, 59, 109, 37, 63, 37, 112, 57, 37, 116, 14, 37, 101, 15, 37, 59, 0, 27,
  100. + 72, 0, 9, 0, 43, 43, 44, 44, 45, 45, 46, 46, 48, 48, 96, 96, 97, 97, 102, 102,
  101. + 103, 103, 104, 104, 105, 105, 106, 106, 107, 107, 108, 108, 109, 109, 110, 110, 111, 111, 112, 112,
  102. + 113, 113, 114, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119, 119, 120, 120, 121, 121, 122, 122,
  103. + 123, 123, 124, 124, 125, 125, 126, 126, 0, 27, 91, 90, 0, 27, 40, 66, 27, 41, 48, 0,
  104. + 27, 91, 52, 126, 0, 27, 91, 50, 51, 126, 0, 27, 91, 50, 52, 126, 0, 27, 91, 49,
  105. + 75, 0, 27, 91, 51, 57, 59, 52, 57, 109, 0, 27, 91, 77, 0, 27, 91, 51, 37, 112,
  106. + 49, 37, 100, 109, 0, 27, 91, 52, 37, 112, 49, 37, 100, 109, 0, 0, 3, 0, 1, 0,
  107. + 12, 0, 28, 0, 70, 0, 1, 1, 0, 0, 1, 0, 0, 0, -1, -1, 4, 0, -1, -1,
  108. + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 3, 0,
  109. + 6, 0, 9, 0, 12, 0, 15, 0, 18, 0, 21, 0, 24, 0, 27, 0, 33, 0, 39, 0,
  110. + 43, 0, 47, 0, 51, 0, 55, 0, 27, 40, 66, 0, 27, 40, 37, 112, 49, 37, 99, 0,
  111. + 65, 88, 0, 71, 48, 0, 88, 84, 0, 85, 56, 0, 69, 48, 0, 69, 51, 0, 83, 48,
  112. + 0, 84, 83, 0, 88, 77, 0, 107, 69, 78, 68, 53, 0, 107, 72, 79, 77, 53, 0, 107,
  113. + 97, 50, 0, 107, 98, 49, 0, 107, 98, 51, 0, 107, 99, 50, 0, 120, 109, 0
  114. +};
  115. +
  116. +static void setup(void);
  117. +
  118. +int main(void) {
  119. + int e;
  120. + unibi_term *dt;
  121. +
  122. + setup();
  123. +
  124. + dt = unibi_dummy();
  125. + e = errno;
  126. + ok(dt != NULL, "dummy constructed");
  127. + if (!dt) {
  128. + bail_out(strerror(e));
  129. + }
  130. + unibi_term *ut = unibi_from_mem(terminfo, sizeof terminfo);
  131. + e = errno;
  132. + ok(ut != NULL, "terminfo loaded");
  133. + if (!ut) {
  134. + bail_out(strerror(e));
  135. + }
  136. +
  137. + note("terminal name");
  138. + ok(strcmp(unibi_get_name(ut), "VT 100/ANSI X3.64 virtual terminal") == 0, "terminal name = \"%s\"", "VT 100/ANSI X3.64 virtual terminal");
  139. + unibi_set_name(dt, "VT 100/ANSI X3.64 virtual terminal");
  140. + {
  141. + static const char *def_aliases[] = {"screen", NULL};
  142. + const char **aliases = unibi_get_aliases(ut);
  143. + ok(strcmp(aliases[0], def_aliases[0]) == 0, "terminal alias #0 = \"%s\"", "screen");
  144. + ok(aliases[1] == NULL, "terminal alias #1 = null");
  145. + unibi_set_aliases(dt, def_aliases);
  146. + }
  147. +
  148. + note("boolean capabilities");
  149. + ok(unibi_get_bool(ut, unibi_auto_left_margin) == 0, "auto_left_margin = false");
  150. + ok(unibi_get_bool(ut, unibi_auto_right_margin) == 1, "auto_right_margin = true");
  151. + unibi_set_bool(dt, unibi_auto_right_margin, 1);
  152. + ok(unibi_get_bool(ut, unibi_no_esc_ctlc) == 0, "no_esc_ctlc = false");
  153. + ok(unibi_get_bool(ut, unibi_ceol_standout_glitch) == 0, "ceol_standout_glitch = false");
  154. + ok(unibi_get_bool(ut, unibi_eat_newline_glitch) == 1, "eat_newline_glitch = true");
  155. + unibi_set_bool(dt, unibi_eat_newline_glitch, 1);
  156. + ok(unibi_get_bool(ut, unibi_erase_overstrike) == 0, "erase_overstrike = false");
  157. + ok(unibi_get_bool(ut, unibi_generic_type) == 0, "generic_type = false");
  158. + ok(unibi_get_bool(ut, unibi_hard_copy) == 0, "hard_copy = false");
  159. + ok(unibi_get_bool(ut, unibi_has_meta_key) == 1, "has_meta_key = true");
  160. + unibi_set_bool(dt, unibi_has_meta_key, 1);
  161. + ok(unibi_get_bool(ut, unibi_has_status_line) == 0, "has_status_line = false");
  162. + ok(unibi_get_bool(ut, unibi_insert_null_glitch) == 0, "insert_null_glitch = false");
  163. + ok(unibi_get_bool(ut, unibi_memory_above) == 0, "memory_above = false");
  164. + ok(unibi_get_bool(ut, unibi_memory_below) == 0, "memory_below = false");
  165. + ok(unibi_get_bool(ut, unibi_move_insert_mode) == 1, "move_insert_mode = true");
  166. + unibi_set_bool(dt, unibi_move_insert_mode, 1);
  167. + ok(unibi_get_bool(ut, unibi_move_standout_mode) == 1, "move_standout_mode = true");
  168. + unibi_set_bool(dt, unibi_move_standout_mode, 1);
  169. + ok(unibi_get_bool(ut, unibi_over_strike) == 0, "over_strike = false");
  170. + ok(unibi_get_bool(ut, unibi_status_line_esc_ok) == 0, "status_line_esc_ok = false");
  171. + ok(unibi_get_bool(ut, unibi_dest_tabs_magic_smso) == 0, "dest_tabs_magic_smso = false");
  172. + ok(unibi_get_bool(ut, unibi_tilde_glitch) == 0, "tilde_glitch = false");
  173. + ok(unibi_get_bool(ut, unibi_transparent_underline) == 0, "transparent_underline = false");
  174. + ok(unibi_get_bool(ut, unibi_xon_xoff) == 0, "xon_xoff = false");
  175. + ok(unibi_get_bool(ut, unibi_needs_xon_xoff) == 0, "needs_xon_xoff = false");
  176. + ok(unibi_get_bool(ut, unibi_prtr_silent) == 0, "prtr_silent = false");
  177. + ok(unibi_get_bool(ut, unibi_hard_cursor) == 0, "hard_cursor = false");
  178. + ok(unibi_get_bool(ut, unibi_non_rev_rmcup) == 0, "non_rev_rmcup = false");
  179. + ok(unibi_get_bool(ut, unibi_no_pad_char) == 0, "no_pad_char = false");
  180. + ok(unibi_get_bool(ut, unibi_non_dest_scroll_region) == 0, "non_dest_scroll_region = false");
  181. + ok(unibi_get_bool(ut, unibi_can_change) == 0, "can_change = false");
  182. + ok(unibi_get_bool(ut, unibi_back_color_erase) == 0, "back_color_erase = false");
  183. + ok(unibi_get_bool(ut, unibi_hue_lightness_saturation) == 0, "hue_lightness_saturation = false");
  184. + ok(unibi_get_bool(ut, unibi_col_addr_glitch) == 0, "col_addr_glitch = false");
  185. + ok(unibi_get_bool(ut, unibi_cr_cancels_micro_mode) == 0, "cr_cancels_micro_mode = false");
  186. + ok(unibi_get_bool(ut, unibi_has_print_wheel) == 0, "has_print_wheel = false");
  187. + ok(unibi_get_bool(ut, unibi_row_addr_glitch) == 0, "row_addr_glitch = false");
  188. + ok(unibi_get_bool(ut, unibi_semi_auto_right_margin) == 0, "semi_auto_right_margin = false");
  189. + ok(unibi_get_bool(ut, unibi_cpi_changes_res) == 0, "cpi_changes_res = false");
  190. + ok(unibi_get_bool(ut, unibi_lpi_changes_res) == 0, "lpi_changes_res = false");
  191. + ok(unibi_get_bool(ut, unibi_backspaces_with_bs) == 1, "backspaces_with_bs = true");
  192. + unibi_set_bool(dt, unibi_backspaces_with_bs, 1);
  193. + ok(unibi_get_bool(ut, unibi_crt_no_scrolling) == 0, "crt_no_scrolling = false");
  194. + ok(unibi_get_bool(ut, unibi_no_correctly_working_cr) == 0, "no_correctly_working_cr = false");
  195. + ok(unibi_get_bool(ut, unibi_gnu_has_meta_key) == 0, "gnu_has_meta_key = false");
  196. + ok(unibi_get_bool(ut, unibi_linefeed_is_newline) == 0, "linefeed_is_newline = false");
  197. + ok(unibi_get_bool(ut, unibi_has_hardware_tabs) == 1, "has_hardware_tabs = true");
  198. + unibi_set_bool(dt, unibi_has_hardware_tabs, 1);
  199. + ok(unibi_get_bool(ut, unibi_return_does_clr_eol) == 0, "return_does_clr_eol = false");
  200. +
  201. + note("numeric capabilities");
  202. + ok(unibi_get_num(ut, unibi_columns) == 80, "columns = 80");
  203. + unibi_set_num(dt, unibi_columns, 80);
  204. + ok(unibi_get_num(ut, unibi_init_tabs) == 8, "init_tabs = 8");
  205. + unibi_set_num(dt, unibi_init_tabs, 8);
  206. + ok(unibi_get_num(ut, unibi_lines) == 24, "lines = 24");
  207. + unibi_set_num(dt, unibi_lines, 24);
  208. + ok(unibi_get_num(ut, unibi_lines_of_memory) == -1, "lines_of_memory = -1");
  209. + ok(unibi_get_num(ut, unibi_magic_cookie_glitch) == -1, "magic_cookie_glitch = -1");
  210. + ok(unibi_get_num(ut, unibi_padding_baud_rate) == -1, "padding_baud_rate = -1");
  211. + ok(unibi_get_num(ut, unibi_virtual_terminal) == -1, "virtual_terminal = -1");
  212. + ok(unibi_get_num(ut, unibi_width_status_line) == -1, "width_status_line = -1");
  213. + ok(unibi_get_num(ut, unibi_num_labels) == -1, "num_labels = -1");
  214. + ok(unibi_get_num(ut, unibi_label_height) == -1, "label_height = -1");
  215. + ok(unibi_get_num(ut, unibi_label_width) == -1, "label_width = -1");
  216. + ok(unibi_get_num(ut, unibi_max_attributes) == -1, "max_attributes = -1");
  217. + ok(unibi_get_num(ut, unibi_maximum_windows) == -1, "maximum_windows = -1");
  218. + ok(unibi_get_num(ut, unibi_max_colors) == 8, "max_colors = 8");
  219. + unibi_set_num(dt, unibi_max_colors, 8);
  220. + ok(unibi_get_num(ut, unibi_max_pairs) == 64, "max_pairs = 64");
  221. + unibi_set_num(dt, unibi_max_pairs, 64);
  222. + ok(unibi_get_num(ut, unibi_no_color_video) == -1, "no_color_video = -1");
  223. + ok(unibi_get_num(ut, unibi_buffer_capacity) == -1, "buffer_capacity = -1");
  224. + ok(unibi_get_num(ut, unibi_dot_vert_spacing) == -1, "dot_vert_spacing = -1");
  225. + ok(unibi_get_num(ut, unibi_dot_horz_spacing) == -1, "dot_horz_spacing = -1");
  226. + ok(unibi_get_num(ut, unibi_max_micro_address) == -1, "max_micro_address = -1");
  227. + ok(unibi_get_num(ut, unibi_max_micro_jump) == -1, "max_micro_jump = -1");
  228. + ok(unibi_get_num(ut, unibi_micro_col_size) == -1, "micro_col_size = -1");
  229. + ok(unibi_get_num(ut, unibi_micro_line_size) == -1, "micro_line_size = -1");
  230. + ok(unibi_get_num(ut, unibi_number_of_pins) == -1, "number_of_pins = -1");
  231. + ok(unibi_get_num(ut, unibi_output_res_char) == -1, "output_res_char = -1");
  232. + ok(unibi_get_num(ut, unibi_output_res_line) == -1, "output_res_line = -1");
  233. + ok(unibi_get_num(ut, unibi_output_res_horz_inch) == -1, "output_res_horz_inch = -1");
  234. + ok(unibi_get_num(ut, unibi_output_res_vert_inch) == -1, "output_res_vert_inch = -1");
  235. + ok(unibi_get_num(ut, unibi_print_rate) == -1, "print_rate = -1");
  236. + ok(unibi_get_num(ut, unibi_wide_char_size) == -1, "wide_char_size = -1");
  237. + ok(unibi_get_num(ut, unibi_buttons) == -1, "buttons = -1");
  238. + ok(unibi_get_num(ut, unibi_bit_image_entwining) == -1, "bit_image_entwining = -1");
  239. + ok(unibi_get_num(ut, unibi_bit_image_type) == -1, "bit_image_type = -1");
  240. + ok(unibi_get_num(ut, unibi_magic_cookie_glitch_ul) == -1, "magic_cookie_glitch_ul = -1");
  241. + ok(unibi_get_num(ut, unibi_carriage_return_delay) == -1, "carriage_return_delay = -1");
  242. + ok(unibi_get_num(ut, unibi_new_line_delay) == -1, "new_line_delay = -1");
  243. + ok(unibi_get_num(ut, unibi_backspace_delay) == -1, "backspace_delay = -1");
  244. + ok(unibi_get_num(ut, unibi_horizontal_tab_delay) == -1, "horizontal_tab_delay = -1");
  245. + ok(unibi_get_num(ut, unibi_number_of_function_keys) == -1, "number_of_function_keys = -1");
  246. +
  247. + note("string capabilities");
  248. + ok(strcmp(unibi_get_str(ut, unibi_back_tab), "\033[Z") == 0, "back_tab = \"%s\"", "\\033[Z");
  249. + unibi_set_str(dt, unibi_back_tab, "\033[Z");
  250. + ok(strcmp(unibi_get_str(ut, unibi_bell), "\007") == 0, "bell = \"%s\"", "\\007");
  251. + unibi_set_str(dt, unibi_bell, "\007");
  252. + ok(strcmp(unibi_get_str(ut, unibi_carriage_return), "\015") == 0, "carriage_return = \"%s\"", "\\015");
  253. + unibi_set_str(dt, unibi_carriage_return, "\015");
  254. + ok(strcmp(unibi_get_str(ut, unibi_change_scroll_region), "\033[%i%p1%d;%p2%dr") == 0, "change_scroll_region = \"%s\"", "\\033[%i%p1%d;%p2%dr");
  255. + unibi_set_str(dt, unibi_change_scroll_region, "\033[%i%p1%d;%p2%dr");
  256. + ok(strcmp(unibi_get_str(ut, unibi_clear_all_tabs), "\033[3g") == 0, "clear_all_tabs = \"%s\"", "\\033[3g");
  257. + unibi_set_str(dt, unibi_clear_all_tabs, "\033[3g");
  258. + ok(strcmp(unibi_get_str(ut, unibi_clear_screen), "\033[H\033[J") == 0, "clear_screen = \"%s\"", "\\033[H\\033[J");
  259. + unibi_set_str(dt, unibi_clear_screen, "\033[H\033[J");
  260. + ok(strcmp(unibi_get_str(ut, unibi_clr_eol), "\033[K") == 0, "clr_eol = \"%s\"", "\\033[K");
  261. + unibi_set_str(dt, unibi_clr_eol, "\033[K");
  262. + ok(strcmp(unibi_get_str(ut, unibi_clr_eos), "\033[J") == 0, "clr_eos = \"%s\"", "\\033[J");
  263. + unibi_set_str(dt, unibi_clr_eos, "\033[J");
  264. + ok(strcmp(unibi_get_str(ut, unibi_column_address), "\033[%i%p1%dG") == 0, "column_address = \"%s\"", "\\033[%i%p1%dG");
  265. + unibi_set_str(dt, unibi_column_address, "\033[%i%p1%dG");
  266. + ok(unibi_get_str(ut, unibi_command_character) == NULL, "command_character = null");
  267. + ok(strcmp(unibi_get_str(ut, unibi_cursor_address), "\033[%i%p1%d;%p2%dH") == 0, "cursor_address = \"%s\"", "\\033[%i%p1%d;%p2%dH");
  268. + unibi_set_str(dt, unibi_cursor_address, "\033[%i%p1%d;%p2%dH");
  269. + ok(strcmp(unibi_get_str(ut, unibi_cursor_down), "\012") == 0, "cursor_down = \"%s\"", "\\012");
  270. + unibi_set_str(dt, unibi_cursor_down, "\012");
  271. + ok(strcmp(unibi_get_str(ut, unibi_cursor_home), "\033[H") == 0, "cursor_home = \"%s\"", "\\033[H");
  272. + unibi_set_str(dt, unibi_cursor_home, "\033[H");
  273. + ok(strcmp(unibi_get_str(ut, unibi_cursor_invisible), "\033[?25l") == 0, "cursor_invisible = \"%s\"", "\\033[?25l");
  274. + unibi_set_str(dt, unibi_cursor_invisible, "\033[?25l");
  275. + ok(strcmp(unibi_get_str(ut, unibi_cursor_left), "\010") == 0, "cursor_left = \"%s\"", "\\010");
  276. + unibi_set_str(dt, unibi_cursor_left, "\010");
  277. + ok(unibi_get_str(ut, unibi_cursor_mem_address) == NULL, "cursor_mem_address = null");
  278. + ok(strcmp(unibi_get_str(ut, unibi_cursor_normal), "\033[34h\033[?25h") == 0, "cursor_normal = \"%s\"", "\\033[34h\\033[?25h");
  279. + unibi_set_str(dt, unibi_cursor_normal, "\033[34h\033[?25h");
  280. + ok(strcmp(unibi_get_str(ut, unibi_cursor_right), "\033[C") == 0, "cursor_right = \"%s\"", "\\033[C");
  281. + unibi_set_str(dt, unibi_cursor_right, "\033[C");
  282. + ok(unibi_get_str(ut, unibi_cursor_to_ll) == NULL, "cursor_to_ll = null");
  283. + ok(strcmp(unibi_get_str(ut, unibi_cursor_up), "\033M") == 0, "cursor_up = \"%s\"", "\\033M");
  284. + unibi_set_str(dt, unibi_cursor_up, "\033M");
  285. + ok(strcmp(unibi_get_str(ut, unibi_cursor_visible), "\033[34l") == 0, "cursor_visible = \"%s\"", "\\033[34l");
  286. + unibi_set_str(dt, unibi_cursor_visible, "\033[34l");
  287. + ok(strcmp(unibi_get_str(ut, unibi_delete_character), "\033[P") == 0, "delete_character = \"%s\"", "\\033[P");
  288. + unibi_set_str(dt, unibi_delete_character, "\033[P");
  289. + ok(strcmp(unibi_get_str(ut, unibi_delete_line), "\033[M") == 0, "delete_line = \"%s\"", "\\033[M");
  290. + unibi_set_str(dt, unibi_delete_line, "\033[M");
  291. + ok(unibi_get_str(ut, unibi_dis_status_line) == NULL, "dis_status_line = null");
  292. + ok(unibi_get_str(ut, unibi_down_half_line) == NULL, "down_half_line = null");
  293. + ok(strcmp(unibi_get_str(ut, unibi_enter_alt_charset_mode), "\016") == 0, "enter_alt_charset_mode = \"%s\"", "\\016");
  294. + unibi_set_str(dt, unibi_enter_alt_charset_mode, "\016");
  295. + ok(strcmp(unibi_get_str(ut, unibi_enter_blink_mode), "\033[5m") == 0, "enter_blink_mode = \"%s\"", "\\033[5m");
  296. + unibi_set_str(dt, unibi_enter_blink_mode, "\033[5m");
  297. + ok(strcmp(unibi_get_str(ut, unibi_enter_bold_mode), "\033[1m") == 0, "enter_bold_mode = \"%s\"", "\\033[1m");
  298. + unibi_set_str(dt, unibi_enter_bold_mode, "\033[1m");
  299. + ok(strcmp(unibi_get_str(ut, unibi_enter_ca_mode), "\033[?1049h") == 0, "enter_ca_mode = \"%s\"", "\\033[?1049h");
  300. + unibi_set_str(dt, unibi_enter_ca_mode, "\033[?1049h");
  301. + ok(unibi_get_str(ut, unibi_enter_delete_mode) == NULL, "enter_delete_mode = null");
  302. + ok(strcmp(unibi_get_str(ut, unibi_enter_dim_mode), "\033[2m") == 0, "enter_dim_mode = \"%s\"", "\\033[2m");
  303. + unibi_set_str(dt, unibi_enter_dim_mode, "\033[2m");
  304. + ok(strcmp(unibi_get_str(ut, unibi_enter_insert_mode), "\033[4h") == 0, "enter_insert_mode = \"%s\"", "\\033[4h");
  305. + unibi_set_str(dt, unibi_enter_insert_mode, "\033[4h");
  306. + ok(unibi_get_str(ut, unibi_enter_secure_mode) == NULL, "enter_secure_mode = null");
  307. + ok(unibi_get_str(ut, unibi_enter_protected_mode) == NULL, "enter_protected_mode = null");
  308. + ok(strcmp(unibi_get_str(ut, unibi_enter_reverse_mode), "\033[7m") == 0, "enter_reverse_mode = \"%s\"", "\\033[7m");
  309. + unibi_set_str(dt, unibi_enter_reverse_mode, "\033[7m");
  310. + ok(strcmp(unibi_get_str(ut, unibi_enter_standout_mode), "\033[3m") == 0, "enter_standout_mode = \"%s\"", "\\033[3m");
  311. + unibi_set_str(dt, unibi_enter_standout_mode, "\033[3m");
  312. + ok(strcmp(unibi_get_str(ut, unibi_enter_underline_mode), "\033[4m") == 0, "enter_underline_mode = \"%s\"", "\\033[4m");
  313. + unibi_set_str(dt, unibi_enter_underline_mode, "\033[4m");
  314. + ok(unibi_get_str(ut, unibi_erase_chars) == NULL, "erase_chars = null");
  315. + ok(strcmp(unibi_get_str(ut, unibi_exit_alt_charset_mode), "\017") == 0, "exit_alt_charset_mode = \"%s\"", "\\017");
  316. + unibi_set_str(dt, unibi_exit_alt_charset_mode, "\017");
  317. + ok(strcmp(unibi_get_str(ut, unibi_exit_attribute_mode), "\033[m\017") == 0, "exit_attribute_mode = \"%s\"", "\\033[m\\017");
  318. + unibi_set_str(dt, unibi_exit_attribute_mode, "\033[m\017");
  319. + ok(strcmp(unibi_get_str(ut, unibi_exit_ca_mode), "\033[?1049l") == 0, "exit_ca_mode = \"%s\"", "\\033[?1049l");
  320. + unibi_set_str(dt, unibi_exit_ca_mode, "\033[?1049l");
  321. + ok(unibi_get_str(ut, unibi_exit_delete_mode) == NULL, "exit_delete_mode = null");
  322. + ok(strcmp(unibi_get_str(ut, unibi_exit_insert_mode), "\033[4l") == 0, "exit_insert_mode = \"%s\"", "\\033[4l");
  323. + unibi_set_str(dt, unibi_exit_insert_mode, "\033[4l");
  324. + ok(strcmp(unibi_get_str(ut, unibi_exit_standout_mode), "\033[23m") == 0, "exit_standout_mode = \"%s\"", "\\033[23m");
  325. + unibi_set_str(dt, unibi_exit_standout_mode, "\033[23m");
  326. + ok(strcmp(unibi_get_str(ut, unibi_exit_underline_mode), "\033[24m") == 0, "exit_underline_mode = \"%s\"", "\\033[24m");
  327. + unibi_set_str(dt, unibi_exit_underline_mode, "\033[24m");
  328. + ok(strcmp(unibi_get_str(ut, unibi_flash_screen), "\033g") == 0, "flash_screen = \"%s\"", "\\033g");
  329. + unibi_set_str(dt, unibi_flash_screen, "\033g");
  330. + ok(unibi_get_str(ut, unibi_form_feed) == NULL, "form_feed = null");
  331. + ok(unibi_get_str(ut, unibi_from_status_line) == NULL, "from_status_line = null");
  332. + ok(unibi_get_str(ut, unibi_init_1string) == NULL, "init_1string = null");
  333. + ok(strcmp(unibi_get_str(ut, unibi_init_2string), "\033)0") == 0, "init_2string = \"%s\"", "\\033)0");
  334. + unibi_set_str(dt, unibi_init_2string, "\033)0");
  335. + ok(unibi_get_str(ut, unibi_init_3string) == NULL, "init_3string = null");
  336. + ok(unibi_get_str(ut, unibi_init_file) == NULL, "init_file = null");
  337. + ok(unibi_get_str(ut, unibi_insert_character) == NULL, "insert_character = null");
  338. + ok(strcmp(unibi_get_str(ut, unibi_insert_line), "\033[L") == 0, "insert_line = \"%s\"", "\\033[L");
  339. + unibi_set_str(dt, unibi_insert_line, "\033[L");
  340. + ok(unibi_get_str(ut, unibi_insert_padding) == NULL, "insert_padding = null");
  341. + ok(strcmp(unibi_get_str(ut, unibi_key_backspace), "\177") == 0, "key_backspace = \"%s\"", "\\177");
  342. + unibi_set_str(dt, unibi_key_backspace, "\177");
  343. + ok(unibi_get_str(ut, unibi_key_catab) == NULL, "key_catab = null");
  344. + ok(unibi_get_str(ut, unibi_key_clear) == NULL, "key_clear = null");
  345. + ok(unibi_get_str(ut, unibi_key_ctab) == NULL, "key_ctab = null");
  346. + ok(strcmp(unibi_get_str(ut, unibi_key_dc), "\033[3~") == 0, "key_dc = \"%s\"", "\\033[3~");
  347. + unibi_set_str(dt, unibi_key_dc, "\033[3~");
  348. + ok(unibi_get_str(ut, unibi_key_dl) == NULL, "key_dl = null");
  349. + ok(strcmp(unibi_get_str(ut, unibi_key_down), "\033OB") == 0, "key_down = \"%s\"", "\\033OB");
  350. + unibi_set_str(dt, unibi_key_down, "\033OB");
  351. + ok(unibi_get_str(ut, unibi_key_eic) == NULL, "key_eic = null");
  352. + ok(unibi_get_str(ut, unibi_key_eol) == NULL, "key_eol = null");
  353. + ok(unibi_get_str(ut, unibi_key_eos) == NULL, "key_eos = null");
  354. + ok(unibi_get_str(ut, unibi_key_f0) == NULL, "key_f0 = null");
  355. + ok(strcmp(unibi_get_str(ut, unibi_key_f1), "\033OP") == 0, "key_f1 = \"%s\"", "\\033OP");
  356. + unibi_set_str(dt, unibi_key_f1, "\033OP");
  357. + ok(strcmp(unibi_get_str(ut, unibi_key_f10), "\033[21~") == 0, "key_f10 = \"%s\"", "\\033[21~");
  358. + unibi_set_str(dt, unibi_key_f10, "\033[21~");
  359. + ok(strcmp(unibi_get_str(ut, unibi_key_f2), "\033OQ") == 0, "key_f2 = \"%s\"", "\\033OQ");
  360. + unibi_set_str(dt, unibi_key_f2, "\033OQ");
  361. + ok(strcmp(unibi_get_str(ut, unibi_key_f3), "\033OR") == 0, "key_f3 = \"%s\"", "\\033OR");
  362. + unibi_set_str(dt, unibi_key_f3, "\033OR");
  363. + ok(strcmp(unibi_get_str(ut, unibi_key_f4), "\033OS") == 0, "key_f4 = \"%s\"", "\\033OS");
  364. + unibi_set_str(dt, unibi_key_f4, "\033OS");
  365. + ok(strcmp(unibi_get_str(ut, unibi_key_f5), "\033[15~") == 0, "key_f5 = \"%s\"", "\\033[15~");
  366. + unibi_set_str(dt, unibi_key_f5, "\033[15~");
  367. + ok(strcmp(unibi_get_str(ut, unibi_key_f6), "\033[17~") == 0, "key_f6 = \"%s\"", "\\033[17~");
  368. + unibi_set_str(dt, unibi_key_f6, "\033[17~");
  369. + ok(strcmp(unibi_get_str(ut, unibi_key_f7), "\033[18~") == 0, "key_f7 = \"%s\"", "\\033[18~");
  370. + unibi_set_str(dt, unibi_key_f7, "\033[18~");
  371. + ok(strcmp(unibi_get_str(ut, unibi_key_f8), "\033[19~") == 0, "key_f8 = \"%s\"", "\\033[19~");
  372. + unibi_set_str(dt, unibi_key_f8, "\033[19~");
  373. + ok(strcmp(unibi_get_str(ut, unibi_key_f9), "\033[20~") == 0, "key_f9 = \"%s\"", "\\033[20~");
  374. + unibi_set_str(dt, unibi_key_f9, "\033[20~");
  375. + ok(strcmp(unibi_get_str(ut, unibi_key_home), "\033[1~") == 0, "key_home = \"%s\"", "\\033[1~");
  376. + unibi_set_str(dt, unibi_key_home, "\033[1~");
  377. + ok(strcmp(unibi_get_str(ut, unibi_key_ic), "\033[2~") == 0, "key_ic = \"%s\"", "\\033[2~");
  378. + unibi_set_str(dt, unibi_key_ic, "\033[2~");
  379. + ok(unibi_get_str(ut, unibi_key_il) == NULL, "key_il = null");
  380. + ok(strcmp(unibi_get_str(ut, unibi_key_left), "\033OD") == 0, "key_left = \"%s\"", "\\033OD");
  381. + unibi_set_str(dt, unibi_key_left, "\033OD");
  382. + ok(unibi_get_str(ut, unibi_key_ll) == NULL, "key_ll = null");
  383. + ok(strcmp(unibi_get_str(ut, unibi_key_npage), "\033[6~") == 0, "key_npage = \"%s\"", "\\033[6~");
  384. + unibi_set_str(dt, unibi_key_npage, "\033[6~");
  385. + ok(strcmp(unibi_get_str(ut, unibi_key_ppage), "\033[5~") == 0, "key_ppage = \"%s\"", "\\033[5~");
  386. + unibi_set_str(dt, unibi_key_ppage, "\033[5~");
  387. + ok(strcmp(unibi_get_str(ut, unibi_key_right), "\033OC") == 0, "key_right = \"%s\"", "\\033OC");
  388. + unibi_set_str(dt, unibi_key_right, "\033OC");
  389. + ok(unibi_get_str(ut, unibi_key_sf) == NULL, "key_sf = null");
  390. + ok(unibi_get_str(ut, unibi_key_sr) == NULL, "key_sr = null");
  391. + ok(unibi_get_str(ut, unibi_key_stab) == NULL, "key_stab = null");
  392. + ok(strcmp(unibi_get_str(ut, unibi_key_up), "\033OA") == 0, "key_up = \"%s\"", "\\033OA");
  393. + unibi_set_str(dt, unibi_key_up, "\033OA");
  394. + ok(strcmp(unibi_get_str(ut, unibi_keypad_local), "\033[?1l\033>") == 0, "keypad_local = \"%s\"", "\\033[?1l\\033>");
  395. + unibi_set_str(dt, unibi_keypad_local, "\033[?1l\033>");
  396. + ok(strcmp(unibi_get_str(ut, unibi_keypad_xmit), "\033[?1h\033=") == 0, "keypad_xmit = \"%s\"", "\\033[?1h\\033=");
  397. + unibi_set_str(dt, unibi_keypad_xmit, "\033[?1h\033=");
  398. + ok(unibi_get_str(ut, unibi_lab_f0) == NULL, "lab_f0 = null");
  399. + ok(unibi_get_str(ut, unibi_lab_f1) == NULL, "lab_f1 = null");
  400. + ok(unibi_get_str(ut, unibi_lab_f10) == NULL, "lab_f10 = null");
  401. + ok(unibi_get_str(ut, unibi_lab_f2) == NULL, "lab_f2 = null");
  402. + ok(unibi_get_str(ut, unibi_lab_f3) == NULL, "lab_f3 = null");
  403. + ok(unibi_get_str(ut, unibi_lab_f4) == NULL, "lab_f4 = null");
  404. + ok(unibi_get_str(ut, unibi_lab_f5) == NULL, "lab_f5 = null");
  405. + ok(unibi_get_str(ut, unibi_lab_f6) == NULL, "lab_f6 = null");
  406. + ok(unibi_get_str(ut, unibi_lab_f7) == NULL, "lab_f7 = null");
  407. + ok(unibi_get_str(ut, unibi_lab_f8) == NULL, "lab_f8 = null");
  408. + ok(unibi_get_str(ut, unibi_lab_f9) == NULL, "lab_f9 = null");
  409. + ok(unibi_get_str(ut, unibi_meta_off) == NULL, "meta_off = null");
  410. + ok(unibi_get_str(ut, unibi_meta_on) == NULL, "meta_on = null");
  411. + ok(strcmp(unibi_get_str(ut, unibi_newline), "\033E") == 0, "newline = \"%s\"", "\\033E");
  412. + unibi_set_str(dt, unibi_newline, "\033E");
  413. + ok(unibi_get_str(ut, unibi_pad_char) == NULL, "pad_char = null");
  414. + ok(strcmp(unibi_get_str(ut, unibi_parm_dch), "\033[%p1%dP") == 0, "parm_dch = \"%s\"", "\\033[%p1%dP");
  415. + unibi_set_str(dt, unibi_parm_dch, "\033[%p1%dP");
  416. + ok(strcmp(unibi_get_str(ut, unibi_parm_delete_line), "\033[%p1%dM") == 0, "parm_delete_line = \"%s\"", "\\033[%p1%dM");
  417. + unibi_set_str(dt, unibi_parm_delete_line, "\033[%p1%dM");
  418. + ok(strcmp(unibi_get_str(ut, unibi_parm_down_cursor), "\033[%p1%dB") == 0, "parm_down_cursor = \"%s\"", "\\033[%p1%dB");
  419. + unibi_set_str(dt, unibi_parm_down_cursor, "\033[%p1%dB");
  420. + ok(strcmp(unibi_get_str(ut, unibi_parm_ich), "\033[%p1%d@") == 0, "parm_ich = \"%s\"", "\\033[%p1%d@");
  421. + unibi_set_str(dt, unibi_parm_ich, "\033[%p1%d@");
  422. + ok(strcmp(unibi_get_str(ut, unibi_parm_index), "\033[%p1%dS") == 0, "parm_index = \"%s\"", "\\033[%p1%dS");
  423. + unibi_set_str(dt, unibi_parm_index, "\033[%p1%dS");
  424. + ok(strcmp(unibi_get_str(ut, unibi_parm_insert_line), "\033[%p1%dL") == 0, "parm_insert_line = \"%s\"", "\\033[%p1%dL");
  425. + unibi_set_str(dt, unibi_parm_insert_line, "\033[%p1%dL");
  426. + ok(strcmp(unibi_get_str(ut, unibi_parm_left_cursor), "\033[%p1%dD") == 0, "parm_left_cursor = \"%s\"", "\\033[%p1%dD");
  427. + unibi_set_str(dt, unibi_parm_left_cursor, "\033[%p1%dD");
  428. + ok(strcmp(unibi_get_str(ut, unibi_parm_right_cursor), "\033[%p1%dC") == 0, "parm_right_cursor = \"%s\"", "\\033[%p1%dC");
  429. + unibi_set_str(dt, unibi_parm_right_cursor, "\033[%p1%dC");
  430. + ok(unibi_get_str(ut, unibi_parm_rindex) == NULL, "parm_rindex = null");
  431. + ok(strcmp(unibi_get_str(ut, unibi_parm_up_cursor), "\033[%p1%dA") == 0, "parm_up_cursor = \"%s\"", "\\033[%p1%dA");
  432. + unibi_set_str(dt, unibi_parm_up_cursor, "\033[%p1%dA");
  433. + ok(unibi_get_str(ut, unibi_pkey_key) == NULL, "pkey_key = null");
  434. + ok(unibi_get_str(ut, unibi_pkey_local) == NULL, "pkey_local = null");
  435. + ok(unibi_get_str(ut, unibi_pkey_xmit) == NULL, "pkey_xmit = null");
  436. + ok(unibi_get_str(ut, unibi_print_screen) == NULL, "print_screen = null");
  437. + ok(unibi_get_str(ut, unibi_prtr_off) == NULL, "prtr_off = null");
  438. + ok(unibi_get_str(ut, unibi_prtr_on) == NULL, "prtr_on = null");
  439. + ok(unibi_get_str(ut, unibi_repeat_char) == NULL, "repeat_char = null");
  440. + ok(unibi_get_str(ut, unibi_reset_1string) == NULL, "reset_1string = null");
  441. + ok(strcmp(unibi_get_str(ut, unibi_reset_2string), "\033c\033[?1000l\033[?25h") == 0, "reset_2string = \"%s\"", "\\033c\\033[?1000l\\033[?25h");
  442. + unibi_set_str(dt, unibi_reset_2string, "\033c\033[?1000l\033[?25h");
  443. + ok(unibi_get_str(ut, unibi_reset_3string) == NULL, "reset_3string = null");
  444. + ok(unibi_get_str(ut, unibi_reset_file) == NULL, "reset_file = null");
  445. + ok(strcmp(unibi_get_str(ut, unibi_restore_cursor), "\0338") == 0, "restore_cursor = \"%s\"", "\\0338");
  446. + unibi_set_str(dt, unibi_restore_cursor, "\0338");
  447. + ok(strcmp(unibi_get_str(ut, unibi_row_address), "\033[%i%p1%dd") == 0, "row_address = \"%s\"", "\\033[%i%p1%dd");
  448. + unibi_set_str(dt, unibi_row_address, "\033[%i%p1%dd");
  449. + ok(strcmp(unibi_get_str(ut, unibi_save_cursor), "\0337") == 0, "save_cursor = \"%s\"", "\\0337");
  450. + unibi_set_str(dt, unibi_save_cursor, "\0337");
  451. + ok(strcmp(unibi_get_str(ut, unibi_scroll_forward), "\012") == 0, "scroll_forward = \"%s\"", "\\012");
  452. + unibi_set_str(dt, unibi_scroll_forward, "\012");
  453. + ok(strcmp(unibi_get_str(ut, unibi_scroll_reverse), "\033M") == 0, "scroll_reverse = \"%s\"", "\\033M");
  454. + unibi_set_str(dt, unibi_scroll_reverse, "\033M");
  455. + ok(strcmp(unibi_get_str(ut, unibi_set_attributes), "\033[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;m%?%p9%t\016%e\017%;") == 0, "set_attributes = \"%s\"", "\\033[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;m%?%p9%t\\016%e\\017%;");
  456. + unibi_set_str(dt, unibi_set_attributes, "\033[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;m%?%p9%t\016%e\017%;");
  457. + ok(strcmp(unibi_get_str(ut, unibi_set_tab), "\033H") == 0, "set_tab = \"%s\"", "\\033H");
  458. + unibi_set_str(dt, unibi_set_tab, "\033H");
  459. + ok(unibi_get_str(ut, unibi_set_window) == NULL, "set_window = null");
  460. + ok(strcmp(unibi_get_str(ut, unibi_tab), "\011") == 0, "tab = \"%s\"", "\\011");
  461. + unibi_set_str(dt, unibi_tab, "\011");
  462. + ok(unibi_get_str(ut, unibi_to_status_line) == NULL, "to_status_line = null");
  463. + ok(unibi_get_str(ut, unibi_underline_char) == NULL, "underline_char = null");
  464. + ok(unibi_get_str(ut, unibi_up_half_line) == NULL, "up_half_line = null");
  465. + ok(unibi_get_str(ut, unibi_init_prog) == NULL, "init_prog = null");
  466. + ok(unibi_get_str(ut, unibi_key_a1) == NULL, "key_a1 = null");
  467. + ok(unibi_get_str(ut, unibi_key_a3) == NULL, "key_a3 = null");
  468. + ok(unibi_get_str(ut, unibi_key_b2) == NULL, "key_b2 = null");
  469. + ok(unibi_get_str(ut, unibi_key_c1) == NULL, "key_c1 = null");
  470. + ok(unibi_get_str(ut, unibi_key_c3) == NULL, "key_c3 = null");
  471. + ok(unibi_get_str(ut, unibi_prtr_non) == NULL, "prtr_non = null");
  472. + ok(unibi_get_str(ut, unibi_char_padding) == NULL, "char_padding = null");
  473. + ok(strcmp(unibi_get_str(ut, unibi_acs_chars), "++,,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~") == 0, "acs_chars = \"%s\"", "++,,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~");
  474. + unibi_set_str(dt, unibi_acs_chars, "++,,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~");
  475. + ok(unibi_get_str(ut, unibi_plab_norm) == NULL, "plab_norm = null");
  476. + ok(strcmp(unibi_get_str(ut, unibi_key_btab), "\033[Z") == 0, "key_btab = \"%s\"", "\\033[Z");
  477. + unibi_set_str(dt, unibi_key_btab, "\033[Z");
  478. + ok(unibi_get_str(ut, unibi_enter_xon_mode) == NULL, "enter_xon_mode = null");
  479. + ok(unibi_get_str(ut, unibi_exit_xon_mode) == NULL, "exit_xon_mode = null");
  480. + ok(unibi_get_str(ut, unibi_enter_am_mode) == NULL, "enter_am_mode = null");
  481. + ok(unibi_get_str(ut, unibi_exit_am_mode) == NULL, "exit_am_mode = null");
  482. + ok(unibi_get_str(ut, unibi_xon_character) == NULL, "xon_character = null");
  483. + ok(unibi_get_str(ut, unibi_xoff_character) == NULL, "xoff_character = null");
  484. + ok(strcmp(unibi_get_str(ut, unibi_ena_acs), "\033(B\033)0") == 0, "ena_acs = \"%s\"", "\\033(B\\033)0");
  485. + unibi_set_str(dt, unibi_ena_acs, "\033(B\033)0");
  486. + ok(unibi_get_str(ut, unibi_label_on) == NULL, "label_on = null");
  487. + ok(unibi_get_str(ut, unibi_label_off) == NULL, "label_off = null");
  488. + ok(unibi_get_str(ut, unibi_key_beg) == NULL, "key_beg = null");
  489. + ok(unibi_get_str(ut, unibi_key_cancel) == NULL, "key_cancel = null");
  490. + ok(unibi_get_str(ut, unibi_key_close) == NULL, "key_close = null");
  491. + ok(unibi_get_str(ut, unibi_key_command) == NULL, "key_command = null");
  492. + ok(unibi_get_str(ut, unibi_key_copy) == NULL, "key_copy = null");
  493. + ok(unibi_get_str(ut, unibi_key_create) == NULL, "key_create = null");
  494. + ok(strcmp(unibi_get_str(ut, unibi_key_end), "\033[4~") == 0, "key_end = \"%s\"", "\\033[4~");
  495. + unibi_set_str(dt, unibi_key_end, "\033[4~");
  496. + ok(unibi_get_str(ut, unibi_key_enter) == NULL, "key_enter = null");
  497. + ok(unibi_get_str(ut, unibi_key_exit) == NULL, "key_exit = null");
  498. + ok(unibi_get_str(ut, unibi_key_find) == NULL, "key_find = null");
  499. + ok(unibi_get_str(ut, unibi_key_help) == NULL, "key_help = null");
  500. + ok(unibi_get_str(ut, unibi_key_mark) == NULL, "key_mark = null");
  501. + ok(unibi_get_str(ut, unibi_key_message) == NULL, "key_message = null");
  502. + ok(unibi_get_str(ut, unibi_key_move) == NULL, "key_move = null");
  503. + ok(unibi_get_str(ut, unibi_key_next) == NULL, "key_next = null");
  504. + ok(unibi_get_str(ut, unibi_key_open) == NULL, "key_open = null");
  505. + ok(unibi_get_str(ut, unibi_key_options) == NULL, "key_options = null");
  506. + ok(unibi_get_str(ut, unibi_key_previous) == NULL, "key_previous = null");
  507. + ok(unibi_get_str(ut, unibi_key_print) == NULL, "key_print = null");
  508. + ok(unibi_get_str(ut, unibi_key_redo) == NULL, "key_redo = null");
  509. + ok(unibi_get_str(ut, unibi_key_reference) == NULL, "key_reference = null");
  510. + ok(unibi_get_str(ut, unibi_key_refresh) == NULL, "key_refresh = null");
  511. + ok(unibi_get_str(ut, unibi_key_replace) == NULL, "key_replace = null");
  512. + ok(unibi_get_str(ut, unibi_key_restart) == NULL, "key_restart = null");
  513. + ok(unibi_get_str(ut, unibi_key_resume) == NULL, "key_resume = null");
  514. + ok(unibi_get_str(ut, unibi_key_save) == NULL, "key_save = null");
  515. + ok(unibi_get_str(ut, unibi_key_suspend) == NULL, "key_suspend = null");
  516. + ok(unibi_get_str(ut, unibi_key_undo) == NULL, "key_undo = null");
  517. + ok(unibi_get_str(ut, unibi_key_sbeg) == NULL, "key_sbeg = null");
  518. + ok(unibi_get_str(ut, unibi_key_scancel) == NULL, "key_scancel = null");
  519. + ok(unibi_get_str(ut, unibi_key_scommand) == NULL, "key_scommand = null");
  520. + ok(unibi_get_str(ut, unibi_key_scopy) == NULL, "key_scopy = null");
  521. + ok(unibi_get_str(ut, unibi_key_screate) == NULL, "key_screate = null");
  522. + ok(unibi_get_str(ut, unibi_key_sdc) == NULL, "key_sdc = null");
  523. + ok(unibi_get_str(ut, unibi_key_sdl) == NULL, "key_sdl = null");
  524. + ok(unibi_get_str(ut, unibi_key_select) == NULL, "key_select = null");
  525. + ok(unibi_get_str(ut, unibi_key_send) == NULL, "key_send = null");
  526. + ok(unibi_get_str(ut, unibi_key_seol) == NULL, "key_seol = null");
  527. + ok(unibi_get_str(ut, unibi_key_sexit) == NULL, "key_sexit = null");
  528. + ok(unibi_get_str(ut, unibi_key_sfind) == NULL, "key_sfind = null");
  529. + ok(unibi_get_str(ut, unibi_key_shelp) == NULL, "key_shelp = null");
  530. + ok(unibi_get_str(ut, unibi_key_shome) == NULL, "key_shome = null");
  531. + ok(unibi_get_str(ut, unibi_key_sic) == NULL, "key_sic = null");
  532. + ok(unibi_get_str(ut, unibi_key_sleft) == NULL, "key_sleft = null");
  533. + ok(unibi_get_str(ut, unibi_key_smessage) == NULL, "key_smessage = null");
  534. + ok(unibi_get_str(ut, unibi_key_smove) == NULL, "key_smove = null");
  535. + ok(unibi_get_str(ut, unibi_key_snext) == NULL, "key_snext = null");
  536. + ok(unibi_get_str(ut, unibi_key_soptions) == NULL, "key_soptions = null");
  537. + ok(unibi_get_str(ut, unibi_key_sprevious) == NULL, "key_sprevious = null");
  538. + ok(unibi_get_str(ut, unibi_key_sprint) == NULL, "key_sprint = null");
  539. + ok(unibi_get_str(ut, unibi_key_sredo) == NULL, "key_sredo = null");
  540. + ok(unibi_get_str(ut, unibi_key_sreplace) == NULL, "key_sreplace = null");
  541. + ok(unibi_get_str(ut, unibi_key_sright) == NULL, "key_sright = null");
  542. + ok(unibi_get_str(ut, unibi_key_srsume) == NULL, "key_srsume = null");
  543. + ok(unibi_get_str(ut, unibi_key_ssave) == NULL, "key_ssave = null");
  544. + ok(unibi_get_str(ut, unibi_key_ssuspend) == NULL, "key_ssuspend = null");
  545. + ok(unibi_get_str(ut, unibi_key_sundo) == NULL, "key_sundo = null");
  546. + ok(unibi_get_str(ut, unibi_req_for_input) == NULL, "req_for_input = null");
  547. + ok(strcmp(unibi_get_str(ut, unibi_key_f11), "\033[23~") == 0, "key_f11 = \"%s\"", "\\033[23~");
  548. + unibi_set_str(dt, unibi_key_f11, "\033[23~");
  549. + ok(strcmp(unibi_get_str(ut, unibi_key_f12), "\033[24~") == 0, "key_f12 = \"%s\"", "\\033[24~");
  550. + unibi_set_str(dt, unibi_key_f12, "\033[24~");
  551. + ok(unibi_get_str(ut, unibi_key_f13) == NULL, "key_f13 = null");
  552. + ok(unibi_get_str(ut, unibi_key_f14) == NULL, "key_f14 = null");
  553. + ok(unibi_get_str(ut, unibi_key_f15) == NULL, "key_f15 = null");
  554. + ok(unibi_get_str(ut, unibi_key_f16) == NULL, "key_f16 = null");
  555. + ok(unibi_get_str(ut, unibi_key_f17) == NULL, "key_f17 = null");
  556. + ok(unibi_get_str(ut, unibi_key_f18) == NULL, "key_f18 = null");
  557. + ok(unibi_get_str(ut, unibi_key_f19) == NULL, "key_f19 = null");
  558. + ok(unibi_get_str(ut, unibi_key_f20) == NULL, "key_f20 = null");
  559. + ok(unibi_get_str(ut, unibi_key_f21) == NULL, "key_f21 = null");
  560. + ok(unibi_get_str(ut, unibi_key_f22) == NULL, "key_f22 = null");
  561. + ok(unibi_get_str(ut, unibi_key_f23) == NULL, "key_f23 = null");
  562. + ok(unibi_get_str(ut, unibi_key_f24) == NULL, "key_f24 = null");
  563. + ok(unibi_get_str(ut, unibi_key_f25) == NULL, "key_f25 = null");
  564. + ok(unibi_get_str(ut, unibi_key_f26) == NULL, "key_f26 = null");
  565. + ok(unibi_get_str(ut, unibi_key_f27) == NULL, "key_f27 = null");
  566. + ok(unibi_get_str(ut, unibi_key_f28) == NULL, "key_f28 = null");
  567. + ok(unibi_get_str(ut, unibi_key_f29) == NULL, "key_f29 = null");
  568. + ok(unibi_get_str(ut, unibi_key_f30) == NULL, "key_f30 = null");
  569. + ok(unibi_get_str(ut, unibi_key_f31) == NULL, "key_f31 = null");
  570. + ok(unibi_get_str(ut, unibi_key_f32) == NULL, "key_f32 = null");
  571. + ok(unibi_get_str(ut, unibi_key_f33) == NULL, "key_f33 = null");
  572. + ok(unibi_get_str(ut, unibi_key_f34) == NULL, "key_f34 = null");
  573. + ok(unibi_get_str(ut, unibi_key_f35) == NULL, "key_f35 = null");
  574. + ok(unibi_get_str(ut, unibi_key_f36) == NULL, "key_f36 = null");
  575. + ok(unibi_get_str(ut, unibi_key_f37) == NULL, "key_f37 = null");
  576. + ok(unibi_get_str(ut, unibi_key_f38) == NULL, "key_f38 = null");
  577. + ok(unibi_get_str(ut, unibi_key_f39) == NULL, "key_f39 = null");
  578. + ok(unibi_get_str(ut, unibi_key_f40) == NULL, "key_f40 = null");
  579. + ok(unibi_get_str(ut, unibi_key_f41) == NULL, "key_f41 = null");
  580. + ok(unibi_get_str(ut, unibi_key_f42) == NULL, "key_f42 = null");
  581. + ok(unibi_get_str(ut, unibi_key_f43) == NULL, "key_f43 = null");
  582. + ok(unibi_get_str(ut, unibi_key_f44) == NULL, "key_f44 = null");
  583. + ok(unibi_get_str(ut, unibi_key_f45) == NULL, "key_f45 = null");
  584. + ok(unibi_get_str(ut, unibi_key_f46) == NULL, "key_f46 = null");
  585. + ok(unibi_get_str(ut, unibi_key_f47) == NULL, "key_f47 = null");
  586. + ok(unibi_get_str(ut, unibi_key_f48) == NULL, "key_f48 = null");
  587. + ok(unibi_get_str(ut, unibi_key_f49) == NULL, "key_f49 = null");
  588. + ok(unibi_get_str(ut, unibi_key_f50) == NULL, "key_f50 = null");
  589. + ok(unibi_get_str(ut, unibi_key_f51) == NULL, "key_f51 = null");
  590. + ok(unibi_get_str(ut, unibi_key_f52) == NULL, "key_f52 = null");
  591. + ok(unibi_get_str(ut, unibi_key_f53) == NULL, "key_f53 = null");
  592. + ok(unibi_get_str(ut, unibi_key_f54) == NULL, "key_f54 = null");
  593. + ok(unibi_get_str(ut, unibi_key_f55) == NULL, "key_f55 = null");
  594. + ok(unibi_get_str(ut, unibi_key_f56) == NULL, "key_f56 = null");
  595. + ok(unibi_get_str(ut, unibi_key_f57) == NULL, "key_f57 = null");
  596. + ok(unibi_get_str(ut, unibi_key_f58) == NULL, "key_f58 = null");
  597. + ok(unibi_get_str(ut, unibi_key_f59) == NULL, "key_f59 = null");
  598. + ok(unibi_get_str(ut, unibi_key_f60) == NULL, "key_f60 = null");
  599. + ok(unibi_get_str(ut, unibi_key_f61) == NULL, "key_f61 = null");
  600. + ok(unibi_get_str(ut, unibi_key_f62) == NULL, "key_f62 = null");
  601. + ok(unibi_get_str(ut, unibi_key_f63) == NULL, "key_f63 = null");
  602. + ok(strcmp(unibi_get_str(ut, unibi_clr_bol), "\033[1K") == 0, "clr_bol = \"%s\"", "\\033[1K");
  603. + unibi_set_str(dt, unibi_clr_bol, "\033[1K");
  604. + ok(unibi_get_str(ut, unibi_clear_margins) == NULL, "clear_margins = null");
  605. + ok(unibi_get_str(ut, unibi_set_left_margin) == NULL, "set_left_margin = null");
  606. + ok(unibi_get_str(ut, unibi_set_right_margin) == NULL, "set_right_margin = null");
  607. + ok(unibi_get_str(ut, unibi_label_format) == NULL, "label_format = null");
  608. + ok(unibi_get_str(ut, unibi_set_clock) == NULL, "set_clock = null");
  609. + ok(unibi_get_str(ut, unibi_display_clock) == NULL, "display_clock = null");
  610. + ok(unibi_get_str(ut, unibi_remove_clock) == NULL, "remove_clock = null");
  611. + ok(unibi_get_str(ut, unibi_create_window) == NULL, "create_window = null");
  612. + ok(unibi_get_str(ut, unibi_goto_window) == NULL, "goto_window = null");
  613. + ok(unibi_get_str(ut, unibi_hangup) == NULL, "hangup = null");
  614. + ok(unibi_get_str(ut, unibi_dial_phone) == NULL, "dial_phone = null");
  615. + ok(unibi_get_str(ut, unibi_quick_dial) == NULL, "quick_dial = null");
  616. + ok(unibi_get_str(ut, unibi_tone) == NULL, "tone = null");
  617. + ok(unibi_get_str(ut, unibi_pulse) == NULL, "pulse = null");
  618. + ok(unibi_get_str(ut, unibi_flash_hook) == NULL, "flash_hook = null");
  619. + ok(unibi_get_str(ut, unibi_fixed_pause) == NULL, "fixed_pause = null");
  620. + ok(unibi_get_str(ut, unibi_wait_tone) == NULL, "wait_tone = null");
  621. + ok(unibi_get_str(ut, unibi_user0) == NULL, "user0 = null");
  622. + ok(unibi_get_str(ut, unibi_user1) == NULL, "user1 = null");
  623. + ok(unibi_get_str(ut, unibi_user2) == NULL, "user2 = null");
  624. + ok(unibi_get_str(ut, unibi_user3) == NULL, "user3 = null");
  625. + ok(unibi_get_str(ut, unibi_user4) == NULL, "user4 = null");
  626. + ok(unibi_get_str(ut, unibi_user5) == NULL, "user5 = null");
  627. + ok(unibi_get_str(ut, unibi_user6) == NULL, "user6 = null");
  628. + ok(unibi_get_str(ut, unibi_user7) == NULL, "user7 = null");
  629. + ok(unibi_get_str(ut, unibi_user8) == NULL, "user8 = null");
  630. + ok(unibi_get_str(ut, unibi_user9) == NULL, "user9 = null");
  631. + ok(strcmp(unibi_get_str(ut, unibi_orig_pair), "\033[39;49m") == 0, "orig_pair = \"%s\"", "\\033[39;49m");
  632. + unibi_set_str(dt, unibi_orig_pair, "\033[39;49m");
  633. + ok(unibi_get_str(ut, unibi_orig_colors) == NULL, "orig_colors = null");
  634. + ok(unibi_get_str(ut, unibi_initialize_color) == NULL, "initialize_color = null");
  635. + ok(unibi_get_str(ut, unibi_initialize_pair) == NULL, "initialize_pair = null");
  636. + ok(unibi_get_str(ut, unibi_set_color_pair) == NULL, "set_color_pair = null");
  637. + ok(unibi_get_str(ut, unibi_set_foreground) == NULL, "set_foreground = null");
  638. + ok(unibi_get_str(ut, unibi_set_background) == NULL, "set_background = null");
  639. + ok(unibi_get_str(ut, unibi_change_char_pitch) == NULL, "change_char_pitch = null");
  640. + ok(unibi_get_str(ut, unibi_change_line_pitch) == NULL, "change_line_pitch = null");
  641. + ok(unibi_get_str(ut, unibi_change_res_horz) == NULL, "change_res_horz = null");
  642. + ok(unibi_get_str(ut, unibi_change_res_vert) == NULL, "change_res_vert = null");
  643. + ok(unibi_get_str(ut, unibi_define_char) == NULL, "define_char = null");
  644. + ok(unibi_get_str(ut, unibi_enter_doublewide_mode) == NULL, "enter_doublewide_mode = null");
  645. + ok(unibi_get_str(ut, unibi_enter_draft_quality) == NULL, "enter_draft_quality = null");
  646. + ok(unibi_get_str(ut, unibi_enter_italics_mode) == NULL, "enter_italics_mode = null");
  647. + ok(unibi_get_str(ut, unibi_enter_leftward_mode) == NULL, "enter_leftward_mode = null");
  648. + ok(unibi_get_str(ut, unibi_enter_micro_mode) == NULL, "enter_micro_mode = null");
  649. + ok(unibi_get_str(ut, unibi_enter_near_letter_quality) == NULL, "enter_near_letter_quality = null");
  650. + ok(unibi_get_str(ut, unibi_enter_normal_quality) == NULL, "enter_normal_quality = null");
  651. + ok(unibi_get_str(ut, unibi_enter_shadow_mode) == NULL, "enter_shadow_mode = null");
  652. + ok(unibi_get_str(ut, unibi_enter_subscript_mode) == NULL, "enter_subscript_mode = null");
  653. + ok(unibi_get_str(ut, unibi_enter_superscript_mode) == NULL, "enter_superscript_mode = null");
  654. + ok(unibi_get_str(ut, unibi_enter_upward_mode) == NULL, "enter_upward_mode = null");
  655. + ok(unibi_get_str(ut, unibi_exit_doublewide_mode) == NULL, "exit_doublewide_mode = null");
  656. + ok(unibi_get_str(ut, unibi_exit_italics_mode) == NULL, "exit_italics_mode = null");
  657. + ok(unibi_get_str(ut, unibi_exit_leftward_mode) == NULL, "exit_leftward_mode = null");
  658. + ok(unibi_get_str(ut, unibi_exit_micro_mode) == NULL, "exit_micro_mode = null");
  659. + ok(unibi_get_str(ut, unibi_exit_shadow_mode) == NULL, "exit_shadow_mode = null");
  660. + ok(unibi_get_str(ut, unibi_exit_subscript_mode) == NULL, "exit_subscript_mode = null");
  661. + ok(unibi_get_str(ut, unibi_exit_superscript_mode) == NULL, "exit_superscript_mode = null");
  662. + ok(unibi_get_str(ut, unibi_exit_upward_mode) == NULL, "exit_upward_mode = null");
  663. + ok(unibi_get_str(ut, unibi_micro_column_address) == NULL, "micro_column_address = null");
  664. + ok(unibi_get_str(ut, unibi_micro_down) == NULL, "micro_down = null");
  665. + ok(unibi_get_str(ut, unibi_micro_left) == NULL, "micro_left = null");
  666. + ok(unibi_get_str(ut, unibi_micro_right) == NULL, "micro_right = null");
  667. + ok(unibi_get_str(ut, unibi_micro_row_address) == NULL, "micro_row_address = null");
  668. + ok(unibi_get_str(ut, unibi_micro_up) == NULL, "micro_up = null");
  669. + ok(unibi_get_str(ut, unibi_order_of_pins) == NULL, "order_of_pins = null");
  670. + ok(unibi_get_str(ut, unibi_parm_down_micro) == NULL, "parm_down_micro = null");
  671. + ok(unibi_get_str(ut, unibi_parm_left_micro) == NULL, "parm_left_micro = null");
  672. + ok(unibi_get_str(ut, unibi_parm_right_micro) == NULL, "parm_right_micro = null");
  673. + ok(unibi_get_str(ut, unibi_parm_up_micro) == NULL, "parm_up_micro = null");
  674. + ok(unibi_get_str(ut, unibi_select_char_set) == NULL, "select_char_set = null");
  675. + ok(unibi_get_str(ut, unibi_set_bottom_margin) == NULL, "set_bottom_margin = null");
  676. + ok(unibi_get_str(ut, unibi_set_bottom_margin_parm) == NULL, "set_bottom_margin_parm = null");
  677. + ok(unibi_get_str(ut, unibi_set_left_margin_parm) == NULL, "set_left_margin_parm = null");
  678. + ok(unibi_get_str(ut, unibi_set_right_margin_parm) == NULL, "set_right_margin_parm = null");
  679. + ok(unibi_get_str(ut, unibi_set_top_margin) == NULL, "set_top_margin = null");
  680. + ok(unibi_get_str(ut, unibi_set_top_margin_parm) == NULL, "set_top_margin_parm = null");
  681. + ok(unibi_get_str(ut, unibi_start_bit_image) == NULL, "start_bit_image = null");
  682. + ok(unibi_get_str(ut, unibi_start_char_set_def) == NULL, "start_char_set_def = null");
  683. + ok(unibi_get_str(ut, unibi_stop_bit_image) == NULL, "stop_bit_image = null");
  684. + ok(unibi_get_str(ut, unibi_stop_char_set_def) == NULL, "stop_char_set_def = null");
  685. + ok(unibi_get_str(ut, unibi_subscript_characters) == NULL, "subscript_characters = null");
  686. + ok(unibi_get_str(ut, unibi_superscript_characters) == NULL, "superscript_characters = null");
  687. + ok(unibi_get_str(ut, unibi_these_cause_cr) == NULL, "these_cause_cr = null");
  688. + ok(unibi_get_str(ut, unibi_zero_motion) == NULL, "zero_motion = null");
  689. + ok(unibi_get_str(ut, unibi_char_set_names) == NULL, "char_set_names = null");
  690. + ok(strcmp(unibi_get_str(ut, unibi_key_mouse), "\033[M") == 0, "key_mouse = \"%s\"", "\\033[M");
  691. + unibi_set_str(dt, unibi_key_mouse, "\033[M");
  692. + ok(unibi_get_str(ut, unibi_mouse_info) == NULL, "mouse_info = null");
  693. + ok(unibi_get_str(ut, unibi_req_mouse_pos) == NULL, "req_mouse_pos = null");
  694. + ok(unibi_get_str(ut, unibi_get_mouse) == NULL, "get_mouse = null");
  695. + ok(strcmp(unibi_get_str(ut, unibi_set_a_foreground), "\033[3%p1%dm") == 0, "set_a_foreground = \"%s\"", "\\033[3%p1%dm");
  696. + unibi_set_str(dt, unibi_set_a_foreground, "\033[3%p1%dm");
  697. + ok(strcmp(unibi_get_str(ut, unibi_set_a_background), "\033[4%p1%dm") == 0, "set_a_background = \"%s\"", "\\033[4%p1%dm");
  698. + unibi_set_str(dt, unibi_set_a_background, "\033[4%p1%dm");
  699. + ok(unibi_get_str(ut, unibi_pkey_plab) == NULL, "pkey_plab = null");
  700. + ok(unibi_get_str(ut, unibi_device_type) == NULL, "device_type = null");
  701. + ok(unibi_get_str(ut, unibi_code_set_init) == NULL, "code_set_init = null");
  702. + ok(unibi_get_str(ut, unibi_set0_des_seq) == NULL, "set0_des_seq = null");
  703. + ok(unibi_get_str(ut, unibi_set1_des_seq) == NULL, "set1_des_seq = null");
  704. + ok(unibi_get_str(ut, unibi_set2_des_seq) == NULL, "set2_des_seq = null");
  705. + ok(unibi_get_str(ut, unibi_set3_des_seq) == NULL, "set3_des_seq = null");
  706. + ok(unibi_get_str(ut, unibi_set_lr_margin) == NULL, "set_lr_margin = null");
  707. + ok(unibi_get_str(ut, unibi_set_tb_margin) == NULL, "set_tb_margin = null");
  708. + ok(unibi_get_str(ut, unibi_bit_image_repeat) == NULL, "bit_image_repeat = null");
  709. + ok(unibi_get_str(ut, unibi_bit_image_newline) == NULL, "bit_image_newline = null");
  710. + ok(unibi_get_str(ut, unibi_bit_image_carriage_return) == NULL, "bit_image_carriage_return = null");
  711. + ok(unibi_get_str(ut, unibi_color_names) == NULL, "color_names = null");
  712. + ok(unibi_get_str(ut, unibi_define_bit_image_region) == NULL, "define_bit_image_region = null");
  713. + ok(unibi_get_str(ut, unibi_end_bit_image_region) == NULL, "end_bit_image_region = null");
  714. + ok(unibi_get_str(ut, unibi_set_color_band) == NULL, "set_color_band = null");
  715. + ok(unibi_get_str(ut, unibi_set_page_length) == NULL, "set_page_length = null");
  716. + ok(unibi_get_str(ut, unibi_display_pc_char) == NULL, "display_pc_char = null");
  717. + ok(unibi_get_str(ut, unibi_enter_pc_charset_mode) == NULL, "enter_pc_charset_mode = null");
  718. + ok(unibi_get_str(ut, unibi_exit_pc_charset_mode) == NULL, "exit_pc_charset_mode = null");
  719. + ok(unibi_get_str(ut, unibi_enter_scancode_mode) == NULL, "enter_scancode_mode = null");
  720. + ok(unibi_get_str(ut, unibi_exit_scancode_mode) == NULL, "exit_scancode_mode = null");
  721. + ok(unibi_get_str(ut, unibi_pc_term_options) == NULL, "pc_term_options = null");
  722. + ok(unibi_get_str(ut, unibi_scancode_escape) == NULL, "scancode_escape = null");
  723. + ok(unibi_get_str(ut, unibi_alt_scancode_esc) == NULL, "alt_scancode_esc = null");
  724. + ok(unibi_get_str(ut, unibi_enter_horizontal_hl_mode) == NULL, "enter_horizontal_hl_mode = null");
  725. + ok(unibi_get_str(ut, unibi_enter_left_hl_mode) == NULL, "enter_left_hl_mode = null");
  726. + ok(unibi_get_str(ut, unibi_enter_low_hl_mode) == NULL, "enter_low_hl_mode = null");
  727. + ok(unibi_get_str(ut, unibi_enter_right_hl_mode) == NULL, "enter_right_hl_mode = null");
  728. + ok(unibi_get_str(ut, unibi_enter_top_hl_mode) == NULL, "enter_top_hl_mode = null");
  729. + ok(unibi_get_str(ut, unibi_enter_vertical_hl_mode) == NULL, "enter_vertical_hl_mode = null");
  730. + ok(unibi_get_str(ut, unibi_set_a_attributes) == NULL, "set_a_attributes = null");
  731. + ok(unibi_get_str(ut, unibi_set_pglen_inch) == NULL, "set_pglen_inch = null");
  732. + ok(unibi_get_str(ut, unibi_termcap_init2) == NULL, "termcap_init2 = null");
  733. + ok(unibi_get_str(ut, unibi_termcap_reset) == NULL, "termcap_reset = null");
  734. + ok(unibi_get_str(ut, unibi_linefeed_if_not_lf) == NULL, "linefeed_if_not_lf = null");
  735. + ok(unibi_get_str(ut, unibi_backspace_if_not_bs) == NULL, "backspace_if_not_bs = null");
  736. + ok(unibi_get_str(ut, unibi_other_non_function_keys) == NULL, "other_non_function_keys = null");
  737. + ok(unibi_get_str(ut, unibi_arrow_key_map) == NULL, "arrow_key_map = null");
  738. + ok(unibi_get_str(ut, unibi_acs_ulcorner) == NULL, "acs_ulcorner = null");
  739. + ok(unibi_get_str(ut, unibi_acs_llcorner) == NULL, "acs_llcorner = null");
  740. + ok(unibi_get_str(ut, unibi_acs_urcorner) == NULL, "acs_urcorner = null");
  741. + ok(unibi_get_str(ut, unibi_acs_lrcorner) == NULL, "acs_lrcorner = null");
  742. + ok(unibi_get_str(ut, unibi_acs_ltee) == NULL, "acs_ltee = null");
  743. + ok(unibi_get_str(ut, unibi_acs_rtee) == NULL, "acs_rtee = null");
  744. + ok(unibi_get_str(ut, unibi_acs_btee) == NULL, "acs_btee = null");
  745. + ok(unibi_get_str(ut, unibi_acs_ttee) == NULL, "acs_ttee = null");
  746. + ok(unibi_get_str(ut, unibi_acs_hline) == NULL, "acs_hline = null");
  747. + ok(unibi_get_str(ut, unibi_acs_vline) == NULL, "acs_vline = null");
  748. + ok(unibi_get_str(ut, unibi_acs_plus) == NULL, "acs_plus = null");
  749. + ok(unibi_get_str(ut, unibi_memory_lock) == NULL, "memory_lock = null");
  750. + ok(unibi_get_str(ut, unibi_memory_unlock) == NULL, "memory_unlock = null");
  751. + ok(unibi_get_str(ut, unibi_box_chars_1) == NULL, "box_chars_1 = null");
  752. +
  753. + note("extended boolean capabilities");
  754. + {
  755. + const size_t n_ext = unibi_count_ext_bool(ut);
  756. + ok(n_ext == 3, "#ext_bool = 3");
  757. + ok(0 < n_ext && unibi_get_ext_bool(ut, 0) == 1, "ext_bool[0].value = 1");
  758. + ok(0 < n_ext && strcmp(unibi_get_ext_bool_name(ut, 0), "AX") == 0, "ext_bool[0].name = \"%s\"", "AX");
  759. + unibi_add_ext_bool(dt, "AX", 1);
  760. + ok(1 < n_ext && unibi_get_ext_bool(ut, 1) == 1, "ext_bool[1].value = 1");
  761. + ok(1 < n_ext && strcmp(unibi_get_ext_bool_name(ut, 1), "G0") == 0, "ext_bool[1].name = \"%s\"", "G0");
  762. + unibi_add_ext_bool(dt, "G0", 1);
  763. + ok(2 < n_ext && unibi_get_ext_bool(ut, 2) == 0, "ext_bool[2].value = 0");
  764. + ok(2 < n_ext && strcmp(unibi_get_ext_bool_name(ut, 2), "XT") == 0, "ext_bool[2].name = \"%s\"", "XT");
  765. + unibi_add_ext_bool(dt, "XT", 0);
  766. + }
  767. +
  768. + note("extended numeric capabilities");
  769. + {
  770. + const size_t n_ext = unibi_count_ext_num(ut);
  771. + ok(n_ext == 1, "#ext_num = 1");
  772. + ok(0 < n_ext && unibi_get_ext_num(ut, 0) == 1, "ext_num[0].value = 1");
  773. + ok(0 < n_ext && strcmp(unibi_get_ext_num_name(ut, 0), "U8") == 0, "ext_num[0].name = \"%s\"", "U8");
  774. + unibi_add_ext_num(dt, "U8", 1);
  775. + }
  776. +
  777. + note("extended string capabilities");
  778. + {
  779. + const size_t n_ext = unibi_count_ext_str(ut);
  780. + ok(n_ext == 12, "#ext_str = 12");
  781. + ok(0 < n_ext && strcmp(unibi_get_ext_str(ut, 0), "\033(B") == 0, "ext_str[0].value = \"%s\"", "\\033(B");
  782. + unibi_add_ext_str(dt, "E0", "\033(B");
  783. + ok(0 < n_ext && strcmp(unibi_get_ext_str_name(ut, 0), "E0") == 0, "ext_str[0].name = \"%s\"", "E0");
  784. + ok(1 < n_ext && unibi_get_ext_str(ut, 1) == NULL, "ext_str[1].value = null");
  785. + unibi_add_ext_str(dt, "E3", NULL);
  786. + ok(1 < n_ext && strcmp(unibi_get_ext_str_name(ut, 1), "E3") == 0, "ext_str[1].name = \"%s\"", "E3");
  787. + ok(2 < n_ext && strcmp(unibi_get_ext_str(ut, 2), "\033(%p1%c") == 0, "ext_str[2].value = \"%s\"", "\\033(%p1%c");
  788. + unibi_add_ext_str(dt, "S0", "\033(%p1%c");
  789. + ok(2 < n_ext && strcmp(unibi_get_ext_str_name(ut, 2), "S0") == 0, "ext_str[2].name = \"%s\"", "S0");
  790. + ok(3 < n_ext && unibi_get_ext_str(ut, 3) == NULL, "ext_str[3].value = null");
  791. + unibi_add_ext_str(dt, "TS", NULL);
  792. + ok(3 < n_ext && strcmp(unibi_get_ext_str_name(ut, 3), "TS") == 0, "ext_str[3].name = \"%s\"", "TS");
  793. + ok(4 < n_ext && unibi_get_ext_str(ut, 4) == NULL, "ext_str[4].value = null");
  794. + unibi_add_ext_str(dt, "XM", NULL);
  795. + ok(4 < n_ext && strcmp(unibi_get_ext_str_name(ut, 4), "XM") == 0, "ext_str[4].name = \"%s\"", "XM");
  796. + ok(5 < n_ext && unibi_get_ext_str(ut, 5) == NULL, "ext_str[5].value = null");
  797. + unibi_add_ext_str(dt, "kEND5", NULL);
  798. + ok(5 < n_ext && strcmp(unibi_get_ext_str_name(ut, 5), "kEND5") == 0, "ext_str[5].name = \"%s\"", "kEND5");
  799. + ok(6 < n_ext && unibi_get_ext_str(ut, 6) == NULL, "ext_str[6].value = null");
  800. + unibi_add_ext_str(dt, "kHOM5", NULL);
  801. + ok(6 < n_ext && strcmp(unibi_get_ext_str_name(ut, 6), "kHOM5") == 0, "ext_str[6].name = \"%s\"", "kHOM5");
  802. + ok(7 < n_ext && unibi_get_ext_str(ut, 7) == NULL, "ext_str[7].value = null");
  803. + unibi_add_ext_str(dt, "ka2", NULL);
  804. + ok(7 < n_ext && strcmp(unibi_get_ext_str_name(ut, 7), "ka2") == 0, "ext_str[7].name = \"%s\"", "ka2");
  805. + ok(8 < n_ext && unibi_get_ext_str(ut, 8) == NULL, "ext_str[8].value = null");
  806. + unibi_add_ext_str(dt, "kb1", NULL);
  807. + ok(8 < n_ext && strcmp(unibi_get_ext_str_name(ut, 8), "kb1") == 0, "ext_str[8].name = \"%s\"", "kb1");
  808. + ok(9 < n_ext && unibi_get_ext_str(ut, 9) == NULL, "ext_str[9].value = null");
  809. + unibi_add_ext_str(dt, "kb3", NULL);
  810. + ok(9 < n_ext && strcmp(unibi_get_ext_str_name(ut, 9), "kb3") == 0, "ext_str[9].name = \"%s\"", "kb3");
  811. + ok(10 < n_ext && unibi_get_ext_str(ut, 10) == NULL, "ext_str[10].value = null");
  812. + unibi_add_ext_str(dt, "kc2", NULL);
  813. + ok(10 < n_ext && strcmp(unibi_get_ext_str_name(ut, 10), "kc2") == 0, "ext_str[10].name = \"%s\"", "kc2");
  814. + ok(11 < n_ext && unibi_get_ext_str(ut, 11) == NULL, "ext_str[11].value = null");
  815. + unibi_add_ext_str(dt, "xm", NULL);
  816. + ok(11 < n_ext && strcmp(unibi_get_ext_str_name(ut, 11), "xm") == 0, "ext_str[11].name = \"%s\"", "xm");
  817. + }
  818. +
  819. + {
  820. + char buf[sizeof terminfo];
  821. + size_t r = unibi_dump(ut, buf, sizeof buf);
  822. + ok(r == sizeof terminfo, "redump size == orig size");
  823. + ok(memcmp(terminfo, buf, sizeof buf) == 0, "redump == orig");
  824. + }
  825. +
  826. + {
  827. + char buf[sizeof terminfo];
  828. + size_t r = unibi_dump(dt, buf, sizeof buf);
  829. + ok(r == sizeof terminfo, "dummy redump size == orig size");
  830. + ok(memcmp(terminfo, buf, sizeof buf) == 0, "dummy redump == orig");
  831. + }
  832. +
  833. + unibi_destroy(ut);
  834. + ok(1, "object destroyed");
  835. +
  836. + unibi_destroy(dt);
  837. + ok(1, "dummy object destroyed");
  838. +
  839. + return 0;
  840. +}
  841. +
  842. +static void setup(void) {
  843. + plan(543);
  844. +}
  845. diff --git a/unibilium.c b/unibilium.c
  846. index 64472de..8586b6f 100644
  847. --- a/unibilium.c
  848. +++ b/unibilium.c
  849. @@ -339,8 +339,6 @@ unibi_term *unibi_from_mem(const char *p, size_t n) {
  850. extalllen += extnumlen;
  851. extalllen += extstrslen;
  852. - DEL_FAIL_IF(extofflen != extalllen + extstrslen, EINVAL, t);
  853. -
  854. DEL_FAIL_IF(
  855. n <
  856. extboollen +
  857. --
  858. 2.19.1