github.com/hairyhenderson/templater@v3.5.0+incompatible/funcs/regexp_test.go (about) 1 package funcs 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 func TestReplace(t *testing.T) { 10 re := &ReFuncs{} 11 assert.Equal(t, "hello world", re.Replace("i", "ello", "hi world")) 12 } 13 14 func TestMatch(t *testing.T) { 15 re := &ReFuncs{} 16 assert.True(t, re.Match(`i\ `, "hi world")) 17 } 18 19 func TestFind(t *testing.T) { 20 re := &ReFuncs{} 21 f, err := re.Find(`[a-z]+`, `foo bar baz`) 22 assert.NoError(t, err) 23 assert.Equal(t, "foo", f) 24 25 _, err = re.Find(`[a-`, "") 26 assert.Error(t, err) 27 28 f, err = re.Find("4", 42) 29 assert.NoError(t, err) 30 assert.Equal(t, "4", f) 31 32 f, err = re.Find(false, 42) 33 assert.NoError(t, err) 34 assert.Equal(t, "", f) 35 } 36 37 func TestFindAll(t *testing.T) { 38 re := &ReFuncs{} 39 f, err := re.FindAll(`[a-z]+`, `foo bar baz`) 40 assert.NoError(t, err) 41 assert.EqualValues(t, []string{"foo", "bar", "baz"}, f) 42 43 f, err = re.FindAll(`[a-z]+`, -1, `foo bar baz`) 44 assert.NoError(t, err) 45 assert.EqualValues(t, []string{"foo", "bar", "baz"}, f) 46 47 _, err = re.FindAll(`[a-`, "") 48 assert.Error(t, err) 49 50 _, err = re.FindAll("") 51 assert.Error(t, err) 52 53 _, err = re.FindAll("", "", "", "") 54 assert.Error(t, err) 55 56 f, err = re.FindAll(`[a-z]+`, 0, `foo bar baz`) 57 assert.NoError(t, err) 58 assert.Nil(t, f) 59 60 f, err = re.FindAll(`[a-z]+`, 2, `foo bar baz`) 61 assert.NoError(t, err) 62 assert.EqualValues(t, []string{"foo", "bar"}, f) 63 64 f, err = re.FindAll(`[a-z]+`, 14, `foo bar baz`) 65 assert.NoError(t, err) 66 assert.EqualValues(t, []string{"foo", "bar", "baz"}, f) 67 68 f, err = re.FindAll(`qux`, `foo bar baz`) 69 assert.NoError(t, err) 70 assert.Nil(t, f) 71 } 72 73 func TestSplit(t *testing.T) { 74 re := &ReFuncs{} 75 f, err := re.Split(` `, `foo bar baz`) 76 assert.NoError(t, err) 77 assert.EqualValues(t, []string{"foo", "bar", "baz"}, f) 78 79 f, err = re.Split(`\s+`, -1, `foo bar baz`) 80 assert.NoError(t, err) 81 assert.EqualValues(t, []string{"foo", "bar", "baz"}, f) 82 83 _, err = re.Split(`[a-`, "") 84 assert.Error(t, err) 85 86 _, err = re.Split("") 87 assert.Error(t, err) 88 89 _, err = re.Split("", "", "", "") 90 assert.Error(t, err) 91 92 f, err = re.Split(` `, 0, `foo bar baz`) 93 assert.NoError(t, err) 94 assert.Nil(t, f) 95 96 f, err = re.Split(`\s+`, 2, `foo bar baz`) 97 assert.NoError(t, err) 98 assert.EqualValues(t, []string{"foo", "bar baz"}, f) 99 100 f, err = re.Split(`\s`, 14, `foo bar baz`) 101 assert.NoError(t, err) 102 assert.EqualValues(t, []string{"foo", "", "bar", "baz"}, f) 103 104 f, err = re.Split(`[\s,.]`, 14, `foo bar.baz,qux`) 105 assert.NoError(t, err) 106 assert.EqualValues(t, []string{"foo", "bar", "baz", "qux"}, f) 107 } 108 109 func TestReplaceLiteral(t *testing.T) { 110 re := &ReFuncs{} 111 r, err := re.ReplaceLiteral("i", "ello$1", "hi world") 112 assert.NoError(t, err) 113 assert.Equal(t, "hello$1 world", r) 114 }