mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-30 19:24:12 +01:00 
			
		
		
		
	* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import Builder from '../Builder.js';
 | |
| import * as assert from '../assert.js';
 | |
| 
 | |
| assert.throws(() => WebAssembly.Module.customSections(undefined, ""), TypeError, `WebAssembly.Module.customSections called with non WebAssembly.Module argument`);
 | |
| assert.eq(WebAssembly.Module.customSections.length, 2);
 | |
| 
 | |
| {
 | |
|     const empty = new WebAssembly.Module((new Builder()).WebAssembly().get());
 | |
|     assert.isArray(WebAssembly.Module.customSections(empty, ""));
 | |
|     assert.eq(WebAssembly.Module.customSections(empty, "").length, 0);
 | |
| }
 | |
| 
 | |
| {
 | |
|     const single = new WebAssembly.Module((new Builder())
 | |
|         .Unknown("hello").Byte(0x00).Byte(0x42).Byte(0xFF).End()
 | |
|         .WebAssembly().get());
 | |
|     assert.eq(WebAssembly.Module.customSections(single, "").length, 0);
 | |
|     const hello = WebAssembly.Module.customSections(single, "hello");
 | |
|     assert.eq(hello.length, 1);
 | |
|     assert.eq(hello[0].byteLength, 3);
 | |
|     const helloI8 = new Int8Array(hello[0]);
 | |
|     assert.eq(helloI8[0], 0x00);
 | |
|     assert.eq(helloI8[1], 0x42);
 | |
|     assert.eq(helloI8[2], -1);
 | |
| }
 | |
| 
 | |
| {
 | |
|     const unicode = new WebAssembly.Module((new Builder())
 | |
|         .Unknown("👨❤️💋👨").Byte(42).End()
 | |
|         .WebAssembly().get());
 | |
|     const family = WebAssembly.Module.customSections(unicode, "👨❤️💋👨");
 | |
|     assert.eq(family.length, 1);
 | |
|     assert.eq(family[0].byteLength, 1);
 | |
|     const familyI8 = new Int8Array(family[0]);
 | |
|     assert.eq(familyI8[0], 42);
 | |
| }
 | |
| 
 | |
| {
 | |
|     const many = new WebAssembly.Module((new Builder())
 | |
|         .Unknown("zero").Byte(0).End()
 | |
|         .Unknown("one").Byte(1).Byte(1).End()
 | |
|         .Unknown("one").Byte(2).Byte(2).Byte(2).End()
 | |
|         .Unknown("two").Byte(3).Byte(3).Byte(3).Byte(3).End()
 | |
|         .Unknown("one").Byte(4).Byte(4).Byte(4).Byte(4).Byte(4).End()
 | |
|         .WebAssembly().get());
 | |
| 
 | |
|     const zero = WebAssembly.Module.customSections(many, "zero");
 | |
|     assert.eq(zero.length, 1);
 | |
|     assert.eq(zero[0].byteLength, 1);
 | |
|     const zeroI8 = new Int8Array(zero[0]);
 | |
|     assert.eq(zeroI8[0], 0);
 | |
| 
 | |
|     const two = WebAssembly.Module.customSections(many, "two");
 | |
|     assert.eq(two.length, 1);
 | |
|     assert.eq(two[0].byteLength, 4);
 | |
|     const twoI8 = new Int8Array(two[0]);
 | |
|     assert.eq(twoI8[0], 3);
 | |
|     assert.eq(twoI8[1], 3);
 | |
|     assert.eq(twoI8[2], 3);
 | |
|     assert.eq(twoI8[3], 3);
 | |
| 
 | |
|     const one = WebAssembly.Module.customSections(many, "one");
 | |
|     assert.eq(one.length, 3);
 | |
|     let seen = 0;
 | |
|     const expect = [
 | |
|         [1, 1],
 | |
|         [2, 2, 2],
 | |
|         [4, 4, 4, 4, 4],
 | |
|     ];
 | |
|     for (const section of one) {
 | |
|         assert.eq(section.byteLength, expect[seen].length);
 | |
|         const I8 = new Int8Array(section);
 | |
|         for (let i = 0; i < expect[seen].length; ++i)
 | |
|             assert.eq(I8[i], expect[seen][i]);
 | |
|         ++seen;
 | |
|     }
 | |
| }
 |