1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- 'use strict'
- const tap = require('tap')
- const escapeValue = require('./escape-value')
- tap.test('throws for bad input', async t => {
- t.throws(
- () => escapeValue(42),
- Error('value must be a string')
- )
- })
- tap.test('reserved chars', t => {
- t.test('space', async t => {
- const input = ' has a leading and trailing space '
- const expected = '\\20has a leading and trailing space\\20'
- const result = escapeValue(input)
- t.equal(result, expected)
- })
- t.test('leading #', async t => {
- t.equal(escapeValue('#hashtag'), '\\23hashtag')
- })
- t.test('pompous name', async t => {
- t.equal(
- escapeValue('James "Jim" Smith, III'),
- 'James \\22Jim\\22 Smith\\2c III'
- )
- })
- t.test('carriage return', async t => {
- t.equal(escapeValue('Before\rAfter'), 'Before\\0dAfter')
- })
- t.end()
- })
- tap.test('2-byte utf-8', t => {
- t.test('Lučić', async t => {
- const expected = 'Lu\\c4\\8di\\c4\\87'
- t.equal(escapeValue('Lučić'), expected)
- })
- t.end()
- })
- tap.test('3-byte utf-8', t => {
- t.test('₠', async t => {
- t.equal(escapeValue('₠'), '\\e2\\82\\a0')
- })
- t.end()
- })
- tap.test('4-byte utf-8', t => {
- t.test('😀', async t => {
- t.equal(escapeValue('😀'), '\\f0\\9f\\98\\80')
- })
- t.end()
- })
|