mirror of
https://github.com/shaka-project/shaka-player.git
synced 2026-06-15 16:06:41 +03:00
83de1ad634
This ensures that we get the expected types and that type coercion doesn't convert between types. This also ensures we are consistent in how we check for equality of primitives in tests. Change-Id: I9f3aacdf25ab1afe5e8d6e4b895b5299ee687d54
93 lines
2.5 KiB
JavaScript
93 lines
2.5 KiB
JavaScript
/**
|
|
* @license
|
|
* Copyright 2016 Google Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
describe('ObjectUtils', () => {
|
|
const ObjectUtils = shaka.util.ObjectUtils;
|
|
|
|
describe('cloneObject', () => {
|
|
const cloneObject = ObjectUtils.cloneObject;
|
|
|
|
it('clones values and plain objects', () => {
|
|
expect(cloneObject(2)).toBe(2);
|
|
expect(cloneObject('foo')).toBe('foo');
|
|
expect(cloneObject(false)).toBe(false);
|
|
|
|
let o = {foo: 'bar', count: 123};
|
|
let copy = cloneObject(o);
|
|
expect(copy).not.toBe(o);
|
|
expect(copy).toEqual(o);
|
|
|
|
o = [1, 2, undefined, 4, 5];
|
|
copy = cloneObject(o);
|
|
expect(copy).not.toBe(o);
|
|
expect(copy).toEqual(o);
|
|
});
|
|
|
|
it('clones nested objects', () => {
|
|
const o = {
|
|
foo: 'bar',
|
|
lorem: 'ipsum',
|
|
dolor: {
|
|
sit: 123,
|
|
amet: ',',
|
|
consectetur: {},
|
|
adipisecing: [1, 2, 3],
|
|
elit: [
|
|
1, null,
|
|
{
|
|
sed: null,
|
|
do_: undefined,
|
|
eiusmod: [],
|
|
},
|
|
],
|
|
},
|
|
player: {
|
|
other: 123,
|
|
},
|
|
};
|
|
const copy = cloneObject(o);
|
|
expect(copy).not.toBe(o);
|
|
expect(copy).toEqual(o);
|
|
});
|
|
|
|
it('clones Arrays with non-default length', () => {
|
|
const a = [1, 2, 3];
|
|
a.length = 10;
|
|
const copy = cloneObject(a);
|
|
expect(copy).toEqual(a);
|
|
expect(copy.length).toBe(10);
|
|
});
|
|
|
|
it('ignores cyclic objects', () => {
|
|
const o = {foo: 'bar'};
|
|
o['baz'] = o;
|
|
expect(cloneObject(o)).toEqual({foo: 'bar', baz: null});
|
|
});
|
|
|
|
it('ignores non-simple Object objects', () => {
|
|
let o = {foo: 1, baz: /foo/g};
|
|
expect(cloneObject(o)).toEqual({foo: 1, baz: null});
|
|
|
|
o = {foo: 2, baz: new Date(123)};
|
|
expect(cloneObject(o)).toEqual({foo: 2, baz: null});
|
|
|
|
o = {foo: 3, baz: document.createElement('div')};
|
|
expect(cloneObject(o)).toEqual({foo: 3, baz: null});
|
|
});
|
|
});
|
|
});
|