call vimtest#StartTap() call vimtap#Plan(8 + 8 + 7) " <== XXX Keep plan number updated. XXX let erex = ExtendedRegexObject('vrs#get') let t = '\<\%{_ip4_segment,4,.}\>' let t_expanded = '\<\%(25[0-5]\|2[0-4]\d\|[01]\?\d\d\?\)\.\%(25[0-5]\|2[0-4]\d\|[01]\?\d\d\?\)\.\%(25[0-5]\|2[0-4]\d\|[01]\?\d\d\?\)\.\%(25[0-5]\|2[0-4]\d\|[01]\?\d\d\?\)\>' let vim_func_pat = '^[\ :]*fu\%[nction]!\?\s*\(.\{-}\)(' call vimtap#Is(erex.expand_composition_atom(t), t_expanded, 'expand _ip4_segment') call vimtap#Is(erex.expand_composition_atom('\%{_ip4_segment,2,.}'), '\%(25[0-5]\|2[0-4]\d\|[01]\?\d\d\?\)\.\%(25[0-5]\|2[0-4]\d\|[01]\?\d\d\?\)', 'explicit count of 2 and explicit sep of dot') call vimtap#Is(erex.expand_composition_atom('\%{vim_function,1,}'), vim_func_pat, 'explicit count of 1 and explicitly empty sep') call vimtap#Is(erex.expand_composition_atom('\%{vim_function,1}'), vim_func_pat, 'explicit count of 1 and implicit sep') call vimtap#Is(erex.expand_composition_atom('\%{vim_function}'), vim_func_pat, 'implicitly expand name only') call vimtap#Is(erex.expand_composition_atom('\%{vim_function,2,}'), vim_func_pat . vim_func_pat, 'explicit count and explicitly empty sep') call vimtap#Is(erex.expand_composition_atom('\%{vim_function,2}'), vim_func_pat . vim_func_pat, 'explicit count, implicit sep') call vimtap#Is(erex.expand_composition_atom('\%{vim_function,3,\n}'), join(repeat(vim_func_pat, 3), "\n"), 'explicit literal sep') call vimtap#Is(erex.parse(t), t_expanded, 'expand _ip4_segment') call vimtap#Is(erex.parse('\%{_ip4_segment,2,.}'), '\%(25[0-5]\|2[0-4]\d\|[01]\?\d\d\?\)\.\%(25[0-5]\|2[0-4]\d\|[01]\?\d\d\?\)', 'explicit count of 2 and explicit sep of dot') call vimtap#Is(erex.parse('\%{vim_function,1,}'), vim_func_pat, 'explicit count of 1 and explicitly empty sep') call vimtap#Is(erex.parse('\%{vim_function,1}'), vim_func_pat, 'explicit count of 1 and implicit sep') call vimtap#Is(erex.parse('\%{vim_function}'), vim_func_pat, 'expand name only') call vimtap#Is(erex.parse('\%{vim_function,2,}'), vim_func_pat . vim_func_pat, 'explicit count and explicitly empty sep') call vimtap#Is(erex.parse('\%{vim_function,2}'), vim_func_pat . vim_func_pat, 'explicit count, implicit sep') call vimtap#Is(erex.parse('\%{vim_function,3,\n}'), join(repeat(vim_func_pat, 3), "\n"), 'explicit literal sep') " with spaces let t = '\<\%{_ip4_segment, 4, .}\>' call vimtap#Is( erex.parse(t), t_expanded, 'expand _ip4_segment with spaces') call vimtap#Is( erex.parse('\%{vim_function , 1 , }'), vim_func_pat, 'expand explicitly empty sep with spaces') call vimtap#Is( erex.parse('\%{vim_function ,1}'), vim_func_pat, 'expand implicit sep with spaces') call vimtap#Is( erex.parse('\%{vim_function }'), vim_func_pat, 'expand name only with space') call vimtap#Is( erex.parse('\%{vim_function, 2, }'), vim_func_pat . vim_func_pat, 'expand count of 2 and explicitly empty sep with spaces') call vimtap#Is( erex.parse('\%{vim_function , 2}'), vim_func_pat . vim_func_pat, 'expand count of 2 and implicit sep with spaces') call vimtap#Is( erex.parse('\%{ vim_function , 3 , \n }'), join(repeat(vim_func_pat, 3), "\n"), 'expand count of 3 and explicit of \\n sep with spaces') call vimtest#Quit()