| // Copyright 2020 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Include test fixture. |
| GEN_INCLUDE(['testing/common_e2e_test_base.js']); |
| |
| /** Test fixture for array_util.js. */ |
| AccessibilityExtensionArrayUtilTest = class extends CommonE2ETestBase { |
| /** @override */ |
| async setUpDeferred() { |
| await super.setUpDeferred(); |
| await importModule('ArrayUtil', '/common/array_util.js'); |
| } |
| }; |
| |
| AX_TEST_F('AccessibilityExtensionArrayUtilTest', 'ContentsAreEqual', function() { |
| const even1 = [2, 4, 6, 8]; |
| const even2 = [2, 4, 6, 8]; |
| const odd = [1, 3, 5, 7, 9]; |
| const powersOf2 = [2, 4, 8, 16]; |
| |
| assertFalse( |
| ArrayUtil.contentsAreEqual(even1, odd), |
| 'Arrays with different lengths should not be equal.'); |
| assertFalse( |
| ArrayUtil.contentsAreEqual(even1, powersOf2), |
| 'Arrays with some common elements should not be equal.'); |
| assertTrue( |
| ArrayUtil.contentsAreEqual(even1, even1), |
| 'Arrays should equal themselves.'); |
| assertTrue( |
| ArrayUtil.contentsAreEqual(even1, even2), |
| 'Two different array objects with the same elements should be equal.'); |
| |
| const obj = {}; |
| const arrayWithObj = [obj]; |
| const secondArrayWithObj = [obj]; |
| const arrayWithDifferentObj = [{}]; |
| |
| assertNotEquals( |
| arrayWithObj, secondArrayWithObj, |
| 'Different array instances with the same contents should not be ' + |
| 'equal with ===.'); |
| assertTrue( |
| ArrayUtil.contentsAreEqual(arrayWithObj, secondArrayWithObj), |
| 'Different array instances with references to the same object ' + |
| 'instance should be equal with contentsAreEqual.'); |
| assertFalse( |
| ArrayUtil.contentsAreEqual(arrayWithObj, arrayWithDifferentObj), |
| 'Arrays with different objects should not be equal (ArrayUtil.' + |
| 'contentsAreEqual uses shallow equality for the elements).'); |
| }); |