diff --git a/pkg/stdlib/strings/substr.go b/pkg/stdlib/strings/substr.go index fc7d252b..d229f350 100644 --- a/pkg/stdlib/strings/substr.go +++ b/pkg/stdlib/strings/substr.go @@ -105,5 +105,5 @@ func Right(_ context.Context, args ...core.Value) (core.Value, error) { return values.NewString(string(text)), nil } - return values.NewStringFromRunes(runes[pos:size]), nil + return values.NewStringFromRunes(runes[size-pos : size]), nil } diff --git a/pkg/stdlib/strings/substr_test.go b/pkg/stdlib/strings/substr_test.go index 26e8ae35..abaf784b 100644 --- a/pkg/stdlib/strings/substr_test.go +++ b/pkg/stdlib/strings/substr_test.go @@ -2,10 +2,11 @@ package strings_test import ( "context" + "testing" + "github.com/MontFerret/ferret/pkg/runtime/values" "github.com/MontFerret/ferret/pkg/stdlib/strings" . "github.com/smartystreets/goconvey/convey" - "testing" ) func TestSubstring(t *testing.T) { @@ -72,10 +73,10 @@ func TestLeft(t *testing.T) { }) }) - Convey("Left('foobar', 3) should return 'foo'", t, func() { + Convey("Left('foobarfoobar', 3) should return 'foo'", t, func() { out, _ := strings.Left( context.Background(), - values.NewString("foobar"), + values.NewString("foobarfoobar"), values.NewInt(3), ) @@ -107,10 +108,10 @@ func TestRight(t *testing.T) { }) }) - Convey("Right('foobar', 3) should return 'bar'", t, func() { + Convey("Right('foobarfoobar', 3) should return 'bar'", t, func() { out, _ := strings.Right( context.Background(), - values.NewString("foobar"), + values.NewString("foobarfoobar"), values.NewInt(3), )