293dd2e848
* Add vendor dir so builds dont require dep * Pin specific version go-eth version
82 lines
1.8 KiB
Go
82 lines
1.8 KiB
Go
package table
|
|
|
|
import (
|
|
"reflect"
|
|
|
|
"github.com/onsi/ginkgo"
|
|
)
|
|
|
|
/*
|
|
TableEntry represents an entry in a table test. You generally use the `Entry` constructor.
|
|
*/
|
|
type TableEntry struct {
|
|
Description string
|
|
Parameters []interface{}
|
|
Pending bool
|
|
Focused bool
|
|
}
|
|
|
|
func (t TableEntry) generateIt(itBody reflect.Value) {
|
|
if t.Pending {
|
|
ginkgo.PIt(t.Description)
|
|
return
|
|
}
|
|
|
|
values := []reflect.Value{}
|
|
for i, param := range t.Parameters {
|
|
var value reflect.Value
|
|
|
|
if param == nil {
|
|
inType := itBody.Type().In(i)
|
|
value = reflect.Zero(inType)
|
|
} else {
|
|
value = reflect.ValueOf(param)
|
|
}
|
|
|
|
values = append(values, value)
|
|
}
|
|
|
|
body := func() {
|
|
itBody.Call(values)
|
|
}
|
|
|
|
if t.Focused {
|
|
ginkgo.FIt(t.Description, body)
|
|
} else {
|
|
ginkgo.It(t.Description, body)
|
|
}
|
|
}
|
|
|
|
/*
|
|
Entry constructs a TableEntry.
|
|
|
|
The first argument is a required description (this becomes the content of the generated Ginkgo `It`).
|
|
Subsequent parameters are saved off and sent to the callback passed in to `DescribeTable`.
|
|
|
|
Each Entry ends up generating an individual Ginkgo It.
|
|
*/
|
|
func Entry(description string, parameters ...interface{}) TableEntry {
|
|
return TableEntry{description, parameters, false, false}
|
|
}
|
|
|
|
/*
|
|
You can focus a particular entry with FEntry. This is equivalent to FIt.
|
|
*/
|
|
func FEntry(description string, parameters ...interface{}) TableEntry {
|
|
return TableEntry{description, parameters, false, true}
|
|
}
|
|
|
|
/*
|
|
You can mark a particular entry as pending with PEntry. This is equivalent to PIt.
|
|
*/
|
|
func PEntry(description string, parameters ...interface{}) TableEntry {
|
|
return TableEntry{description, parameters, true, false}
|
|
}
|
|
|
|
/*
|
|
You can mark a particular entry as pending with XEntry. This is equivalent to XIt.
|
|
*/
|
|
func XEntry(description string, parameters ...interface{}) TableEntry {
|
|
return TableEntry{description, parameters, true, false}
|
|
}
|