MCPcopy Create free account
hub / github.com/buke/quickjs-go / TestValueArrayBuffer

Function TestValueArrayBuffer

value_test.go:773–850  ·  view source on GitHub ↗

TestValueArrayBuffer tests ArrayBuffer operations

(t *testing.T)

Source from the content-addressed store, hash-verified

771
772// TestValueArrayBuffer tests ArrayBuffer operations
773func TestValueArrayBuffer(t *testing.T) {
774 useStableOwnerHooksForLegacySubtests(t)
775
776 rt := NewRuntime()
777 defer rt.Close()
778 ctx := rt.NewContext()
779 defer ctx.Close()
780
781 // Test basic ArrayBuffer operations - Updated to use New* methods
782 data := []byte{1, 2, 3, 4, 5}
783 arrayBuffer := ctx.NewArrayBuffer(data)
784 defer arrayBuffer.Free()
785
786 require.True(t, arrayBuffer.IsByteArray())
787 require.False(t, arrayBuffer.IsImmutableArrayBuffer())
788 require.Equal(t, int64(len(data)), arrayBuffer.ByteLen())
789
790 // Test ToByteArray with various sizes
791 for i := 1; i <= len(data); i++ {
792 result, err := arrayBuffer.ToByteArray(uint(i))
793 require.NoError(t, err)
794 require.Equal(t, data[:i], result)
795 }
796
797 // Test ToByteArray with size exceeding buffer length
798 _, err := arrayBuffer.ToByteArray(uint(len(data)) + 1)
799 require.Error(t, err)
800 require.Contains(t, err.Error(), "exceeds the maximum length")
801
802 t.Run("DetachedArrayBuffer", func(t *testing.T) {
803 detachedBuffer := ctx.Eval(`
804 (() => {
805 const buffer = new ArrayBuffer(4);
806 buffer.transfer();
807 return buffer;
808 })()
809 `)
810 defer detachedBuffer.Free()
811 require.False(t, detachedBuffer.IsException())
812
813 _, err := detachedBuffer.ToByteArray(0)
814 require.Error(t, err)
815 require.ErrorContains(t, ctx.Exception(), "ArrayBuffer")
816 })
817
818 // Test array length - FIXED: removed error handling
819 arr := ctx.Eval(`[1, 2, 3, 4, 5]`)
820 defer arr.Free()
821 require.False(t, arr.IsException()) // Check for exceptions instead of error
822 require.Equal(t, int64(5), arr.Len())
823
824 require.True(t, arrayBuffer.SetImmutableArrayBuffer(true))
825 require.True(t, arrayBuffer.IsImmutableArrayBuffer())
826 require.True(t, arrayBuffer.SetImmutableArrayBuffer(false))
827 require.False(t, arrayBuffer.IsImmutableArrayBuffer())
828
829 // Test error cases with non-ArrayBuffer types - Updated to use New* methods
830 errorTests := []struct {

Callers

nothing calls this directly

Calls 15

CloseMethod · 0.95
NewContextMethod · 0.95
CloseMethod · 0.95
NewArrayBufferMethod · 0.95
EvalMethod · 0.95
ExceptionMethod · 0.95
NewObjectMethod · 0.95
NewStringMethod · 0.95
NewInt32Method · 0.95
NewNullMethod · 0.95
NewRuntimeFunction · 0.85

Tested by

no test coverage detected