test case: "successfully found low-level discovery function macros token"
expression: '{{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)}'
token_type: ZBX_TOKEN_LLD_FUNC_MACRO
test case: "invalid low-level discovery function macros token"
expression: '{{#}.regsub("(.*)_([0-9]+)", \1)}'
test case: "successfully found function macros token"
expression: '{{ITEM.LASTVALUE}.regsub("App([0-9]) ([a-z]+)","App\1")}'
token_type: ZBX_TOKEN_FUNC_MACRO
test case: "invalid function macros token"
expression: '{{}.regsub("App([0-9]) ([a-z]+)","App\1")}'
test case: "successfully found user macros token"
expression: '{$MACRO:"A"}'
token_type: ZBX_TOKEN_USER_MACRO
test case: "invalid user macros token"
test case: "LLD macro with function"
expression: '{{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)}'
token: '{{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)}'
token_type: ZBX_TOKEN_LLD_FUNC_MACRO
func: 'regsub("(.*)_([0-9]+)", \1)'
param: '("(.*)_([0-9]+)", \1)'
test case: "LLD macro with function, with text before"
expression: 'Dummy {{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)}'
token: '{{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)}'
token_type: ZBX_TOKEN_LLD_FUNC_MACRO
func: 'regsub("(.*)_([0-9]+)", \1)'
param: '("(.*)_([0-9]+)", \1)'
test case: "LLD macro with function, with text after"
expression: '{{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)}dummy'
token: '{{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)}'
token_type: ZBX_TOKEN_LLD_FUNC_MACRO