UNPKG

chrome-devtools-frontend

Version:
51 lines (43 loc) 1.69 kB
// Copyright (c) 2020 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import * as Platform from './platform.js'; describe('MapUtilities', () => { describe('inverse', () => { it('inverts the map returning a multimap with the map\'s values as keys and the map\'s keys as values', () => { const pairs: ReadonlyArray<readonly[string, number]> = [ ['a', 1], ['b', 2], ['c', 3], ['d', 1], ]; const map = new Map(pairs); const inverse = Platform.MapUtilities.inverse(map); for (const [, value] of pairs) { assert.sameMembers([...inverse.get(value)], [...getKeys(value)]); } function getKeys(lookupValue: number): Set<string> { const keys = new Set<string>(); for (const [key, value] of pairs) { if (value === lookupValue) { keys.add(key); } } return keys; } }); }); describe('getWithDefault', () => { it('returns the default when it has no value', () => { const expected = new Set(); const returned = Platform.MapUtilities.getWithDefault(new Map(), 'foo', () => expected); assert.strictEqual(expected, returned); }); it('returns the same item on successive calls', () => { const data = new Map<string, Set<void>>(); const returnedFirst = Platform.MapUtilities.getWithDefault(data, 'foo', () => new Set()); const returnedSecond = Platform.MapUtilities.getWithDefault(data, 'foo', () => new Set()); assert.strictEqual(returnedFirst, returnedSecond); }); }); });