// Copyright (c) 2024 Celestino Amoroso (celestino.amoroso@gmail.com). // All rights reserved. // t_func-string_test.go package expr import ( "errors" "testing" ) func TestFuncString(t *testing.T) { section := "Func-String" inputs := []inputType{ /* 1 */ {`builtin "string"; joinStr("-", "one", "two", "three")`, "one-two-three", nil}, /* 2 */ {`builtin "string"; joinStr("-", ["one", "two", "three"])`, "one-two-three", nil}, /* 3 */ {`builtin "string"; ls= ["one", "two", "three"]; joinStr("-", ls)`, "one-two-three", nil}, /* 4 */ {`builtin "string"; ls= ["one", "two", "three"]; joinStr(1, ls)`, nil, errors.New(`joinStr() the "separator" parameter must be a string, got a int64 (1)`)}, /* 5 */ {`builtin "string"; ls= ["one", 2, "three"]; joinStr("-", ls)`, nil, errors.New(`joinStr() expected string, got int64 (2)`)}, /* 6 */ {`builtin "string"; "<"+trimStr(" bye bye ")+">"`, "<bye bye>", nil}, /* 7 */ {`builtin "string"; subStr("0123456789", 1,2)`, "12", nil}, /* 8 */ {`builtin "string"; subStr("0123456789", -3,2)`, "78", nil}, /* 9 */ {`builtin "string"; subStr("0123456789", -3)`, "789", nil}, /* 10 */ {`builtin "string"; subStr("0123456789")`, "0123456789", nil}, /* 11 */ {`builtin "string"; startsWithStr("0123456789", "xyz", "012")`, true, nil}, /* 12 */ {`builtin "string"; startsWithStr("0123456789", "xyz", "0125")`, false, nil}, /* 13 */ {`builtin "string"; startsWithStr("0123456789")`, nil, errors.New(`startsWithStr(): too few params -- expected 2 or more, got 1`)}, /* 14 */ {`builtin "string"; endsWithStr("0123456789", "xyz", "789")`, true, nil}, /* 15 */ {`builtin "string"; endsWithStr("0123456789", "xyz", "0125")`, false, nil}, /* 16 */ {`builtin "string"; endsWithStr("0123456789")`, nil, errors.New(`endsWithStr(): too few params -- expected 2 or more, got 1`)}, /* 17 */ {`builtin "string"; splitStr("one-two-three", "-")`, newListA("one", "two", "three"), nil}, /* 18 */ {`builtin "string"; joinStr("-", [1, "two", "three"])`, nil, errors.New(`joinStr() expected string, got int64 (1)`)}, /* 19 */ {`builtin "string"; joinStr()`, nil, errors.New(`joinStr(): too few params -- expected 1 or more, got 0`)}, /* 69 */ /*{`builtin "string"; $$global`, `vars: { } funcs: { add(any=0 ...) -> number, dec(any) -> decimal, endsWithStr(source, suffix) -> boolean, fract(any, denominator=1) -> fraction, import( ...) -> any, importAll( ...) -> any, int(any) -> integer, isBool(any) -> boolean, isDec(any) -> boolean, isDict(any) -> boolean, isFloat(any) -> boolean, isFract(any) -> boolean, isInt(any) -> boolean, isList(any) -> boolean, isNil(any) -> boolean, isString(any) -> boolean, joinStr(separator, item="" ...) -> string, mul(any=1 ...) -> number, splitStr(source, separator="", count=-1) -> list of string, startsWithStr(source, prefix) -> boolean, subStr(source, start=0, count=-1) -> string, trimStr(source) -> string } `, nil},*/ } //t.Setenv("EXPR_PATH", ".") // parserTestSpec(t, "Func", inputs, 69) parserTest(t, section, inputs) }