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