utility_functions_spec.lua 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. -- Test suite for testing interactions with API bindings
  2. local helpers = require('test.functional.helpers')(after_each)
  3. local funcs = helpers.funcs
  4. local clear = helpers.clear
  5. local eq = helpers.eq
  6. before_each(clear)
  7. describe('vim.stricmp', function()
  8. -- İ: `tolower("İ")` is `i` which has length 1 while `İ` itself has
  9. -- length 2 (in bytes).
  10. -- Ⱥ: `tolower("Ⱥ")` is `ⱥ` which has length 2 while `Ⱥ` itself has
  11. -- length 3 (in bytes).
  12. --
  13. -- Note: 'i' !=? 'İ' and 'ⱥ' !=? 'Ⱥ' on some systems.
  14. -- Note: Built-in Nvim comparison (on systems lacking `strcasecmp`) works
  15. -- only on ASCII characters.
  16. it('works', function()
  17. eq(0, funcs.luaeval('vim.stricmp("a", "A")'))
  18. eq(0, funcs.luaeval('vim.stricmp("A", "a")'))
  19. eq(0, funcs.luaeval('vim.stricmp("a", "a")'))
  20. eq(0, funcs.luaeval('vim.stricmp("A", "A")'))
  21. eq(0, funcs.luaeval('vim.stricmp("", "")'))
  22. eq(0, funcs.luaeval('vim.stricmp("\\0", "\\0")'))
  23. eq(0, funcs.luaeval('vim.stricmp("\\0\\0", "\\0\\0")'))
  24. eq(0, funcs.luaeval('vim.stricmp("\\0\\0\\0", "\\0\\0\\0")'))
  25. eq(0, funcs.luaeval('vim.stricmp("\\0\\0\\0A", "\\0\\0\\0a")'))
  26. eq(0, funcs.luaeval('vim.stricmp("\\0\\0\\0a", "\\0\\0\\0A")'))
  27. eq(0, funcs.luaeval('vim.stricmp("\\0\\0\\0a", "\\0\\0\\0a")'))
  28. eq(0, funcs.luaeval('vim.stricmp("a\\0", "A\\0")'))
  29. eq(0, funcs.luaeval('vim.stricmp("A\\0", "a\\0")'))
  30. eq(0, funcs.luaeval('vim.stricmp("a\\0", "a\\0")'))
  31. eq(0, funcs.luaeval('vim.stricmp("A\\0", "A\\0")'))
  32. eq(0, funcs.luaeval('vim.stricmp("\\0a", "\\0A")'))
  33. eq(0, funcs.luaeval('vim.stricmp("\\0A", "\\0a")'))
  34. eq(0, funcs.luaeval('vim.stricmp("\\0a", "\\0a")'))
  35. eq(0, funcs.luaeval('vim.stricmp("\\0A", "\\0A")'))
  36. eq(0, funcs.luaeval('vim.stricmp("\\0a\\0", "\\0A\\0")'))
  37. eq(0, funcs.luaeval('vim.stricmp("\\0A\\0", "\\0a\\0")'))
  38. eq(0, funcs.luaeval('vim.stricmp("\\0a\\0", "\\0a\\0")'))
  39. eq(0, funcs.luaeval('vim.stricmp("\\0A\\0", "\\0A\\0")'))
  40. eq(-1, funcs.luaeval('vim.stricmp("a", "B")'))
  41. eq(-1, funcs.luaeval('vim.stricmp("A", "b")'))
  42. eq(-1, funcs.luaeval('vim.stricmp("a", "b")'))
  43. eq(-1, funcs.luaeval('vim.stricmp("A", "B")'))
  44. eq(-1, funcs.luaeval('vim.stricmp("", "\\0")'))
  45. eq(-1, funcs.luaeval('vim.stricmp("\\0", "\\0\\0")'))
  46. eq(-1, funcs.luaeval('vim.stricmp("\\0\\0", "\\0\\0\\0")'))
  47. eq(-1, funcs.luaeval('vim.stricmp("\\0\\0\\0A", "\\0\\0\\0b")'))
  48. eq(-1, funcs.luaeval('vim.stricmp("\\0\\0\\0a", "\\0\\0\\0B")'))
  49. eq(-1, funcs.luaeval('vim.stricmp("\\0\\0\\0a", "\\0\\0\\0b")'))
  50. eq(-1, funcs.luaeval('vim.stricmp("a\\0", "B\\0")'))
  51. eq(-1, funcs.luaeval('vim.stricmp("A\\0", "b\\0")'))
  52. eq(-1, funcs.luaeval('vim.stricmp("a\\0", "b\\0")'))
  53. eq(-1, funcs.luaeval('vim.stricmp("A\\0", "B\\0")'))
  54. eq(-1, funcs.luaeval('vim.stricmp("\\0a", "\\0B")'))
  55. eq(-1, funcs.luaeval('vim.stricmp("\\0A", "\\0b")'))
  56. eq(-1, funcs.luaeval('vim.stricmp("\\0a", "\\0b")'))
  57. eq(-1, funcs.luaeval('vim.stricmp("\\0A", "\\0B")'))
  58. eq(-1, funcs.luaeval('vim.stricmp("\\0a\\0", "\\0B\\0")'))
  59. eq(-1, funcs.luaeval('vim.stricmp("\\0A\\0", "\\0b\\0")'))
  60. eq(-1, funcs.luaeval('vim.stricmp("\\0a\\0", "\\0b\\0")'))
  61. eq(-1, funcs.luaeval('vim.stricmp("\\0A\\0", "\\0B\\0")'))
  62. eq(1, funcs.luaeval('vim.stricmp("c", "B")'))
  63. eq(1, funcs.luaeval('vim.stricmp("C", "b")'))
  64. eq(1, funcs.luaeval('vim.stricmp("c", "b")'))
  65. eq(1, funcs.luaeval('vim.stricmp("C", "B")'))
  66. eq(1, funcs.luaeval('vim.stricmp("\\0", "")'))
  67. eq(1, funcs.luaeval('vim.stricmp("\\0\\0", "\\0")'))
  68. eq(1, funcs.luaeval('vim.stricmp("\\0\\0\\0", "\\0\\0")'))
  69. eq(1, funcs.luaeval('vim.stricmp("\\0\\0\\0\\0", "\\0\\0\\0")'))
  70. eq(1, funcs.luaeval('vim.stricmp("\\0\\0\\0C", "\\0\\0\\0b")'))
  71. eq(1, funcs.luaeval('vim.stricmp("\\0\\0\\0c", "\\0\\0\\0B")'))
  72. eq(1, funcs.luaeval('vim.stricmp("\\0\\0\\0c", "\\0\\0\\0b")'))
  73. eq(1, funcs.luaeval('vim.stricmp("c\\0", "B\\0")'))
  74. eq(1, funcs.luaeval('vim.stricmp("C\\0", "b\\0")'))
  75. eq(1, funcs.luaeval('vim.stricmp("c\\0", "b\\0")'))
  76. eq(1, funcs.luaeval('vim.stricmp("C\\0", "B\\0")'))
  77. eq(1, funcs.luaeval('vim.stricmp("c\\0", "B")'))
  78. eq(1, funcs.luaeval('vim.stricmp("C\\0", "b")'))
  79. eq(1, funcs.luaeval('vim.stricmp("c\\0", "b")'))
  80. eq(1, funcs.luaeval('vim.stricmp("C\\0", "B")'))
  81. eq(1, funcs.luaeval('vim.stricmp("\\0c", "\\0B")'))
  82. eq(1, funcs.luaeval('vim.stricmp("\\0C", "\\0b")'))
  83. eq(1, funcs.luaeval('vim.stricmp("\\0c", "\\0b")'))
  84. eq(1, funcs.luaeval('vim.stricmp("\\0C", "\\0B")'))
  85. eq(1, funcs.luaeval('vim.stricmp("\\0c\\0", "\\0B\\0")'))
  86. eq(1, funcs.luaeval('vim.stricmp("\\0C\\0", "\\0b\\0")'))
  87. eq(1, funcs.luaeval('vim.stricmp("\\0c\\0", "\\0b\\0")'))
  88. eq(1, funcs.luaeval('vim.stricmp("\\0C\\0", "\\0B\\0")'))
  89. end)
  90. end)