syn_attr_spec.lua 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. local t = require('test.testutil')
  2. local n = require('test.functional.testnvim')()
  3. local clear = n.clear
  4. local command = n.command
  5. local eq = t.eq
  6. local eval = n.eval
  7. -- oldtest: Test_missing_attr()
  8. describe('synIDattr()', function()
  9. setup(clear)
  10. local bool_attrs = {
  11. 'bold',
  12. 'italic',
  13. 'reverse',
  14. 'standout',
  15. 'underline',
  16. 'undercurl',
  17. 'underdouble',
  18. 'underdotted',
  19. 'underdashed',
  20. 'strikethrough',
  21. 'nocombine',
  22. }
  23. describe(':hi Mine cterm=NONE gui=NONE', function()
  24. setup(function()
  25. command(':hi Mine cterm=NONE gui=NONE')
  26. end)
  27. it('"name"', function()
  28. eq('Mine', eval([[synIDattr(hlID("Mine"), "name")]]))
  29. end)
  30. local function none_test(attr, mode)
  31. it(('"%s"'):format(attr), function()
  32. eq('', eval(([[synIDattr(hlID("Mine"), "%s", '%s')]]):format(attr, mode)))
  33. end)
  34. end
  35. for _, mode in ipairs({ 'cterm', 'gui' }) do
  36. describe(('"%s"'):format(mode), function()
  37. for _, attr in ipairs(bool_attrs) do
  38. none_test(attr, mode)
  39. end
  40. for _, attr in ipairs({ 'inverse', 'bg', 'fg', 'sp' }) do
  41. none_test(attr, mode)
  42. end
  43. end)
  44. end
  45. end)
  46. local function attr_test(attr1, attr2)
  47. local cmd = (':hi Mine cterm=%s gui=%s'):format(attr1, attr2)
  48. it(cmd, function()
  49. command(cmd)
  50. eq('1', eval(([[synIDattr("Mine"->hlID(), "%s", 'cterm')]]):format(attr1)))
  51. eq('', eval(([[synIDattr(hlID("Mine"), "%s", 'cterm')]]):format(attr2)))
  52. eq('', eval(([[synIDattr("Mine"->hlID(), "%s", 'gui')]]):format(attr1)))
  53. eq('1', eval(([[synIDattr(hlID("Mine"), "%s", 'gui')]]):format(attr2)))
  54. end)
  55. end
  56. for i, attr1 in ipairs(bool_attrs) do
  57. local attr2 = bool_attrs[i - 1] or bool_attrs[#bool_attrs]
  58. attr_test(attr1, attr2)
  59. attr_test(attr2, attr1)
  60. end
  61. it(':hi Mine cterm=reverse gui=inverse', function()
  62. command(':hi Mine cterm=reverse gui=inverse')
  63. eq('1', eval([[synIDattr(hlID("Mine"), "reverse", 'cterm')]]))
  64. eq('1', eval([[synIDattr(hlID("Mine"), "inverse", 'cterm')]]))
  65. eq('1', eval([[synIDattr(hlID("Mine"), "reverse", 'gui')]]))
  66. eq('1', eval([[synIDattr(hlID("Mine"), "inverse", 'gui')]]))
  67. end)
  68. end)