67 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| (function () {
 | ||
| 'use strict';
 | ||
| 
 | ||
| var Unibabel = window.Unibabel;
 | ||
| 
 | ||
| //UTF-8
 | ||
| var pass = true;
 | ||
| var str = "I ½ ♥ 𩶘";
 | ||
| var buf = Unibabel.utf8ToBuffer(str);
 | ||
| var base64 = Unibabel.bufferToBase64(buf);
 | ||
| var hex = Unibabel.bufferToHex(buf);
 | ||
| 
 | ||
| function buffersAreEqual(buf1, buf2) {
 | ||
|   if (buf1.length !== buf2.length) {
 | ||
|     return false;
 | ||
|   }
 | ||
|   return Array.prototype.every.call(buf1, function (byte, i) {
 | ||
|     if (byte === buf2[i]) {
 | ||
|       return true;
 | ||
|     }
 | ||
|   });
 | ||
| }
 | ||
| 
 | ||
| console.log('buffer', buf);
 | ||
| // TODO compare buffer
 | ||
| var reference = [ 73, 32, 194, 189, 32, 226, 153, 165, 32, 240, 169, 182, 152 ];
 | ||
| if (!buffersAreEqual(buf, reference)) {
 | ||
|   pass = false;
 | ||
|   console.log('[FAIL] utf8 -> buffer', buf);
 | ||
| }
 | ||
| if (base64 !== "SSDCvSDimaUg8Km2mA==") {
 | ||
|   pass = false;
 | ||
|   console.log('[FAIL] utf8 -> base64', base64);
 | ||
| }
 | ||
| if (hex !== "4920c2bd20e299a520f0a9b698") {
 | ||
|   pass = false;
 | ||
|   console.log('[FAIL] utf8 -> hex', hex);
 | ||
| }
 | ||
| 
 | ||
| 
 | ||
| // binary
 | ||
| var bytes = [ 255, 226, 26, 243, 134, 206, 147, 107 ];
 | ||
| buf = new Uint8Array(bytes);
 | ||
| str = Unibabel.bufferToBinaryString(buf);
 | ||
| base64 = Unibabel.bufferToBase64(buf);
 | ||
| hex = Unibabel.bufferToHex(buf);
 | ||
| 
 | ||
| // This can't be properly tested because binary strings can't be parsed
 | ||
| // if (str !== "ÿâóÎk") {
 | ||
| //   pass = false;
 | ||
| //   console.log('[FAIL] binary -> str', str);
 | ||
| // }
 | ||
| if ("/+Ia84bOk2s=" !== base64) {
 | ||
|   pass = false;
 | ||
|   console.log('[FAIL] binary -> base64', base64);
 | ||
| }
 | ||
| if (hex !== "ffe21af386ce936b") {
 | ||
|   pass = false;
 | ||
|   console.log('[FAIL] binary -> hex', hex);
 | ||
| }
 | ||
| 
 | ||
| if (pass) {
 | ||
|   console.log('[PASS] :-D');
 | ||
| }
 | ||
| 
 | ||
| }());
 |