Skip to content

Commit

Permalink
Fix matricesDiffer ignoring first value of matrix
Browse files Browse the repository at this point in the history
Summary:
Changelog: [internal]

# Problem

Implementation of `matricesDiffer` was ignoring first element in the matrix, therefore two matrixes that were different were actually evaluated as same and React didn't pass value to native.

# Solution

Take first element in the matrix into account when comparing matrices.

Reviewed By: cpojer

Differential Revision: D20117210

fbshipit-source-id: 84c3b4e580da44bda4fc8bd8669318282ae9aa32
  • Loading branch information
sammy-SC authored and facebook-github-bot committed Feb 27, 2020
1 parent 6beee03 commit d33ead3
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
45 changes: 45 additions & 0 deletions Libraries/Utilities/differ/__tests__/matricesDiffer-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @emails oncall+react_native
*/

'use strict';

const matricesDiffer = require('../matricesDiffer');

describe('matricesDiffer', function() {
it('diffs matrices with single element', () => {
var x = [1];
var y = [2];
expect(matricesDiffer(x, y)).toBe(true);

x = [1];
y = [1];
expect(matricesDiffer(x, y)).toBe(false);
});

it('diffs matrices with different number of elements', () => {
var x = [1, 1, 1, 1];
var y = [1, 1, 1, 2];
expect(matricesDiffer(x, y)).toBe(true);
});

it('diffs matrices with 16 elements', () => {
var x = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
var y = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
expect(matricesDiffer(x, y)).toBe(false);

x = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
y = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1];
expect(matricesDiffer(x, y)).toBe(true);

x = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
y = [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
expect(matricesDiffer(x, y)).toBe(true);
});
});
1 change: 1 addition & 0 deletions Libraries/Utilities/differ/matricesDiffer.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ const matricesDiffer = function(one, two) {
one[14] !== two[14] ||
one[5] !== two[5] ||
one[10] !== two[10] ||
one[0] !== two[0] ||
one[1] !== two[1] ||
one[2] !== two[2] ||
one[3] !== two[3] ||
Expand Down

0 comments on commit d33ead3

Please sign in to comment.