Skip to content

Commit

Permalink
add unit tests for runtime/core - helpers (#78)
Browse files Browse the repository at this point in the history
* add unit tests for runtime/core - helpers

* update helpers to ignore struct/unsafe ptr
  • Loading branch information
esell authored and ziflex committed Oct 8, 2018
1 parent da44689 commit 0004667
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 3 deletions.
7 changes: 4 additions & 3 deletions pkg/runtime/core/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@ func IsNil(input interface{}) bool {
reflect.Array,
reflect.Slice,
reflect.Map,
reflect.Struct,
reflect.Func,
reflect.Interface,
reflect.Chan,
reflect.UnsafePointer:
reflect.Chan:
return val.IsNil()
case reflect.Struct,
reflect.UnsafePointer:
return false
case reflect.Invalid:
return true
default:
Expand Down
72 changes: 72 additions & 0 deletions pkg/runtime/core/helpers_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package core_test

import (
"testing"
"unsafe"

"github.com/MontFerret/ferret/pkg/runtime/core"
. "github.com/smartystreets/goconvey/convey"
)

type DummyInterface interface {
DummyFunc() string
}

type DummyStruct struct{}

func (d DummyStruct) DummyFunc() string {
return "testing"
}

func TestIsNil(t *testing.T) {
Convey("Should match", t, func() {
// nil == invalid
t := core.IsNil(nil)

So(t, ShouldBeTrue)

a := []string{}
t = core.IsNil(a)

So(t, ShouldBeFalse)

b := make([]string, 1)
t = core.IsNil(b)

So(t, ShouldBeFalse)

c := make(map[string]string)
t = core.IsNil(c)

So(t, ShouldBeFalse)

var s struct {
Test string
}
t = core.IsNil(s)

So(t, ShouldBeFalse)

f := func() {}
t = core.IsNil(f)

So(t, ShouldBeFalse)

i := DummyStruct{}
t = core.IsNil(i)

So(t, ShouldBeFalse)

ch := make(chan string)
t = core.IsNil(ch)

So(t, ShouldBeFalse)

var y unsafe.Pointer
var vy int
y = unsafe.Pointer(&vy)
t = core.IsNil(y)

So(t, ShouldBeFalse)
})
}

0 comments on commit 0004667

Please sign in to comment.