// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import { assert } from 'chai';
import * as Common from './common.js';
const CharacterIdMap = Common.CharacterIdMap.CharacterIdMap;
describe('CharacterIdMap class', () => {
    it('is able to convert an element to a character', () => {
        const testElement = {};
        const characterIdMap = new CharacterIdMap();
        assert.strictEqual(characterIdMap.toChar(testElement), '!', 'element was not converted correctly');
    });
    it('is able to convert a character to an element', () => {
        const testElement = {};
        const characterIdMap = new CharacterIdMap();
        assert.strictEqual(characterIdMap.toChar(testElement), '!', 'element was not converted correctly');
        assert.strictEqual(characterIdMap.fromChar('!'), testElement, 'character was not converted correctly');
    });
    it('returns the same character when trying to convert an element that was already converted', () => {
        const testElement = {};
        const characterIdMap = new CharacterIdMap();
        assert.strictEqual(characterIdMap.toChar(testElement), '!', 'element was not converted correctly');
        assert.strictEqual(characterIdMap.toChar(testElement), '!', 'element was not converted correctly');
    });
    it('throws an error when trying to convert a number when there is no capacity left', () => {
        const upperLimit = 0xFFFF;
        const characterIdMap = new CharacterIdMap();
        assert.throws(() => {
            for (let index = 0; index <= upperLimit; index++) {
                const el = {
                    id: 'Div' + index,
                };
                characterIdMap.toChar(el);
            }
        }, 'CharacterIdMap ran out of capacity!');
    });
    it('returns null when trying to convert  a character that does not exist in the Map', () => {
        const characterIdMap = new CharacterIdMap();
        assert.isNull(characterIdMap.fromChar('!'), 'character was not converted correctly');
    });
});
//# sourceMappingURL=CharacterIdMap.test.js.map