...

Source file src/github.com/thoas/go-funk/presence_test.go

Documentation: github.com/thoas/go-funk

     1  package funk
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  var f = &Foo{
    10  	ID:        1,
    11  	FirstName: "Dark",
    12  	LastName:  "Vador",
    13  	Age:       30,
    14  	Bar: &Bar{
    15  		Name: "Test",
    16  	},
    17  }
    18  
    19  var b = &Foo{
    20  	ID:        2,
    21  	FirstName: "Florent",
    22  	LastName:  "Messa",
    23  	Age:       28,
    24  }
    25  var c = &Foo{
    26  	ID:        3,
    27  	FirstName: "Harald",
    28  	LastName:  "Nordgren",
    29  	Age:       27,
    30  }
    31  
    32  var results = []*Foo{f, c}
    33  
    34  type Person struct {
    35  	name string
    36  	age  int
    37  }
    38  
    39  func TestContains(t *testing.T) {
    40  	is := assert.New(t)
    41  
    42  	is.True(Contains([]string{"foo", "bar"}, "bar"))
    43  	is.True(Contains([...]string{"foo", "bar"}, "bar"))
    44  	is.Panics(func() { Contains(1, 2) })
    45  
    46  	is.True(Contains(results, f))
    47  	is.False(Contains(results, nil))
    48  	is.False(Contains(results, b))
    49  
    50  	is.True(Contains("florent", "rent"))
    51  	is.False(Contains("florent", "gilles"))
    52  
    53  	mapping := ToMap(results, "ID")
    54  
    55  	is.True(Contains(mapping, 1))
    56  	is.False(Contains(mapping, 2))
    57  
    58  	is.False(Contains(mapping, func (key int, val *Foo) bool {
    59  		return key == 4
    60  	}))
    61  	is.True(Contains(mapping, func (key int, val *Foo) bool {
    62  		return key == 1
    63  	}))
    64  
    65  	is.False(Contains(mapping, func (_ int, val *Foo) bool {
    66  		return val.FirstName == "NotPresent"
    67  	}))
    68  	is.True(Contains(mapping, func (_ int, val *Foo) bool {
    69  		return val.FirstName == "Harald"
    70  	}))
    71  }
    72  
    73  func TestEvery(t *testing.T) {
    74  	is := assert.New(t)
    75  
    76  	is.True(Every([]string{"foo", "bar", "baz"}, "bar", "foo"))
    77  
    78  	is.True(Every(results, f, c))
    79  	is.False(Every(results, nil))
    80  	is.False(Every(results, f, b))
    81  
    82  	is.True(Every("florent", "rent", "flo"))
    83  	is.False(Every("florent", "rent", "gilles"))
    84  
    85  	mapping := ToMap(results, "ID")
    86  
    87  	is.True(Every(mapping, 1, 3))
    88  	is.False(Every(mapping, 2, 3))
    89  }
    90  
    91  func TestSome(t *testing.T) {
    92  	is := assert.New(t)
    93  
    94  	is.True(Some([]string{"foo", "bar", "baz"}, "foo"))
    95  	is.True(Some([]string{"foo", "bar", "baz"}, "foo", "qux"))
    96  
    97  	is.True(Some(results, f))
    98  	is.False(Some(results, b))
    99  	is.False(Some(results, nil))
   100  	is.True(Some(results, f, b))
   101  
   102  	is.True(Some("zeeshan", "zee", "tam"))
   103  	is.False(Some("zeeshan", "zi", "tam"))
   104  
   105  	persons := []Person{
   106  		Person{
   107  			name: "Zeeshan",
   108  			age:  23,
   109  		},
   110  		Person{
   111  			name: "Bob",
   112  			age:  26,
   113  		},
   114  	}
   115  
   116  	person := Person{"Zeeshan", 23}
   117  	person2 := Person{"Alice", 23}
   118  	person3 := Person{"John", 26}
   119  
   120  	is.True(Some(persons, person, person2))
   121  	is.False(Some(persons, person2, person3))
   122  
   123  	mapping := ToMap(results, "ID")
   124  
   125  	is.True(Some(mapping, 1, 2))
   126  	is.True(Some(mapping, 4, 1))
   127  	is.False(Some(mapping, 4, 5))
   128  }
   129  
   130  func TestIndexOf(t *testing.T) {
   131  	is := assert.New(t)
   132  
   133  	is.Equal(IndexOf([]string{"foo", "bar"}, "bar"), 1)
   134  	is.Equal(IndexOf([]string{"foo", "bar"}, func (value string) bool {
   135  		return value == "bar"
   136  	}), 1)
   137  
   138  	is.Equal(IndexOf(results, f), 0)
   139  	is.Equal(IndexOf(results, b), -1)
   140  }
   141  
   142  func TestLastIndexOf(t *testing.T) {
   143  	is := assert.New(t)
   144  
   145  	is.Equal(LastIndexOf([]string{"foo", "bar", "bar"}, "bar"), 2)
   146  	is.Equal(LastIndexOf([]string{"foo", "bar", "bar"}, func (value string) bool {
   147  		return value == "bar"
   148  	}), 2)
   149  	is.Equal(LastIndexOf([]int{1, 2, 2, 3}, 2), 2)
   150  	is.Equal(LastIndexOf([]int{1, 2, 2, 3}, 4), -1)
   151  }
   152  
   153  func TestFilter(t *testing.T) {
   154  	is := assert.New(t)
   155  
   156  	r := Filter([]int{1, 2, 3, 4}, func(x int) bool {
   157  		return x%2 == 0
   158  	})
   159  
   160  	is.Equal(r, []int{2, 4})
   161  }
   162  
   163  func TestFind(t *testing.T) {
   164  	is := assert.New(t)
   165  
   166  	r := Find([]int{1, 2, 3, 4}, func(x int) bool {
   167  		return x%2 == 0
   168  	})
   169  
   170  	is.Equal(r, 2)
   171  
   172  }
   173  func TestFindKey(t *testing.T) {
   174  	is := assert.New(t)
   175  
   176  	k, r := FindKey(map[string]int{"a": 1, "b": 2, "c": 3, "d": 4}, func(x int) bool {
   177  		return x == 2
   178  	})
   179  
   180  	is.Equal(r, 2)
   181  	is.Equal(k, "b")
   182  
   183  	k1, r1 := FindKey([]int{1, 2, 3, 4}, func(x int) bool {
   184  		return x%2 == 0
   185  	})
   186  	is.Equal(r1, 2)
   187  	is.Equal(k1, 1)
   188  }
   189  

View as plain text