TestValueArrayBuffer tests ArrayBuffer operations
(t *testing.T)
| 771 | |
| 772 | // TestValueArrayBuffer tests ArrayBuffer operations |
| 773 | func 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 { |
nothing calls this directly
no test coverage detected