From b808a2eb1adb642c303f11358549ae4ad3ffdcee Mon Sep 17 00:00:00 2001 From: kiinoo_mac Date: Tue, 6 Nov 2018 21:21:40 +0800 Subject: [PATCH 1/2] RIGHT() function should return substr counting from right rather than left --- pkg/stdlib/strings/substr.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 } From de37017ce1337e71e606d2ca4e3a060e5381aa48 Mon Sep 17 00:00:00 2001 From: lushibi Date: Wed, 7 Nov 2018 10:29:57 +0800 Subject: [PATCH 2/2] fix test for Right and Left function --- pkg/stdlib/strings/substr_test.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) 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), )