| // Copyright (C) 2019 The Android Open Source Project | 
 | // | 
 | // Licensed under the Apache License, Version 2.0 (the "License"); | 
 | // you may not use this file except in compliance with the License. | 
 | // You may obtain a copy of the License at | 
 | // | 
 | //      http://www.apache.org/licenses/LICENSE-2.0 | 
 | // | 
 | // Unless required by applicable law or agreed to in writing, software | 
 | // distributed under the License is distributed on an "AS IS" BASIS, | 
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | // See the License for the specific language governing permissions and | 
 | // limitations under the License. | 
 |  | 
 | import { | 
 |   base64Decode, | 
 |   base64Encode, | 
 |   binaryDecode, | 
 |   binaryEncode, | 
 |   utf8Decode, | 
 |   utf8Encode, | 
 | } from './string_utils'; | 
 |  | 
 | test('string_utils.stringToBase64', () => { | 
 |   const bytes = [...'Hello, world'].map(c => c.charCodeAt(0)); | 
 |   const buffer = new Uint8Array(bytes); | 
 |   const b64Encoded = base64Encode(buffer); | 
 |   expect(b64Encoded).toEqual('SGVsbG8sIHdvcmxk'); | 
 |   expect(base64Decode(b64Encoded)).toEqual(buffer); | 
 | }); | 
 |  | 
 | test('string_utils.bufferToBase64', () => { | 
 |   const buffer = new Uint8Array([0xff, 0, 0, 0x81, 0x2a, 0xfe]); | 
 |   const b64Encoded = base64Encode(buffer); | 
 |   expect(b64Encoded).toEqual('/wAAgSr+'); | 
 |   expect(base64Decode(b64Encoded)).toEqual(buffer); | 
 | }); | 
 |  | 
 | test('string_utils.utf8EncodeAndDecode', () => { | 
 |   const testString = '¡HéllØ wörld!'; | 
 |   const buffer = utf8Encode(testString); | 
 |   expect(buffer).toEqual(new Uint8Array([ | 
 |     194, | 
 |     161, | 
 |     72, | 
 |     195, | 
 |     169, | 
 |     108, | 
 |     108, | 
 |     195, | 
 |     152, | 
 |     32, | 
 |     119, | 
 |     195, | 
 |     182, | 
 |     114, | 
 |     108, | 
 |     100, | 
 |     33 | 
 |   ])); | 
 |   expect(utf8Decode(buffer)).toEqual(testString); | 
 | }); | 
 |  | 
 | test('string_utils.binaryEncodeAndDecode', () => { | 
 |   const buf = new Uint8Array(256 + 4); | 
 |   for (let i = 0; i < 256; i++) { | 
 |     buf[i] = i; | 
 |   } | 
 |   buf.set([0xf0, 0x28, 0x8c, 0xbc], 256); | 
 |   const encodedStr = binaryEncode(buf); | 
 |   expect(encodedStr.length).toEqual(buf.length); | 
 |   const encodedThroughJson = JSON.parse(JSON.stringify(encodedStr)); | 
 |   expect(binaryDecode(encodedStr)).toEqual(buf); | 
 |   expect(binaryDecode(encodedThroughJson)).toEqual(buf); | 
 | }); |