Nothing
context("JS ArrayBuffers")
test_that("Reading and writing raw buffers", {
ctx <- V8::v8()
ctx$eval('
var data = [1,2,3]
var intArray = new Uint8Array( data )
var dataBuffer = new ArrayBuffer( 3 )
var floatArray = new Float32Array( [0, Math.PI])')
expect_equal(ctx$get('data'), 1:3)
expect_equal(ctx$get('dataBuffer'), raw(3))
if (.Platform$endian == "little") {
expect_equal(ctx$get('floatArray'), as.raw(c(0, 0, 0, 0, 219, 15, 73, 64)))
} else {
expect_equal(ctx$get('floatArray'), as.raw(c(0, 0, 0, 0, 64, 73, 15, 219)))
}
expect_equal(ctx$get('intArray'), as.raw(1:3))
# Print methods
expect_equal(ctx$eval('dataBuffer'), "[object ArrayBuffer]")
expect_equal(ctx$eval('floatArray.buffer'), "[object ArrayBuffer]")
expect_equal(ctx$eval('intArray.buffer'), "[object ArrayBuffer]")
})
test_that("Roundtrip ArrayBuffers", {
ctx <- V8::v8()
ctx$assign('iris', serialize(iris, NULL))
expect_equal(unserialize(ctx$get('iris')), iris)
})
test_that("Large ArrayBuffer", {
ctx <- V8::v8()
x <- serialize(rnorm(1e6), NULL)
ctx$assign('x', x)
y <- ctx$get('x')
expect_identical(x, y)
rm(x); gc()
expect_identical(ctx$get('x'), y)
})
test_that("ArrayBuffers from eval", {
# Create a context and assign some data
ctx <- v8()
ctx$eval("bytes = new Uint8Array([
0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x07, 0x01,
0x60, 0x02, 0x7f, 0x7f, 0x01, 0x7f, 0x03, 0x02, 0x01, 0x00, 0x07,
0x07, 0x01, 0x03, 0x61, 0x64, 0x64, 0x00, 0x00, 0x0a, 0x09, 0x01,
0x07, 0x00, 0x20, 0x00, 0x20, 0x01, 0x6a, 0x0b
]);
buffer = bytes.buffer")
# Expected output
bin <- as.raw(c(0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00, 0x01,
0x07, 0x01, 0x60, 0x02, 0x7f, 0x7f, 0x01, 0x7f, 0x03, 0x02, 0x01,
0x00, 0x07, 0x07, 0x01, 0x03, 0x61, 0x64, 0x64, 0x00, 0x00, 0x0a,
0x09, 0x01, 0x07, 0x00, 0x20, 0x00, 0x20, 0x01, 0x6a, 0x0b))
ctx$assign('bin', bin)
ctx$assign('mtcars', mtcars)
# With serialize, no eval
expect_equal(ctx$get('bytes'), bin)
expect_equal(ctx$get('buffer'), bin)
expect_equal(ctx$get('bin'), bin)
expect_equal(ctx$get('mtcars'), mtcars)
# With serialize and eval
expect_equal(ctx$get('(function(x){return bytes})()'), bin)
expect_equal(ctx$get('(function(x){return buffer})()'), bin)
expect_equal(ctx$get('(function(x){return bin})()'), bin)
expect_equal(ctx$get('(function(x){return mtcars})()'), mtcars)
expect_null(ctx$get('console.log'))
# Using call (serialize and eval)
ctx$eval('function identity(x){return x;}')
expect_equal(ctx$call('identity', JS('bytes')), bin)
expect_equal(ctx$call('identity', JS('buffer')), bin)
expect_equal(ctx$call('identity', JS('bin')), bin)
expect_equal(ctx$call('identity', JS('mtcars')), mtcars)
expect_null(ctx$call('identity', JS('console.log')))
# Without serialize
#expect_match(ctx$eval('bytes'), "^(\\d,?)+$")
expect_match(ctx$eval('buffer'), "[object ArrayBuffer]", fixed = TRUE)
#expect_match(ctx$eval('bin'), "[object ArrayBuffer]", fixed = TRUE)
expect_match(ctx$eval('mtcars'), "[object Object]", fixed = TRUE)
expect_match(ctx$eval('console.log'), 'function')
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.