blob: f765f6300fffedb0f1de45ee65966274e46c4b0f [file] [log] [blame]
// 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 * 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');
});
});