Skip to content

Commit

Permalink
Added tests for pathitemlist.go and struct.go
Browse files Browse the repository at this point in the history
  • Loading branch information
NikolasPetriti authored and danbogos committed Jun 21, 2023
1 parent 66374bf commit 40d0cbb
Show file tree
Hide file tree
Showing 3 changed files with 443 additions and 4 deletions.
338 changes: 338 additions & 0 deletions utils/pathitemlist_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,341 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
*/

package utils

import (
"reflect"
"testing"
)

func TestPathItemListPrev(t *testing.T) {

pr := PathItemElement{}

pl := PathItemList{
root: pr,
len: 3,
}

p2 := PathItemElement{
prev: &pr,
}

p3 := PathItemElement{
prev: &p2,
list: &pl,
}

p2.next = &p3

rcv := p3.Prev()

if !reflect.DeepEqual(rcv, &p2) {
t.Errorf("recived %v, expected %v", rcv, &p2)
}

t.Run("return nil", func(t *testing.T) {
rcv := p2.Prev()

if rcv != nil {
t.Errorf("recived %v, expected nil", rcv)
}
})

}

func TestPathItemListBack(t *testing.T) {
pr := PathItemElement{}

pr.prev = &pr

pl := PathItemList{
root: pr,
len: 3,
}

p2 := PathItemElement{
prev: &pr,
}

p3 := PathItemElement{
prev: &p2,
list: &pl,
}

p2.next = &p3

rcv := pl.Back()

if !reflect.DeepEqual(rcv, &pr) {
t.Errorf("recived %v, expected %v", rcv, p3)
}

pl.len = 0

rcv = pl.Back()

if rcv != nil {
t.Error("expected nil")
}
}

func TestPathItemListFront(t *testing.T) {

pr := PathItemElement{}

pr.prev = &pr

pl := PathItemList{
root: pr,
len: 3,
}

p2 := PathItemElement{
prev: &pr,
list: &pl,
}

p3 := PathItemElement{
prev: &p2,
list: &pl,
}

p2.next = &p3

pr.next = &p2

pr.list = &pl

rcv := pl.Front()

if rcv != nil {
t.Errorf("recived %v, expected %v", rcv, p2)
}

pl.len = 0

rcv = pl.Front()

if rcv != nil {
t.Errorf("recived %v, expected nil", rcv)
}
}

func TestPathItemListInsertBefore(t *testing.T) {

pr := PathItemElement{}

pl := PathItemList{
root: pr,
len: 3,
}

p2 := PathItemElement{
prev: &pr,
}

p3 := PathItemElement{
prev: &p2,
list: &pl,
}

p2.next = &p3

pi := PathItem{}

ps := PathItems{pi}

pTest := PathItemElement{
list: nil,
}


type args struct {
v PathItems
mark *PathItemElement
}

tests := []struct{
name string
args args
exp *PathItemElement
}{
{
name: "different path item lists",
args: args{ps, &pTest},
exp: nil,
},
{
name: "returns new path item element",
args: args{ps, &p3},
exp: nil,
},
}

for i, tt := range tests {
t.Run(tt.name, func(t *testing.T) {

rcv := pl.InsertBefore(tt.args.v, tt.args.mark)

if i < 1 {
if rcv != nil {
t.Errorf("recived %v, expected nil", rcv)
}
} else {
if rcv == nil {
t.Errorf("recived %v", rcv)
}
}
})
}
}

func TestPathItemListInsertAfter(t *testing.T) {

pr := PathItemElement{}

pl := PathItemList{
root: pr,
len: 3,
}

pr.list = &pl

p2 := PathItemElement{
prev: &pr,
list: &pl,
}

p3 := PathItemElement{
prev: &p2,
list: &pl,
}

p2.next = &p3

pi := PathItem{}

ps := PathItems{pi}

pTest := PathItemElement{
list: nil,
}


type args struct {
v PathItems
mark *PathItemElement
}

tests := []struct{
name string
args args
}{
{
name: "different path item lists",
args: args{ps, &pTest},
},
{
name: "returns new path item element",
args: args{ps, &p2},
},
}

for i, tt := range tests {
t.Run(tt.name, func(t *testing.T) {

rcv := pl.InsertAfter(tt.args.v, tt.args.mark)

if i < 1 {
if rcv != nil {
t.Errorf("recived %v, expected nil", rcv)
}
} else {
if rcv == nil {
t.Errorf("recived %v", rcv)
}
}
})
}
}

func TestPathItemListPushBack(t *testing.T) {

pr := PathItemElement{}

pl := PathItemList{
root: pr,
len: 3,
}

pr.list = &pl

p2 := PathItemElement{
prev: &pr,
list: &pl,
}

p3 := PathItemElement{
prev: &p2,
list: &pl,
}

p2.next = &p3

pi := PathItem{}

ps := PathItems{pi}

rcv := pl.PushBack(ps)

if rcv == nil {
t.Errorf("recived %v", rcv)
}
}

func TestPathItemListPushFront(t *testing.T) {

pr := PathItemElement{}

pl := PathItemList{
root: pr,
len: 3,
}

pr.list = &pl

p2 := PathItemElement{
prev: &pr,
list: &pl,
}

p3 := PathItemElement{
prev: &p2,
list: &pl,
}

p2.next = &p3

pi := PathItem{}

ps := PathItems{pi}

rcv := pl.PushFront(ps)

if rcv == nil {
t.Errorf("recived %v", rcv)
}
}

func TestPathItemListLen(t *testing.T) {

pl := PathItemList{
len: 3,
}

rcv := pl.Len()

if rcv != 3 {
t.Errorf("recived %d, expected 3", rcv)
}
}
4 changes: 3 additions & 1 deletion utils/struct.go
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,8 @@ func FromMapStringString(m map[string]string, in any) {
}
}

var ErrTypeDidntMatch error = errors.New("Provided value type didn't match obj field type")

func FromMapStringInterface(m map[string]any, in any) error {
v := reflect.ValueOf(in)
if v.Kind() == reflect.Ptr {
Expand All @@ -232,7 +234,7 @@ func FromMapStringInterface(m map[string]any, in any) error {
structFieldType := field.Type()
val := reflect.ValueOf(fieldValue)
if structFieldType != val.Type() {
return errors.New("Provided value type didn't match obj field type")
return ErrTypeDidntMatch
}
field.Set(val)
}
Expand Down

0 comments on commit 40d0cbb

Please sign in to comment.