//go:build amd64 || arm64
** Copyright (C) 2001-2025 Zabbix SIA
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
** See the GNU Affero General Public License for more details.
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
func TestParseKey(t *testing.T) {
Result{input: `key`, key: `key`, params: []string{}},
Result{input: `key[]`, key: `key`, params: []string{``}},
Result{input: `key[""]`, key: `key`, params: []string{``}},
Result{input: `key[ ]`, key: `key`, params: []string{``}},
Result{input: `key[ ""]`, key: `key`, params: []string{``}},
Result{input: `key[ "" ]`, key: `key`, params: []string{``}},
Result{input: `key[a]`, key: `key`, params: []string{`a`}},
Result{input: `key[ a]`, key: `key`, params: []string{`a`}},
Result{input: `key[ a ]`, key: `key`, params: []string{`a `}},
Result{input: `key["a"]`, key: `key`, params: []string{`a`}},
Result{input: `key["a",]`, key: `key`, params: []string{`a`, ``}},
Result{input: `key[a,]`, key: `key`, params: []string{`a`, ``}},
Result{input: `key[a,b,c]`, key: `key`, params: []string{`a`, `b`, `c`}},
Result{input: `key["a","b","c"]`, key: `key`, params: []string{`a`, `b`, `c`}},
Result{input: `key[a,[b,c]]`, key: `key`, params: []string{`a`, `b,c`}},
Result{input: `key[a,[b,]]`, key: `key`, params: []string{`a`, `b,`}},
Result{input: `key[a,b[c]`, key: `key`, params: []string{`a`, `b[c`}},
Result{input: `key["a","b",["c","d\",]"]]`, key: `key`, params: []string{`a`, `b`, `"c","d\",]"`}},
Result{input: `key["a","b",["c","d\",]"],[e,f]]`, key: `key`, params: []string{`a`, `b`, `"c","d\",]"`, `e,f`}},
Result{input: `key[a"b"]`, key: `key`, params: []string{`a"b"`}},
Result{input: `key["a",b"c",d]`, key: `key`, params: []string{`a`, `b"c"`, `d`}},
Result{input: `key["\"aaa\"", "bbb","ccc" , "ddd" ,"", "","" , "" ,, , ,eee, fff,ggg , hhh" ]`, key: `key`,
params: []string{`"aaa"`, `bbb`, `ccc`, `ddd`, ``, ``, ``, ``, ``, ``, ``, `eee`, `fff`, `ggg `, `hhh" `}},
Result{input: `key[["a",]`, failed: true},
Result{input: `key[[a"]"]`, failed: true},
Result{input: `key[["a","\"b\"]"]`, failed: true},
Result{input: `key["a",["b","c\"]"]]]`, failed: true},
Result{input: `key[a ]]`, failed: true},
Result{input: `key[ a]]`, failed: true},
Result{input: `key[ГУГЛ]654`, failed: true},
Result{input: `{}key`, failed: true},