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  }