From c9b199b4f892aa63c515316cf579e74bc4b72aef Mon Sep 17 00:00:00 2001 From: Saiyam jain Date: Sun, 25 Oct 2026 02:29:49 +0530 Subject: [PATCH] test: add missing test coverage for CellRenderMask.numCells and equals MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The CellRenderMask class exposes two public methods — numCells() and equals() — that had no test coverage at all. This commit adds: - numCells(): 3 tests covering empty mask, constructor size, and stability after addCells mutations - equals(): 6 tests covering identical masks, size mismatch, identical operations, differing regions, differing region counts, and reflexivity --- .../Lists/__tests__/CellRenderMask-test.js | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/packages/virtualized-lists/Lists/__tests__/CellRenderMask-test.js b/packages/virtualized-lists/Lists/__tests__/CellRenderMask-test.js index 7230b7e76132..94c58ca23d1c 100644 --- a/packages/virtualized-lists/Lists/__tests__/CellRenderMask-test.js +++ b/packages/virtualized-lists/Lists/__tests__/CellRenderMask-test.js @@ -185,4 +185,63 @@ describe('CellRenderMask', () => { {first: 4, last: 4, isSpacer: true}, ]); }); + + describe('numCells', () => { + it('returns 0 for empty mask', () => { + expect(new CellRenderMask(0).numCells()).toBe(0); + }); + + it('returns the size passed to the constructor', () => { + expect(new CellRenderMask(1).numCells()).toBe(1); + expect(new CellRenderMask(10).numCells()).toBe(10); + }); + + it('is unaffected by addCells calls', () => { + const renderMask = new CellRenderMask(5); + renderMask.addCells({first: 1, last: 3}); + expect(renderMask.numCells()).toBe(5); + }); + }); + + describe('equals', () => { + it('returns true for two identical fresh masks', () => { + expect(new CellRenderMask(5).equals(new CellRenderMask(5))).toBe(true); + }); + + it('returns false when masks have different sizes', () => { + expect(new CellRenderMask(3).equals(new CellRenderMask(5))).toBe(false); + }); + + it('returns true after applying identical addCells operations', () => { + const a = new CellRenderMask(10); + const b = new CellRenderMask(10); + a.addCells({first: 2, last: 5}); + b.addCells({first: 2, last: 5}); + expect(a.equals(b)).toBe(true); + }); + + it('returns false when regions differ', () => { + const a = new CellRenderMask(10); + const b = new CellRenderMask(10); + a.addCells({first: 2, last: 5}); + b.addCells({first: 3, last: 5}); + expect(a.equals(b)).toBe(false); + }); + + it('returns false when one mask has more regions than the other', () => { + const a = new CellRenderMask(10); + const b = new CellRenderMask(10); + // a has two non-spacer regions; b has one + a.addCells({first: 1, last: 2}); + a.addCells({first: 7, last: 8}); + b.addCells({first: 1, last: 8}); + expect(a.equals(b)).toBe(false); + }); + + it('is reflexive', () => { + const mask = new CellRenderMask(5); + mask.addCells({first: 1, last: 3}); + expect(mask.equals(mask)).toBe(true); + }); + }); });