diff --git a/lists/arraylist/arraylist.go b/lists/arraylist/arraylist.go index f9e3543..e2fbcec 100644 --- a/lists/arraylist/arraylist.go +++ b/lists/arraylist/arraylist.go @@ -98,6 +98,18 @@ func (list *List) Values() []interface{} { return newElements } +//IndexOf returns index of provided element +func (list *List) IndexOf(value interface{}) int{ + if list.size == 0 { + return -1 + } + for index, element := range list.elements { + if element == value { + return index + } + } + return -1 +} // Empty returns true if list does not contain any elements. func (list *List) Empty() bool { return list.size == 0 diff --git a/lists/arraylist/arraylist_test.go b/lists/arraylist/arraylist_test.go index 58fd8b1..abbb2aa 100644 --- a/lists/arraylist/arraylist_test.go +++ b/lists/arraylist/arraylist_test.go @@ -6,8 +6,9 @@ package arraylist import ( "fmt" - "github.com/emirpasic/gods/utils" "testing" + + "github.com/emirpasic/gods/utils" ) func TestListAdd(t *testing.T) { @@ -25,6 +26,33 @@ func TestListAdd(t *testing.T) { } } +func TestListIndexOf(t *testing.T) { + list := New() + + expectedIndex := -1 + if index := list.IndexOf("a"); index != expectedIndex{ + t.Errorf("Got %v expected %v",index,expectedIndex) + } + + list.Add("a") + list.Add("b", "c") + + expectedIndex = 0 + if index := list.IndexOf("a"); index != expectedIndex{ + t.Errorf("Got %v expected %v",index,expectedIndex) + } + + expectedIndex = 1 + if index := list.IndexOf("b"); index != expectedIndex{ + t.Errorf("Got %v expected %v",index,expectedIndex) + } + + expectedIndex = 2 + if index := list.IndexOf("c"); index != expectedIndex{ + t.Errorf("Got %v expected %v",index,expectedIndex) + } +} + func TestListRemove(t *testing.T) { list := New() list.Add("a")