/*
 * SPDX-FileCopyrightText: 2023 The HedgeDoc developers (see AUTHORS file)
 *
 * SPDX-License-Identifier: AGPL-3.0-only
 */
import { describe, it, expect } from '@jest/globals';
import { ConsoleLoggerService } from './console-logger.service';

describe('sanitize', () => {
  it('removes non-printable ASCII character', () => {
    for (let i = 0; i < 32; i++) {
      const nonPrintableString = String.fromCharCode(i);
      expect(ConsoleLoggerService.sanitize(`a${nonPrintableString}b`)).toEqual('ab');
    }
  });
  it('replaces non-zero-width space with space', () => {
    const nonZeroWidthSpaces = [
      '\u0020', // space
      '\u00A0', // non-breaking space
      '\u2000', // en quad
      '\u2001', // en quad
      '\u2002', // en space
      '\u2003', // en space
      '\u2004', // three-per-em space
      '\u2005', // four-per-em space
      '\u2006', // six-per-em space
      '\u2007', // figure space
      '\u2008', // punctuation space
      '\u2009', // thin space
      '\u200a', // hair space
      '\u202F', // narrow no-break space
      '\u205F', // medium mathematical space
      '\u3000', // ideographic space
    ];
    nonZeroWidthSpaces.forEach((space) => {
      expect(ConsoleLoggerService.sanitize(`c${space}d`)).toEqual('c d');
    });
  });
});
