<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[208363] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/208363">208363</a></dd>
<dt>Author</dt> <dd>mmaxfield@apple.com</dd>
<dt>Date</dt> <dd>2016-11-03 18:57:15 -0700 (Thu, 03 Nov 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>[WebGL2] Implement getBufferSubData()
https://bugs.webkit.org/show_bug.cgi?id=164111

Reviewed by Dean Jackson.

Source/WebCore:

The call exists in OpenGL 3.2 but in order to have parity with
OpenGL ES 3 we back it with glMapBufferRange() instead.

This patch simply adds surface area to GraphicsContext3D
until we can get an ANGLE implementation of it.

When testing this patch I discovered that <a href="http://trac.webkit.org/projects/webkit/changeset/207649">r207649</a> incorrectly
interpreted arguments to bufferData() and bufferSubData() as
byte offsets. Instead, they should be element indices. This
patch fixes those functions to work correctly so that
getBufferSubData() can be tested correctly.

Tests: fast/canvas/webgl/webgl2-buffers.html
       fast/canvas/webgl/getBufferSubData-webgl1.html

* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::arrayBufferViewElementSize):
(WebCore::WebGL2RenderingContext::bufferData):
(WebCore::WebGL2RenderingContext::bufferSubData):
(WebCore::WebGL2RenderingContext::getBufferSubData):
* html/canvas/WebGL2RenderingContext.h:
* html/canvas/WebGL2RenderingContext.idl:
* platform/graphics/GraphicsContext3D.h:
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::getBufferSubData):
(WebCore::GraphicsContext3D::mapBufferRange):
(WebCore::GraphicsContext3D::unmapBuffer):

LayoutTests:

Test every successful download/upload combination I can think of.

* fast/canvas/webgl/getBufferSubData-webgl1.html: Added.
* fast/canvas/webgl/getBufferSubData-webgl1-expected.txt: Added.
* fast/canvas/webgl/webgl2-buffers-expected.txt: Added.
* fast/canvas/webgl/webgl2-buffers.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasWebGL2RenderingContextcpp">trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasWebGL2RenderingContexth">trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.h</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasWebGL2RenderingContextidl">trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.idl</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsGraphicsContext3Dh">trunk/Source/WebCore/platform/graphics/GraphicsContext3D.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsopenglGraphicsContext3DOpenGLCommoncpp">trunk/Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastcanvaswebglgetBufferSubDatawebgl1expectedtxt">trunk/LayoutTests/fast/canvas/webgl/getBufferSubData-webgl1-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcanvaswebglgetBufferSubDatawebgl1html">trunk/LayoutTests/fast/canvas/webgl/getBufferSubData-webgl1.html</a></li>
<li><a href="#trunkLayoutTestsfastcanvaswebglwebgl2buffersexpectedtxt">trunk/LayoutTests/fast/canvas/webgl/webgl2-buffers-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcanvaswebglwebgl2buffershtml">trunk/LayoutTests/fast/canvas/webgl/webgl2-buffers.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (208362 => 208363)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-11-04 01:47:53 UTC (rev 208362)
+++ trunk/LayoutTests/ChangeLog        2016-11-04 01:57:15 UTC (rev 208363)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2016-11-03  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
+
+        [WebGL2] Implement getBufferSubData()
+        https://bugs.webkit.org/show_bug.cgi?id=164111
+
+        Reviewed by Dean Jackson.
+
+        Test every successful download/upload combination I can think of.
+
+        * fast/canvas/webgl/getBufferSubData-webgl1.html: Added.
+        * fast/canvas/webgl/getBufferSubData-webgl1-expected.txt: Added.
+        * fast/canvas/webgl/webgl2-buffers-expected.txt: Added.
+        * fast/canvas/webgl/webgl2-buffers.html: Added.
+
</ins><span class="cx"> 2016-11-03  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [WK2][Cocoa] Implement user interface for HTML form validation
</span></span></pre></div>
<a id="trunkLayoutTestsfastcanvaswebglgetBufferSubDatawebgl1expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/canvas/webgl/getBufferSubData-webgl1-expected.txt (0 => 208363)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/canvas/webgl/getBufferSubData-webgl1-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/canvas/webgl/getBufferSubData-webgl1-expected.txt        2016-11-04 01:57:15 UTC (rev 208363)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+Make sure that getBufferSubData() doesn't work on WebGL 1 contexts
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getBufferSubData(context.ARRAY_BUFFER, 0, receiver, 0, 10) threw exception TypeError: context.getBufferSubData is not a function. (In 'context.getBufferSubData(context.ARRAY_BUFFER, 0, receiver, 0, 10)', 'context.getBufferSubData' is undefined).
+PASS context.getError() is context.NO_ERROR
+PASS context is null
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcanvaswebglgetBufferSubDatawebgl1html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/canvas/webgl/getBufferSubData-webgl1.html (0 => 208363)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/canvas/webgl/getBufferSubData-webgl1.html                                (rev 0)
+++ trunk/LayoutTests/fast/canvas/webgl/getBufferSubData-webgl1.html        2016-11-04 01:57:15 UTC (rev 208363)
</span><span class="lines">@@ -0,0 +1,68 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;canvas id=&quot;canvas&quot; width=&quot;40&quot; height=&quot;40&quot;&gt;&lt;/canvas&gt;
+&lt;script&gt;
+description(&quot;Make sure that getBufferSubData() doesn't work on WebGL 1 contexts&quot;);
+
+if (window.internals)
+        internals.setWebGL2Enabled(true);
+
+var arrayBuffer = new ArrayBuffer(40);
+var fullArrayView = new Float32Array(arrayBuffer); // [15, 16, 17, 18, 19, 20, 21, 22, 23, 24], 40 bytes
+var receiver = new Float32Array(20); // 20 floats, 80 bytes
+for (var i = 0; i &lt; 10; ++i)
+        fullArrayView[i] = 15 + i;
+
+var canvas = document.getElementById(&quot;canvas&quot;);
+var context = canvas.getContext(&quot;webgl2&quot;);
+trySuccessUploadDownload();
+
+canvas = document.createElement(&quot;canvas&quot;);
+canvas.width = 40;
+canvas.height = 40;
+context = canvas.getContext(&quot;webgl&quot;);
+tryFailUploadDownload();
+
+if (window.internals)
+        internals.setWebGL2Enabled(false);
+
+canvas = document.createElement(&quot;canvas&quot;);
+canvas.width = 40;
+canvas.height = 40;
+context = canvas.getContext(&quot;webgl2&quot;);
+shouldBeNull(&quot;context&quot;);
+
+function trySuccessUploadDownload() {
+        var buffer = context.createBuffer();
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.bindBuffer(context.ARRAY_BUFFER, buffer);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.bufferData(context.ARRAY_BUFFER, arrayBuffer, context.STATIC_DRAW);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(context.ARRAY_BUFFER, 0, receiver, 0, 10);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 10; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + i + &quot;]&quot;);
+        context.deleteBuffer(buffer);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+}
+
+function tryFailUploadDownload() {
+        var buffer = context.createBuffer();
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.bindBuffer(context.ARRAY_BUFFER, buffer);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.bufferData(context.ARRAY_BUFFER, arrayBuffer, context.STATIC_DRAW);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldThrow(&quot;context.getBufferSubData(context.ARRAY_BUFFER, 0, receiver, 0, 10)&quot;);
+        context.deleteBuffer(buffer);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+}
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsfastcanvaswebglwebgl2buffersexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/canvas/webgl/webgl2-buffers-expected.txt (0 => 208363)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/canvas/webgl/webgl2-buffers-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/canvas/webgl/webgl2-buffers-expected.txt        2016-11-04 01:57:15 UTC (rev 208363)
</span><span class="lines">@@ -0,0 +1,3113 @@
</span><ins>+Make sure that reading and writing WebGL2 buffers works as expected.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[3]
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[3]
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[0]
+PASS receiver[3] is fullArrayView[1]
+PASS receiver[4] is fullArrayView[2]
+PASS receiver[5] is fullArrayView[3]
+PASS receiver[6] is fullArrayView[4]
+PASS receiver[7] is fullArrayView[5]
+PASS receiver[8] is fullArrayView[6]
+PASS receiver[9] is fullArrayView[7]
+PASS receiver[10] is fullArrayView[8]
+PASS receiver[11] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[3]
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[3]
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[0]
+PASS receiver[3] is fullArrayView[1]
+PASS receiver[4] is fullArrayView[2]
+PASS receiver[5] is fullArrayView[3]
+PASS receiver[6] is fullArrayView[4]
+PASS receiver[7] is fullArrayView[5]
+PASS receiver[8] is fullArrayView[6]
+PASS receiver[9] is fullArrayView[7]
+PASS receiver[10] is fullArrayView[8]
+PASS receiver[11] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[3]
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[3]
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[0]
+PASS receiver[3] is fullArrayView[1]
+PASS receiver[4] is fullArrayView[2]
+PASS receiver[5] is fullArrayView[3]
+PASS receiver[6] is fullArrayView[4]
+PASS receiver[7] is fullArrayView[5]
+PASS receiver[8] is fullArrayView[6]
+PASS receiver[9] is fullArrayView[7]
+PASS receiver[10] is fullArrayView[8]
+PASS receiver[11] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[3]
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[3]
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[0]
+PASS receiver[3] is fullArrayView[1]
+PASS receiver[4] is fullArrayView[2]
+PASS receiver[5] is fullArrayView[3]
+PASS receiver[6] is fullArrayView[4]
+PASS receiver[7] is fullArrayView[5]
+PASS receiver[8] is fullArrayView[6]
+PASS receiver[9] is fullArrayView[7]
+PASS receiver[10] is fullArrayView[8]
+PASS receiver[11] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[3]
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[3]
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[0]
+PASS receiver[3] is fullArrayView[1]
+PASS receiver[4] is fullArrayView[2]
+PASS receiver[5] is fullArrayView[3]
+PASS receiver[6] is fullArrayView[4]
+PASS receiver[7] is fullArrayView[5]
+PASS receiver[8] is fullArrayView[6]
+PASS receiver[9] is fullArrayView[7]
+PASS receiver[10] is fullArrayView[8]
+PASS receiver[11] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[3]
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[3]
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[0]
+PASS receiver[3] is fullArrayView[1]
+PASS receiver[4] is fullArrayView[2]
+PASS receiver[5] is fullArrayView[3]
+PASS receiver[6] is fullArrayView[4]
+PASS receiver[7] is fullArrayView[5]
+PASS receiver[8] is fullArrayView[6]
+PASS receiver[9] is fullArrayView[7]
+PASS receiver[10] is fullArrayView[8]
+PASS receiver[11] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[3]
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[3]
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[0]
+PASS receiver[3] is fullArrayView[1]
+PASS receiver[4] is fullArrayView[2]
+PASS receiver[5] is fullArrayView[3]
+PASS receiver[6] is fullArrayView[4]
+PASS receiver[7] is fullArrayView[5]
+PASS receiver[8] is fullArrayView[6]
+PASS receiver[9] is fullArrayView[7]
+PASS receiver[10] is fullArrayView[8]
+PASS receiver[11] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[3]
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS receiver[5] is fullArrayView[6]
+PASS receiver[6] is fullArrayView[7]
+PASS receiver[7] is fullArrayView[8]
+PASS receiver[8] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[3]
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[4]
+PASS receiver[2] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[0]
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS receiver[7] is fullArrayView[6]
+PASS receiver[8] is fullArrayView[7]
+PASS receiver[9] is fullArrayView[8]
+PASS receiver[10] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[0]
+PASS receiver[3] is fullArrayView[1]
+PASS receiver[4] is fullArrayView[2]
+PASS receiver[5] is fullArrayView[3]
+PASS receiver[6] is fullArrayView[4]
+PASS receiver[7] is fullArrayView[5]
+PASS receiver[8] is fullArrayView[6]
+PASS receiver[9] is fullArrayView[7]
+PASS receiver[10] is fullArrayView[8]
+PASS receiver[11] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[0]
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS receiver[9] is fullArrayView[9]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS receiver[6] is fullArrayView[6]
+PASS receiver[7] is fullArrayView[7]
+PASS receiver[8] is fullArrayView[8]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[1]
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[1]
+PASS receiver[3] is fullArrayView[2]
+PASS receiver[4] is fullArrayView[3]
+PASS receiver[5] is fullArrayView[4]
+PASS receiver[6] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[1]
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[2]
+PASS receiver[2] is fullArrayView[3]
+PASS receiver[3] is fullArrayView[4]
+PASS receiver[4] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is sentinel
+PASS receiver[2] is fullArrayView[2]
+PASS receiver[3] is fullArrayView[3]
+PASS receiver[4] is fullArrayView[4]
+PASS receiver[5] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is fullArrayView[2]
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS context.getError() is context.NO_ERROR
+PASS receiver[0] is sentinel
+PASS receiver[1] is fullArrayView[3]
+PASS receiver[2] is fullArrayView[4]
+PASS receiver[3] is fullArrayView[5]
+PASS context.getError() is context.NO_ERROR
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastcanvaswebglwebgl2buffershtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/canvas/webgl/webgl2-buffers.html (0 => 208363)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/canvas/webgl/webgl2-buffers.html                                (rev 0)
+++ trunk/LayoutTests/fast/canvas/webgl/webgl2-buffers.html        2016-11-04 01:57:15 UTC (rev 208363)
</span><span class="lines">@@ -0,0 +1,489 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;canvas id=&quot;canvas&quot; width=&quot;40&quot; height=&quot;40&quot;&gt;&lt;/canvas&gt;
+&lt;script&gt;
+description(&quot;Make sure that reading and writing WebGL2 buffers works as expected.&quot;);
+
+if (window.internals)
+        internals.setWebGL2Enabled(true);
+
+var arrayBuffer = new ArrayBuffer(40);
+var fullArrayView = new Float32Array(arrayBuffer); // [15, 16, 17, 18, 19, 20, 21, 22, 23, 24], 40 bytes
+var partialArrayView = new Float32Array(arrayBuffer, 4, 5); // [16, 17, 18, 19, 20], 20 bytes
+var receiver = new Float32Array(20); // 20 floats, 80 bytes
+for (var i = 0; i &lt; 10; ++i)
+        fullArrayView[i] = 15 + i;
+
+var sentinel = 100;
+function fillReceiver() {
+        for (var i = 0; i &lt; receiver.length; ++i)
+                receiver[i] = sentinel;
+}
+
+var canvas = document.getElementById(&quot;canvas&quot;);
+var context = canvas.getContext(&quot;webgl2&quot;);
+
+runTests(context.ARRAY_BUFFER);
+runTests(context.COPY_READ_BUFFER);
+runTests(context.COPY_WRITE_BUFFER);
+runTests(context.ELEMENT_ARRAY_BUFFER);
+runTests(context.PIXEL_PACK_BUFFER);
+runTests(context.PIXEL_UNPACK_BUFFER);
+runTests(context.TRANSFORM_FEEDBACK_BUFFER);
+runTests(context.UNIFORM_BUFFER);
+
+function runTests(target) {
+        var buffer = context.createBuffer();
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.bindBuffer(target, buffer);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+
+
+
+        context.bufferData(target, arrayBuffer, context.STATIC_DRAW);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 0, 10);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 10; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + i + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferData(target, arrayBuffer, context.STATIC_DRAW);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 1, 10);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 10; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + i + &quot;]&quot;);
+
+        context.bufferData(target, arrayBuffer, context.STATIC_DRAW);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 4, receiver, 0, 9);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 9; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 1) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferData(target, arrayBuffer, context.STATIC_DRAW);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 8, receiver, 1, 8);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 8; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 2) + &quot;]&quot;);
+
+        ////////////////////////////////////////////////////////////////////////////////////////////////
+
+        context.bufferData(target, partialArrayView, context.STATIC_DRAW);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 5; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 1) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferData(target, partialArrayView, context.STATIC_DRAW);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 1, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 5; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 1) + &quot;]&quot;);
+
+        context.bufferData(target, partialArrayView, context.STATIC_DRAW);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 4, receiver, 0, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 4; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 2) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferData(target, partialArrayView, context.STATIC_DRAW);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 8, receiver, 1, 3);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 3; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 3) + &quot;]&quot;);
+
+        ////////////////////////////////////////////////////////////////////////////////////////////////
+
+        context.bufferData(target, partialArrayView, context.STATIC_DRAW, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 5; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 1) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferData(target, partialArrayView, context.STATIC_DRAW, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 1, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 5; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 1) + &quot;]&quot;);
+
+        context.bufferData(target, partialArrayView, context.STATIC_DRAW, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 4, receiver, 0, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 4; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 2) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferData(target, partialArrayView, context.STATIC_DRAW, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 8, receiver, 1, 3);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 3; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 3) + &quot;]&quot;);
+
+        ////////////////////////////////////////////////////////////////////////////////////////////////
+
+        context.bufferData(target, partialArrayView, context.STATIC_DRAW, 1, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 0, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 4; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 2) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferData(target, partialArrayView, context.STATIC_DRAW, 1, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 1, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 4; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 2) + &quot;]&quot;);
+
+        context.bufferData(target, partialArrayView, context.STATIC_DRAW, 1, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 4, receiver, 0, 3);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 3; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 3) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferData(target, partialArrayView, context.STATIC_DRAW, 1, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 8, receiver, 1, 2);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 2; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 4) + &quot;]&quot;);
+
+
+
+        ////////////////////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////////////////////
+        // Give the buffer a size which is big enough to hold the entire buffer
+        fillReceiver();
+        context.bufferData(target, receiver, context.STATIC_DRAW);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+
+
+
+        context.bufferSubData(target, 0, arrayBuffer);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 0, 10);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 10; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + i + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferSubData(target, 0, arrayBuffer);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 1, 10);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 10; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + i + &quot;]&quot;);
+
+        context.bufferSubData(target, 0, arrayBuffer);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 4, receiver, 0, 9);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 9; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 1) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferSubData(target, 0, arrayBuffer);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 8, receiver, 1, 8);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 8; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 2) + &quot;]&quot;);
+
+        ////////////////////////////////////////////////////////////////////////////////////////////////
+
+        context.bufferSubData(target, 0, partialArrayView);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 5; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 1) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferSubData(target, 0, partialArrayView);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 1, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 5; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 1) + &quot;]&quot;);
+
+        context.bufferSubData(target, 0, partialArrayView);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 4, receiver, 0, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 4; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 2) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferSubData(target, 0, partialArrayView);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 8, receiver, 1, 3);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 3; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 3) + &quot;]&quot;);
+
+        ////////////////////////////////////////////////////////////////////////////////////////////////
+
+        context.bufferSubData(target, 0, partialArrayView, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 5; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 1) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferSubData(target, 0, partialArrayView, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 1, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 5; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 1) + &quot;]&quot;);
+
+        context.bufferSubData(target, 0, partialArrayView, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 4, receiver, 0, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 4; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 2) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferSubData(target, 0, partialArrayView, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 8, receiver, 1, 3);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 3; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 3) + &quot;]&quot;);
+
+        ////////////////////////////////////////////////////////////////////////////////////////////////
+
+        context.bufferSubData(target, 0, partialArrayView, 1, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 0, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 4; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 2) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferSubData(target, 0, partialArrayView, 1, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 1, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 4; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 2) + &quot;]&quot;);
+
+        context.bufferSubData(target, 0, partialArrayView, 1, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 4, receiver, 0, 3);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 3; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 3) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferSubData(target, 0, partialArrayView, 1, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 8, receiver, 1, 2);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 2; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 4) + &quot;]&quot;);
+
+
+
+        ////////////////////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////////////////////
+        // Give the buffer a size which is big enough to hold the entire buffer
+        fillReceiver();
+        context.bufferData(target, receiver, context.STATIC_DRAW);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+
+
+
+        context.bufferSubData(target, 4, arrayBuffer);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 0, 11);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 10; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + i + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferSubData(target, 4, arrayBuffer);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 1, 11);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        shouldBe(&quot;receiver[1]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 10; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 2) + &quot;]&quot;, &quot;fullArrayView[&quot; + i + &quot;]&quot;);
+
+        context.bufferSubData(target, 4, arrayBuffer);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 4, receiver, 0, 10);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 10; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + i + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferSubData(target, 4, arrayBuffer);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 8, receiver, 1, 8);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 8; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 1) + &quot;]&quot;);
+
+        ////////////////////////////////////////////////////////////////////////////////////////////////
+
+        context.bufferSubData(target, 4, partialArrayView);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 0, 6);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 5; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 1) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferSubData(target, 4, partialArrayView);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 1, 6);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        shouldBe(&quot;receiver[1]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 5; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 2) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 1) + &quot;]&quot;);
+
+        context.bufferSubData(target, 4, partialArrayView);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 4, receiver, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 4; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 1) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferSubData(target, 4, partialArrayView);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 8, receiver, 1, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 3; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 2) + &quot;]&quot;);
+
+        ////////////////////////////////////////////////////////////////////////////////////////////////
+
+        context.bufferSubData(target, 4, partialArrayView, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 0, 6);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 5; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 1) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferSubData(target, 4, partialArrayView, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 1, 6);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        shouldBe(&quot;receiver[1]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 5; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 2) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 1) + &quot;]&quot;);
+
+        context.bufferSubData(target, 4, partialArrayView, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 4, receiver, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 4; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 1) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferSubData(target, 4, partialArrayView, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 8, receiver, 1, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 3; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 2) + &quot;]&quot;);
+
+        ////////////////////////////////////////////////////////////////////////////////////////////////
+
+        context.bufferSubData(target, 4, partialArrayView, 1, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 0, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 4; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 2) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferSubData(target, 4, partialArrayView, 1, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 0, receiver, 1, 5);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        shouldBe(&quot;receiver[1]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 4; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 2) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 2) + &quot;]&quot;);
+
+        context.bufferSubData(target, 4, partialArrayView, 1, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 4, receiver, 0, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        for (var i = 0; i &lt; 4; ++i)
+                shouldBe(&quot;receiver[&quot; + i + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 2) + &quot;]&quot;);
+
+        fillReceiver();
+        context.bufferSubData(target, 4, partialArrayView, 1, 4);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        context.getBufferSubData(target, 8, receiver, 1, 3);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+        shouldBe(&quot;receiver[0]&quot;, &quot;sentinel&quot;);
+        for (var i = 0; i &lt; 3; ++i)
+                shouldBe(&quot;receiver[&quot; + (i + 1) + &quot;]&quot;, &quot;fullArrayView[&quot; + (i + 3) + &quot;]&quot;);
+
+
+
+        context.deleteBuffer(buffer);
+        shouldBe(&quot;context.getError()&quot;, &quot;context.NO_ERROR&quot;);
+}
+&lt;/script&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (208362 => 208363)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-11-04 01:47:53 UTC (rev 208362)
+++ trunk/Source/WebCore/ChangeLog        2016-11-04 01:57:15 UTC (rev 208363)
</span><span class="lines">@@ -1,3 +1,38 @@
</span><ins>+2016-11-03  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
+
+        [WebGL2] Implement getBufferSubData()
+        https://bugs.webkit.org/show_bug.cgi?id=164111
+
+        Reviewed by Dean Jackson.
+
+        The call exists in OpenGL 3.2 but in order to have parity with
+        OpenGL ES 3 we back it with glMapBufferRange() instead.
+
+        This patch simply adds surface area to GraphicsContext3D
+        until we can get an ANGLE implementation of it.
+
+        When testing this patch I discovered that r207649 incorrectly
+        interpreted arguments to bufferData() and bufferSubData() as
+        byte offsets. Instead, they should be element indices. This
+        patch fixes those functions to work correctly so that
+        getBufferSubData() can be tested correctly.
+
+        Tests: fast/canvas/webgl/webgl2-buffers.html
+               fast/canvas/webgl/getBufferSubData-webgl1.html
+
+        * html/canvas/WebGL2RenderingContext.cpp:
+        (WebCore::arrayBufferViewElementSize):
+        (WebCore::WebGL2RenderingContext::bufferData):
+        (WebCore::WebGL2RenderingContext::bufferSubData):
+        (WebCore::WebGL2RenderingContext::getBufferSubData):
+        * html/canvas/WebGL2RenderingContext.h:
+        * html/canvas/WebGL2RenderingContext.idl:
+        * platform/graphics/GraphicsContext3D.h:
+        * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
+        (WebCore::GraphicsContext3D::getBufferSubData):
+        (WebCore::GraphicsContext3D::mapBufferRange):
+        (WebCore::GraphicsContext3D::unmapBuffer):
+
</ins><span class="cx"> 2016-11-03  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, mark support for the 'download' attribute as 'Done'.
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasWebGL2RenderingContextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp (208362 => 208363)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp        2016-11-04 01:47:53 UTC (rev 208362)
+++ trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp        2016-11-04 01:57:15 UTC (rev 208363)
</span><span class="lines">@@ -88,13 +88,49 @@
</span><span class="cx">     m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_EXT_frag_depth&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebGL2RenderingContext::bufferData(GC3Denum target, ArrayBufferView&amp; data, GC3Denum usage, GC3Duint srcOffset, GC3Duint length)
</del><ins>+inline static Optional&lt;unsigned&gt; arrayBufferViewElementSize(const ArrayBufferView&amp; data)
</ins><span class="cx"> {
</span><del>-    if (srcOffset &gt; data.byteLength() || length &gt; data.byteLength() - srcOffset) {
</del><ins>+    switch (data.getType()) {
+    case JSC::NotTypedArray:
+    case JSC::TypeDataView:
+        return Nullopt;
+    case JSC::TypeInt8:
+    case JSC::TypeUint8:
+    case JSC::TypeUint8Clamped:
+    case JSC::TypeInt16:
+    case JSC::TypeUint16:
+    case JSC::TypeInt32:
+    case JSC::TypeUint32:
+    case JSC::TypeFloat32:
+    case JSC::TypeFloat64:
+        return elementSize(data.getType());
+    }
+}
+
+void WebGL2RenderingContext::bufferData(GC3Denum target, const ArrayBufferView&amp; data, GC3Denum usage, GC3Duint srcOffset, GC3Duint length)
+{
+    auto optionalElementSize = arrayBufferViewElementSize(data);
+    if (!optionalElementSize) {
+        synthesizeGLError(GraphicsContext3D::INVALID_OPERATION, &quot;bufferData&quot;, &quot;Invalid type of Array Buffer View&quot;);
+        return;
+    }
+    auto elementSize = optionalElementSize.value();
+    Checked&lt;GC3Duint, RecordOverflow&gt; checkedElementSize(elementSize);
+
+    Checked&lt;GC3Duint, RecordOverflow&gt; checkedSrcOffset(srcOffset);
+    Checked&lt;GC3Duint, RecordOverflow&gt; checkedByteSrcOffset = checkedSrcOffset * checkedElementSize;
+    Checked&lt;GC3Duint, RecordOverflow&gt; checkedlength(length);
+    Checked&lt;GC3Duint, RecordOverflow&gt; checkedByteLength = checkedlength * checkedElementSize;
+
+    if (checkedByteSrcOffset.hasOverflowed()
+        || checkedByteLength.hasOverflowed()
+        || checkedByteSrcOffset.unsafeGet() &gt; data.byteLength()
+        || checkedByteLength.unsafeGet() &gt; data.byteLength() - checkedByteSrcOffset.unsafeGet()) {
</ins><span class="cx">         synthesizeGLError(GraphicsContext3D::INVALID_VALUE, &quot;bufferData&quot;, &quot;srcOffset or length is out of bounds&quot;);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    auto slice = Uint8Array::create(data.unsharedBuffer(), data.byteOffset() + srcOffset, length);
</del><ins>+
+    auto slice = Uint8Array::create(data.possiblySharedBuffer(), data.byteOffset() + checkedByteSrcOffset.unsafeGet(), checkedByteLength.unsafeGet());
</ins><span class="cx">     if (!slice) {
</span><span class="cx">         synthesizeGLError(GraphicsContext3D::OUT_OF_MEMORY, &quot;bufferData&quot;, &quot;Could not create intermediate ArrayBufferView&quot;);
</span><span class="cx">         return;
</span><span class="lines">@@ -102,17 +138,35 @@
</span><span class="cx">     WebGLRenderingContextBase::bufferData(target, BufferDataSource(slice.get()), usage);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebGL2RenderingContext::bufferSubData(GC3Denum target, long long offset, ArrayBufferView&amp; data, GC3Duint srcOffset, GC3Duint length)
</del><ins>+void WebGL2RenderingContext::bufferSubData(GC3Denum target, long long offset, const ArrayBufferView&amp; data, GC3Duint srcOffset, GC3Duint length)
</ins><span class="cx"> {
</span><del>-    if (srcOffset &gt; data.byteLength() || length &gt; data.byteLength() - srcOffset) {
-        synthesizeGLError(GraphicsContext3D::INVALID_VALUE, &quot;bufferData&quot;, &quot;srcOffset or length is out of bounds&quot;);
</del><ins>+    auto optionalElementSize = arrayBufferViewElementSize(data);
+    if (!optionalElementSize) {
+        synthesizeGLError(GraphicsContext3D::INVALID_OPERATION, &quot;bufferSubData&quot;, &quot;Invalid type of Array Buffer View&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    auto slice = Uint8Array::create(data.unsharedBuffer(), data.byteOffset() + srcOffset, length);
</del><ins>+    auto elementSize = optionalElementSize.value();
+    Checked&lt;GC3Duint, RecordOverflow&gt; checkedElementSize(elementSize);
+
+    Checked&lt;GC3Duint, RecordOverflow&gt; checkedSrcOffset(srcOffset);
+    Checked&lt;GC3Duint, RecordOverflow&gt; checkedByteSrcOffset = checkedSrcOffset * checkedElementSize;
+    Checked&lt;GC3Duint, RecordOverflow&gt; checkedlength(length);
+    Checked&lt;GC3Duint, RecordOverflow&gt; checkedByteLength = checkedlength * checkedElementSize;
+
+    if (checkedByteSrcOffset.hasOverflowed()
+        || checkedByteLength.hasOverflowed()
+        || checkedByteSrcOffset.unsafeGet() &gt; data.byteLength()
+        || checkedByteLength.unsafeGet() &gt; data.byteLength() - checkedByteSrcOffset.unsafeGet()) {
+        synthesizeGLError(GraphicsContext3D::INVALID_VALUE, &quot;bufferSubData&quot;, &quot;srcOffset or length is out of bounds&quot;);
+        return;
+    }
+
+    auto slice = Uint8Array::create(data.possiblySharedBuffer(), data.byteOffset() + checkedByteSrcOffset.unsafeGet(), checkedByteLength.unsafeGet());
</ins><span class="cx">     if (!slice) {
</span><del>-        synthesizeGLError(GraphicsContext3D::OUT_OF_MEMORY, &quot;bufferData&quot;, &quot;Could not create intermediate ArrayBufferView&quot;);
</del><ins>+        synthesizeGLError(GraphicsContext3D::OUT_OF_MEMORY, &quot;bufferSubData&quot;, &quot;Could not create intermediate ArrayBufferView&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><ins>+
</ins><span class="cx">     WebGLRenderingContextBase::bufferSubData(target, offset, BufferDataSource(slice.get()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -120,8 +174,74 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebGL2RenderingContext::getBufferSubData(GC3Denum, GC3Dint64, ArrayBuffer*)
</del><ins>+void WebGL2RenderingContext::getBufferSubData(GC3Denum target, long long srcByteOffset, RefPtr&lt;ArrayBufferView&gt;&amp;&amp; dstData, GC3Duint dstOffset, GC3Duint length)
</ins><span class="cx"> {
</span><ins>+    if (isContextLostOrPending())
+        return;
+    WebGLBuffer* buffer = validateBufferDataParameters(&quot;bufferSubData&quot;, target, GraphicsContext3D::STATIC_DRAW);
+    if (!buffer) {
+        synthesizeGLError(GraphicsContext3D::INVALID_OPERATION, &quot;getBufferSubData&quot;, &quot;No WebGLBuffer is bound to target&quot;);
+        return;
+    }
+
+    // FIXME: Implement &quot;If target is TRANSFORM_FEEDBACK_BUFFER, and any transform feedback object is currently active, an INVALID_OPERATION error is generated.&quot;
+
+    if (!dstData) {
+        synthesizeGLError(GraphicsContext3D::INVALID_OPERATION, &quot;getBufferSubData&quot;, &quot;Null dstData&quot;);
+        return;
+    }
+
+    auto optionalElementSize = arrayBufferViewElementSize(*dstData);
+    if (!optionalElementSize) {
+        synthesizeGLError(GraphicsContext3D::INVALID_OPERATION, &quot;getBufferSubData&quot;, &quot;Invalid type of Array Buffer View&quot;);
+        return;
+    }
+    auto elementSize = optionalElementSize.value();
+    auto dstDataLength = dstData-&gt;byteLength() / elementSize;
+
+    if (dstOffset &gt; dstDataLength) {
+        synthesizeGLError(GraphicsContext3D::INVALID_OPERATION, &quot;getBufferSubData&quot;, &quot;dstOffset is larger than the length of the destination buffer.&quot;);
+        return;
+    }
+
+    GC3Duint copyLength = length ? length : dstDataLength - dstOffset;
+
+    Checked&lt;GC3Duint, RecordOverflow&gt; checkedDstOffset(dstOffset);
+    Checked&lt;GC3Duint, RecordOverflow&gt; checkedCopyLength(copyLength);
+    auto checkedDestinationEnd = checkedDstOffset + checkedCopyLength;
+    if (checkedDestinationEnd.hasOverflowed()) {
+        synthesizeGLError(GraphicsContext3D::INVALID_OPERATION, &quot;getBufferSubData&quot;, &quot;dstOffset + copyLength is too high&quot;);
+        return;
+    }
+
+    if (checkedDestinationEnd.unsafeGet() &gt; dstDataLength) {
+        synthesizeGLError(GraphicsContext3D::INVALID_OPERATION, &quot;getBufferSubData&quot;, &quot;end of written destination is past the end of the buffer&quot;);
+        return;
+    }
+
+    if (srcByteOffset &lt; 0) {
+        synthesizeGLError(GraphicsContext3D::INVALID_OPERATION, &quot;getBufferSubData&quot;, &quot;srcByteOffset is less than 0&quot;);
+        return;
+    }
+
+    Checked&lt;GC3Dintptr, RecordOverflow&gt; checkedSrcByteOffset(srcByteOffset);
+    Checked&lt;GC3Dintptr, RecordOverflow&gt; checkedCopyLengthPtr(copyLength);
+    Checked&lt;GC3Dintptr, RecordOverflow&gt; checkedElementSize(elementSize);
+    auto checkedSourceEnd = checkedSrcByteOffset + checkedCopyLengthPtr * checkedElementSize;
+    if (checkedSourceEnd.hasOverflowed() || checkedSourceEnd.unsafeGet() &gt; buffer-&gt;byteLength()) {
+        synthesizeGLError(GraphicsContext3D::INVALID_OPERATION, &quot;getBufferSubData&quot;, &quot;Parameters would read outside the bounds of the source buffer&quot;);
+        return;
+    }
+
+    m_context-&gt;moveErrorsToSyntheticErrorList();
+#if PLATFORM(MAC) || PLATFORM(IOS)
+    // FIXME: Coalesce multiple getBufferSubData() calls to use a single map() call
+    void* ptr = m_context-&gt;mapBufferRange(target, checkedSrcByteOffset.unsafeGet(), static_cast&lt;GC3Dsizeiptr&gt;(checkedCopyLengthPtr.unsafeGet() * checkedElementSize.unsafeGet()), GraphicsContext3D::MAP_READ_BIT);
+    memcpy(static_cast&lt;char*&gt;(dstData-&gt;baseAddress()) + dstData-&gt;byteOffset() + dstOffset * elementSize, ptr, copyLength * elementSize);
+    bool success = m_context-&gt;unmapBuffer(target);
+    ASSERT_UNUSED(success, success);
+#endif
+    m_context-&gt;moveErrorsToSyntheticErrorList();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebGL2RenderingContext::blitFramebuffer(GC3Dint, GC3Dint, GC3Dint, GC3Dint, GC3Dint, GC3Dint, GC3Dint, GC3Dint, GC3Dbitfield, GC3Denum)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasWebGL2RenderingContexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.h (208362 => 208363)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.h        2016-11-04 01:47:53 UTC (rev 208362)
+++ trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.h        2016-11-04 01:57:15 UTC (rev 208363)
</span><span class="lines">@@ -46,11 +46,10 @@
</span><span class="cx">     /* Buffer objects */
</span><span class="cx">     using WebGLRenderingContextBase::bufferData;
</span><span class="cx">     using WebGLRenderingContextBase::bufferSubData;
</span><del>-    void bufferData(GC3Denum target, ArrayBufferView&amp; data, GC3Denum usage, GC3Duint srcOffset, GC3Duint length);
-    void bufferSubData(GC3Denum target, long long offset, ArrayBufferView&amp; data, GC3Duint srcOffset, GC3Duint length);
</del><ins>+    void bufferData(GC3Denum target, const ArrayBufferView&amp; data, GC3Denum usage, GC3Duint srcOffset, GC3Duint length);
+    void bufferSubData(GC3Denum target, long long offset, const ArrayBufferView&amp; data, GC3Duint srcOffset, GC3Duint length);
</ins><span class="cx">     void copyBufferSubData(GC3Denum readTarget, GC3Denum writeTarget, GC3Dint64 readOffset, GC3Dint64 writeOffset, GC3Dint64 size);
</span><del>-    void getBufferSubData(GC3Denum target, GC3Dint64 offset, RefPtr&lt;ArrayBufferView&gt;&amp;&amp; returnedData);
-    void getBufferSubData(GC3Denum target, GC3Dint64 offset, ArrayBuffer* returnedData);
</del><ins>+    void getBufferSubData(GC3Denum target, long long srcByteOffset, RefPtr&lt;ArrayBufferView&gt;&amp;&amp; dstData, GC3Duint dstOffset = 0, GC3Duint length = 0);
</ins><span class="cx">     
</span><span class="cx">     /* Framebuffer objects */
</span><span class="cx">     WebGLGetInfo getFramebufferAttachmentParameter(GC3Denum target, GC3Denum attachment, GC3Denum pname) final;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasWebGL2RenderingContextidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.idl (208362 => 208363)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.idl        2016-11-04 01:47:53 UTC (rev 208362)
+++ trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.idl        2016-11-04 01:57:15 UTC (rev 208363)
</span><span class="lines">@@ -349,7 +349,7 @@
</span><span class="cx">     // MapBufferRange, in particular its read-only and write-only modes,
</span><span class="cx">     // can not be exposed safely to JavaScript. GetBufferSubData
</span><span class="cx">     // replaces it for the purpose of fetching data back from the GPU.
</span><del>-    void getBufferSubData(GLenum target, GLintptr offset, ArrayBuffer? returnedData);
</del><ins>+    void getBufferSubData(GLenum target, GLintptr srcByteOffset, ArrayBufferView dstData, optional GLuint dstOffset = 0, optional GLuint length = 0);
</ins><span class="cx"> 
</span><span class="cx">     /* Framebuffer objects */
</span><span class="cx">     void blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsGraphicsContext3Dh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/GraphicsContext3D.h (208362 => 208363)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/GraphicsContext3D.h        2016-11-04 01:47:53 UTC (rev 208362)
+++ trunk/Source/WebCore/platform/graphics/GraphicsContext3D.h        2016-11-04 01:57:15 UTC (rev 208363)
</span><span class="lines">@@ -712,7 +712,10 @@
</span><span class="cx">         TEXTURE_IMMUTABLE_FORMAT = 0x912F,
</span><span class="cx">         MAX_ELEMENT_INDEX = 0x8D6B,
</span><span class="cx">         NUM_SAMPLE_COUNTS = 0x9380,
</span><del>-        TEXTURE_IMMUTABLE_LEVELS = 0x82DF
</del><ins>+        TEXTURE_IMMUTABLE_LEVELS = 0x82DF, 
+
+        // OpenGL ES 3 constants
+        MAP_READ_BIT = 0x0001
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     // Context creation attributes.
</span><span class="lines">@@ -965,6 +968,9 @@
</span><span class="cx">     void bufferData(GC3Denum target, GC3Dsizeiptr size, const void* data, GC3Denum usage);
</span><span class="cx">     void bufferSubData(GC3Denum target, GC3Dintptr offset, GC3Dsizeiptr size, const void* data);
</span><span class="cx"> 
</span><ins>+    void* mapBufferRange(GC3Denum target, GC3Dintptr offset, GC3Dsizeiptr length, GC3Dbitfield access);
+    GC3Dboolean unmapBuffer(GC3Denum target);
+
</ins><span class="cx">     GC3Denum checkFramebufferStatus(GC3Denum target);
</span><span class="cx">     void clear(GC3Dbitfield mask);
</span><span class="cx">     void clearColor(GC3Dclampf red, GC3Dclampf green, GC3Dclampf blue, GC3Dclampf alpha);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsopenglGraphicsContext3DOpenGLCommoncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp (208362 => 208363)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp        2016-11-04 01:47:53 UTC (rev 208362)
+++ trunk/Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp        2016-11-04 01:57:15 UTC (rev 208363)
</span><span class="lines">@@ -59,6 +59,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx"> #import &lt;OpenGLES/ES2/glext.h&gt;
</span><ins>+#import &lt;OpenGLES/ES3/gl.h&gt;
</ins><span class="cx"> // From &lt;OpenGLES/glext.h&gt;
</span><span class="cx"> #define GL_RGBA32F_ARB                      0x8814
</span><span class="cx"> #define GL_RGB32F_ARB                       0x8815
</span><span class="lines">@@ -66,7 +67,10 @@
</span><span class="cx"> #if USE(OPENGL_ES_2)
</span><span class="cx"> #include &quot;OpenGLESShims.h&quot;
</span><span class="cx"> #elif PLATFORM(MAC)
</span><ins>+#define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED
</ins><span class="cx"> #include &lt;OpenGL/gl.h&gt;
</span><ins>+#include &lt;OpenGL/gl3.h&gt;
+#undef GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED
</ins><span class="cx"> #elif PLATFORM(GTK) || PLATFORM(EFL) || PLATFORM(WIN)
</span><span class="cx"> #include &quot;OpenGLShims.h&quot;
</span><span class="cx"> #endif
</span><span class="lines">@@ -547,6 +551,20 @@
</span><span class="cx">     ::glBufferSubData(target, offset, size, data);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if PLATFORM(MAC) || PLATFORM(IOS)
+void* GraphicsContext3D::mapBufferRange(GC3Denum target, GC3Dintptr offset, GC3Dsizeiptr length, GC3Dbitfield access)
+{
+    makeContextCurrent();
+    return ::glMapBufferRange(target, offset, length, access);
+}
+
+GC3Dboolean GraphicsContext3D::unmapBuffer(GC3Denum target)
+{
+    makeContextCurrent();
+    return ::glUnmapBuffer(target);
+}
+#endif
+
</ins><span class="cx"> GC3Denum GraphicsContext3D::checkFramebufferStatus(GC3Denum target)
</span><span class="cx"> {
</span><span class="cx">     makeContextCurrent();
</span></span></pre>
</div>
</div>

</body>
</html>