Skip to content

Commit

Permalink
Remove unnecessary cruft from the tests injecting function callbacks.
Browse files Browse the repository at this point in the history
  • Loading branch information
teuget authored and sharmaashish13 committed Dec 28, 2021
1 parent 2ec38fc commit 0dad720
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 103 deletions.
52 changes: 23 additions & 29 deletions array_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,33 +7,29 @@ import (
"testing"
)

type uint8ArrayTester struct{}

func (u *uint8ArrayTester) GetReverseUint8ArrayFunctionCallback() FunctionCallback {
return func(info *FunctionCallbackInfo) *Value {
iso, err := info.Context().Isolate()
if err != nil {
log.Fatalf("Could not get isolate from context: %v\n", err)
}
args := info.Args()
if len(args) != 1 {
return iso.ThrowException("Function ReverseUint8Array expects 1 parameter")
}
if !args[0].IsUint8Array() {
return iso.ThrowException("Function ReverseUint8Array expects Uint8Array parameter")
}
array := args[0].Uint8Array()
length := len(array)
reversed := make([]uint8, length)
for i := 0; i < length; i++ {
reversed[i] = array[length-i-1]
}
val, err := NewValue(iso, reversed)
if err != nil {
return iso.ThrowException(fmt.Sprintf("Could not get value for array: %v\n", err))
}
return val
func reverseUint8ArrayFunctionCallback(info *FunctionCallbackInfo) *Value {
iso, err := info.Context().Isolate()
if err != nil {
log.Fatalf("Could not get isolate from context: %v\n", err)
}
args := info.Args()
if len(args) != 1 {
return iso.ThrowException("Function ReverseUint8Array expects 1 parameter")
}
if !args[0].IsUint8Array() {
return iso.ThrowException("Function ReverseUint8Array expects Uint8Array parameter")
}
array := args[0].Uint8Array()
length := len(array)
reversed := make([]uint8, length)
for i := 0; i < length; i++ {
reversed[i] = array[length-i-1]
}
val, err := NewValue(iso, reversed)
if err != nil {
return iso.ThrowException(fmt.Sprintf("Could not get value for array: %v\n", err))
}
return val
}

func injectUint8ArrayTester(ctx *Context) error {
Expand All @@ -46,14 +42,12 @@ func injectUint8ArrayTester(ctx *Context) error {
return fmt.Errorf("injectUint8ArrayTester: %v", err)
}

c := &uint8ArrayTester{}

con, err := NewObjectTemplate(iso)
if err != nil {
return fmt.Errorf("injectUint8ArrayTester: %v", err)
}

reverseFn, err := NewFunctionTemplate(iso, c.GetReverseUint8ArrayFunctionCallback())
reverseFn, err := NewFunctionTemplate(iso, reverseUint8ArrayFunctionCallback)
if err != nil {
return fmt.Errorf("injectUint8ArrayTester: %v", err)
}
Expand Down
92 changes: 41 additions & 51 deletions arraybuffer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,55 +7,49 @@ import (
"testing"
)

type arrayBufferTester struct{}

func (a *arrayBufferTester) GetReverseArrayBufferFunctionCallback() FunctionCallback {
return func(info *FunctionCallbackInfo) *Value {
iso, err := info.Context().Isolate()
if err != nil {
log.Fatalf("Could not get isolate from context: %v\n", err)
}
args := info.Args()
if len(args) != 1 {
return iso.ThrowException("Function ReverseArrayBuffer expects 1 parameter")
}
if !args[0].IsArrayBuffer() {
return iso.ThrowException("Function ReverseArrayBuffer expects ArrayBuffer parameter")
}
ab := args[0].ArrayBuffer() // "cast" to ArrayBuffer
length := int(ab.ByteLength())
bytes := ab.GetBytes() // get a copy of the bytes from the ArrayBuffer
reversed := make([]uint8, length)
for i := 0; i < length; i++ {
reversed[i] = bytes[length-i-1]
}
ab.PutBytes(reversed) // update the bytes in the ArrayBuffer (length must match!)
return nil
func reverseArrayBufferFunctionCallback(info *FunctionCallbackInfo) *Value {
iso, err := info.Context().Isolate()
if err != nil {
log.Fatalf("Could not get isolate from context: %v\n", err)
}
args := info.Args()
if len(args) != 1 {
return iso.ThrowException("Function ReverseArrayBuffer expects 1 parameter")
}
if !args[0].IsArrayBuffer() {
return iso.ThrowException("Function ReverseArrayBuffer expects ArrayBuffer parameter")
}
ab := args[0].ArrayBuffer() // "cast" to ArrayBuffer
length := int(ab.ByteLength())
bytes := ab.GetBytes() // get a copy of the bytes from the ArrayBuffer
reversed := make([]uint8, length)
for i := 0; i < length; i++ {
reversed[i] = bytes[length-i-1]
}
ab.PutBytes(reversed) // update the bytes in the ArrayBuffer (length must match!)
return nil
}

func (a *arrayBufferTester) GetCreateArrayBufferFunctionCallback() FunctionCallback {
return func(info *FunctionCallbackInfo) *Value {
iso, err := info.Context().Isolate()
if err != nil {
log.Fatalf("Could not get isolate from context: %v\n", err)
}
args := info.Args()
if len(args) != 1 {
return iso.ThrowException("Function CreateArrayBuffer expects 1 parameter")
}
if !args[0].IsInt32() {
return iso.ThrowException("Function CreateArrayBuffer expects Int32 parameter")
}
length := args[0].Int32()
ab := NewArrayBuffer(info.Context(), int64(length)) // create ArrayBuffer object of given length
bytes := make([]uint8, length)
for i := uint8(0); i < uint8(length); i++ {
bytes[i] = i
}
ab.PutBytes(bytes) // copy these bytes into it. Caller is responsible for avoiding overruns!
return ab.Value // return the ArrayBuffer to javascript
func createArrayBufferFunctionCallback(info *FunctionCallbackInfo) *Value {
iso, err := info.Context().Isolate()
if err != nil {
log.Fatalf("Could not get isolate from context: %v\n", err)
}
args := info.Args()
if len(args) != 1 {
return iso.ThrowException("Function CreateArrayBuffer expects 1 parameter")
}
if !args[0].IsInt32() {
return iso.ThrowException("Function CreateArrayBuffer expects Int32 parameter")
}
length := args[0].Int32()
ab := NewArrayBuffer(info.Context(), int64(length)) // create ArrayBuffer object of given length
bytes := make([]uint8, length)
for i := uint8(0); i < uint8(length); i++ {
bytes[i] = i
}
ab.PutBytes(bytes) // copy these bytes into it. Caller is responsible for avoiding overruns!
return ab.Value // return the ArrayBuffer to javascript
}

func injectArrayBufferTester(ctx *Context, funcName string, funcCb FunctionCallback) error {
Expand Down Expand Up @@ -103,9 +97,7 @@ func TestModifyArrayBuffer(t *testing.T) {

iso, _ := NewIsolate()
ctx, _ := NewContext(iso)
c := &arrayBufferTester{}

if err := injectArrayBufferTester(ctx, "reverseArrayBuffer", c.GetReverseArrayBufferFunctionCallback()); err != nil {
if err := injectArrayBufferTester(ctx, "reverseArrayBuffer", reverseArrayBufferFunctionCallback); err != nil {
t.Error(err)
}

Expand Down Expand Up @@ -142,9 +134,7 @@ func TestCreateArrayBuffer(t *testing.T) {

iso, _ := NewIsolate()
ctx, _ := NewContext(iso)
c := &arrayBufferTester{}

if err := injectArrayBufferTester(ctx, "createArrayBuffer", c.GetCreateArrayBufferFunctionCallback()); err != nil {
if err := injectArrayBufferTester(ctx, "createArrayBuffer", createArrayBufferFunctionCallback); err != nil {
t.Error(err)
}

Expand Down
41 changes: 18 additions & 23 deletions object_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -213,28 +213,24 @@ func ExampleObject_global() {
// foo
}

type objectTester struct{}

func (a *objectTester) GetCreateObjectFunctionCallback() v8go.FunctionCallback {
return func(info *v8go.FunctionCallbackInfo) *v8go.Value {
iso, err := info.Context().Isolate()
if err != nil {
log.Fatalf("Could not get isolate from context: %v\n", err)
}
args := info.Args()
if len(args) != 2 {
return iso.ThrowException("Function CreateObject expects 2 parameters")
}
if !args[0].IsInt32() || !args[1].IsInt32() {
return iso.ThrowException("Function CreateObject expects 2 Int32 parameters")
}
read := args[0].Int32()
written := args[1].Int32()
obj := v8go.NewObject(info.Context()) // create object
obj.Set("read", read) // set some properties
obj.Set("written", written)
return obj.Value
func createObjectFunctionCallback(info *v8go.FunctionCallbackInfo) *v8go.Value {
iso, err := info.Context().Isolate()
if err != nil {
log.Fatalf("Could not get isolate from context: %v\n", err)
}
args := info.Args()
if len(args) != 2 {
return iso.ThrowException("Function createObject expects 2 parameters")
}
if !args[0].IsInt32() || !args[1].IsInt32() {
return iso.ThrowException("Function createObject expects 2 Int32 parameters")
}
read := args[0].Int32()
written := args[1].Int32()
obj := v8go.NewObject(info.Context()) // create object
obj.Set("read", read) // set some properties
obj.Set("written", written)
return obj.Value
}

func injectObjectTester(ctx *v8go.Context, funcName string, funcCb v8go.FunctionCallback) error {
Expand Down Expand Up @@ -280,9 +276,8 @@ func TestObjectCreate(t *testing.T) {
t.Parallel()
iso, _ := v8go.NewIsolate()
ctx, _ := v8go.NewContext(iso)
c := &objectTester{}

if err := injectObjectTester(ctx, "createObject", c.GetCreateObjectFunctionCallback()); err != nil {
if err := injectObjectTester(ctx, "createObject", createObjectFunctionCallback); err != nil {
t.Error(err)
}

Expand Down

0 comments on commit 0dad720

Please sign in to comment.