From 04817c7b83e4b555ee22e21dadc0b8ddaf6423a0 Mon Sep 17 00:00:00 2001 From: Xin Fan Date: Fri, 20 Mar 2015 13:44:53 +1100 Subject: Add Substr and Split template functions Both of these can take any type the cast lib can turn into a string. --- tpl/template_test.go | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'tpl/template_test.go') diff --git a/tpl/template_test.go b/tpl/template_test.go index 0c9a1ac91..9a8b0a089 100644 --- a/tpl/template_test.go +++ b/tpl/template_test.go @@ -276,6 +276,63 @@ func TestIn(t *testing.T) { } } +func TestSubstr(t *testing.T) { + for i, this := range []struct { + v1 interface{} + v2 int + v3 int + expect string + }{ + {"abc", 1, 2, "b"}, + {"abc", 1, 3, "bc"}, + {"abc", 0, 1, "a"}, + } { + result, err := Substr(this.v1, this.v2, this.v3) + + if err != nil { + t.Errorf("[%d] failed: %s", i, err) + continue + } + + if result != this.expect { + t.Errorf("[%d] Got %v but expected %v", i, result, this.expect) + } + } + + _, err := Substr(tstNoStringer{}, 0, 1) + if err == nil { + t.Error("Expected error for non-string-convertable variable") + } +} + +func TestSplit(t *testing.T) { + for i, this := range []struct { + v1 interface{} + v2 string + expect []string + }{ + {"a, b", ", ", []string{"a", "b"}}, + {"a & b & c", " & ", []string{"a", "b", "c"}}, + {"http://exmaple.com", "http://", []string{"", "exmaple.com"}}, + } { + result, err := Split(this.v1, this.v2) + + if err != nil { + t.Errorf("[%d] failed: %s", i, err) + continue + } + + if !reflect.DeepEqual(result, this.expect) { + t.Errorf("[%d] Got %s but expected %s", i, result, this.expect) + } + } + + _, err := Split(tstNoStringer{}, ",") + if err == nil { + t.Error("Expected error for non-string-convertable variable") + } +} + func TestIntersect(t *testing.T) { for i, this := range []struct { sequence1 interface{} -- cgit v1.2.3