mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-31 19:53:50 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| //@ skip if $architecture == "mips"
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| function assert(b) {
 | |
|     if (!b)
 | |
|         throw new Error;
 | |
| }
 | |
| 
 | |
| function test() {
 | |
|     function storeLittleEndian(dv, index, value) {
 | |
|         dv.setFloat32(index, value, true);
 | |
|     }
 | |
|     noInline(storeLittleEndian);
 | |
| 
 | |
|     function storeBigEndian(dv, index, value) {
 | |
|         dv.setFloat32(index, value, false);
 | |
|     }
 | |
|     noInline(storeBigEndian);
 | |
| 
 | |
|     function store(dv, index, value, littleEndian) {
 | |
|         dv.setFloat32(index, value, littleEndian);
 | |
|     }
 | |
|     noInline(store);
 | |
| 
 | |
|     let buffer = new ArrayBuffer(4);
 | |
|     let arr = new Float32Array(buffer);
 | |
|     let bits = new Uint32Array(buffer);
 | |
|     let dv = new DataView(buffer);
 | |
| 
 | |
|     for (let i = 0; i < 10000; ++i) {
 | |
|         storeLittleEndian(dv, 0, 1.5);
 | |
|         assert(arr[0] === 1.5);
 | |
| 
 | |
|         storeLittleEndian(dv, 0, 12912.124123215122);
 | |
|         assert(arr[0] === 12912.1240234375);
 | |
|         assert(bits[0] === 0x4649c07f);
 | |
| 
 | |
|         storeLittleEndian(dv, 0, NaN);
 | |
|         assert(isNaN(arr[0]));
 | |
|         assert(bits[0] === 0x7FC00000);
 | |
| 
 | |
|         storeLittleEndian(dv, 0, 2.3879393e-38);
 | |
|         assert(arr[0] === 2.387939260590663e-38);
 | |
|         assert(bits[0] === 0x01020304);
 | |
| 
 | |
|         storeBigEndian(dv, 0, 2.3879393e-38);
 | |
|         assert(arr[0] === 1.539989614439558e-36);
 | |
|         assert(bits[0] === 0x04030201);
 | |
|     }
 | |
| }
 | |
| test(); |