diff --git a/src/js/components/ArrayGroup.js b/src/js/components/ArrayGroup.js
index c834fd1..49a5954 100644
--- a/src/js/components/ArrayGroup.js
+++ b/src/js/components/ArrayGroup.js
@@ -155,9 +155,9 @@ export default class extends React.PureComponent {
>
{i * size}
{' - '}
- {i * size + size > src.length
- ? src.length
- : i * size + size}
+ {i * size + size - 1 > src.length
+ ? src.length - 1
+ : i * size + size - 1}
]
diff --git a/test/tests/js/components/ArrayGroup-test.js b/test/tests/js/components/ArrayGroup-test.js
index 3e756a3..4753717 100644
--- a/test/tests/js/components/ArrayGroup-test.js
+++ b/test/tests/js/components/ArrayGroup-test.js
@@ -138,4 +138,41 @@ describe('', function () {
namespace: []
})
})
+
+ it('ArrayGroup shows object-size ranges for collapsed groups', function () {
+ const groupSize = 100
+ const cases = [
+ { length: 222, expected: ['0 - 99', '100 - 199', '200 - 221'] },
+ { length: 199, expected: ['0 - 99', '100 - 199'] },
+ { length: 101, expected: ['0 - 99', '100 - 100'] }
+ ]
+
+ cases.forEach(({ length, expected }) => {
+ const src = new Array(length).fill('test')
+ const wrapper = render(
+
+ )
+
+ const labels = wrapper.find('.object-size')
+ expect(labels).to.have.length(expected.length)
+
+ expected.forEach((range, i) => {
+ const actual = labels
+ .eq(i)
+ .text()
+ .replace(/\s+/g, ' ')
+ .trim()
+
+ expect(actual).to.equal(range)
+ })
+ })
+ })
})