From 92acee24bd12fe17f3f652bb4906d17b05892312 Mon Sep 17 00:00:00 2001 From: TomT Date: Fri, 18 Jun 2021 10:12:33 +0200 Subject: [PATCH] Remove unnecessary cruft from the tests injecting function callbacks. --- array_test.go | 52 ++++++++++++------------- arraybuffer_test.go | 92 ++++++++++++++++++++------------------------- object_test.go | 41 +++++++++----------- 3 files changed, 82 insertions(+), 103 deletions(-) diff --git a/array_test.go b/array_test.go index 287950cff..b097f5f1b 100644 --- a/array_test.go +++ b/array_test.go @@ -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 { @@ -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) } diff --git a/arraybuffer_test.go b/arraybuffer_test.go index 3ef94a242..83d3dbfc2 100644 --- a/arraybuffer_test.go +++ b/arraybuffer_test.go @@ -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 { @@ -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) } @@ -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) } diff --git a/object_test.go b/object_test.go index c899ab388..4d259c006 100644 --- a/object_test.go +++ b/object_test.go @@ -117,28 +117,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 { @@ -184,9 +180,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) }