1// Copyright Joyent, Inc. and other Node contributors. 2// 3// Permission is hereby granted, free of charge, to any person obtaining a 4// copy of this software and associated documentation files (the 5// "Software"), to deal in the Software without restriction, including 6// without limitation the rights to use, copy, modify, merge, publish, 7// distribute, sublicense, and/or sell copies of the Software, and to permit 8// persons to whom the Software is furnished to do so, subject to the 9// following conditions: 10// 11// The above copyright notice and this permission notice shall be included 12// in all copies or substantial portions of the Software. 13// 14// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 15// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 17// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 19// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 20// USE OR OTHER DEALINGS IN THE SOFTWARE. 21 22'use strict'; 23require('../common'); 24const assert = require('assert'); 25 26// ASCII conversion in node.js simply masks off the high bits, 27// it doesn't do transliteration. 28assert.strictEqual(Buffer.from('hérité').toString('ascii'), 'hC)ritC)'); 29 30// 71 characters, 78 bytes. The ’ character is a triple-byte sequence. 31const input = 'C’est, graphiquement, la réunion d’un accent aigu ' + 32 'et d’un accent grave.'; 33 34const expected = 'Cb\u0000\u0019est, graphiquement, la rC)union ' + 35 'db\u0000\u0019un accent aigu et db\u0000\u0019un ' + 36 'accent grave.'; 37 38const buf = Buffer.from(input); 39 40for (let i = 0; i < expected.length; ++i) { 41 assert.strictEqual(buf.slice(i).toString('ascii'), expected.slice(i)); 42 43 // Skip remainder of multi-byte sequence. 44 if (input.charCodeAt(i) > 65535) ++i; 45 if (input.charCodeAt(i) > 127) ++i; 46} 47