Skip to content

Commit 2a7cedf

Browse files
mtlynchandrewrk
authored andcommitted
Refactor ArrayList replaceRange tests
1 parent 5835e5e commit 2a7cedf

File tree

1 file changed

+186
-82
lines changed

1 file changed

+186
-82
lines changed

lib/std/array_list.zig

Lines changed: 186 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1651,115 +1651,219 @@ test "insertSlice" {
16511651
}
16521652
}
16531653

1654-
test "replaceRange" {
1655-
var arena = std.heap.ArenaAllocator.init(testing.allocator);
1656-
defer arena.deinit();
1657-
const a = arena.allocator();
1654+
test "ArrayList.replaceRange" {
1655+
const a = testing.allocator;
1656+
1657+
{
1658+
var list = ArrayList(i32).init(a);
1659+
defer list.deinit();
1660+
try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
1661+
1662+
try list.replaceRange(1, 0, &[_]i32{ 0, 0, 0 });
1663+
1664+
try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 2, 3, 4, 5 }, list.items);
1665+
}
1666+
{
1667+
var list = ArrayList(i32).init(a);
1668+
defer list.deinit();
1669+
try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
1670+
1671+
try list.replaceRange(1, 1, &[_]i32{ 0, 0, 0 });
1672+
1673+
try testing.expectEqualSlices(
1674+
i32,
1675+
&[_]i32{ 1, 0, 0, 0, 3, 4, 5 },
1676+
list.items,
1677+
);
1678+
}
1679+
{
1680+
var list = ArrayList(i32).init(a);
1681+
defer list.deinit();
1682+
try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
1683+
1684+
try list.replaceRange(1, 2, &[_]i32{ 0, 0, 0 });
1685+
1686+
try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 4, 5 }, list.items);
1687+
}
1688+
{
1689+
var list = ArrayList(i32).init(a);
1690+
defer list.deinit();
1691+
try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
1692+
1693+
try list.replaceRange(1, 3, &[_]i32{ 0, 0, 0 });
1694+
1695+
try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 5 }, list.items);
1696+
}
1697+
{
1698+
var list = ArrayList(i32).init(a);
1699+
defer list.deinit();
1700+
try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
1701+
1702+
try list.replaceRange(1, 4, &[_]i32{ 0, 0, 0 });
1703+
1704+
try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0 }, list.items);
1705+
}
1706+
}
1707+
1708+
test "ArrayList.replaceRangeAssumeCapacity" {
1709+
const a = testing.allocator;
1710+
1711+
{
1712+
var list = ArrayList(i32).init(a);
1713+
defer list.deinit();
1714+
try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
1715+
1716+
list.replaceRangeAssumeCapacity(1, 0, &[_]i32{ 0, 0, 0 });
1717+
1718+
try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 2, 3, 4, 5 }, list.items);
1719+
}
1720+
{
1721+
var list = ArrayList(i32).init(a);
1722+
defer list.deinit();
1723+
try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
1724+
1725+
list.replaceRangeAssumeCapacity(1, 1, &[_]i32{ 0, 0, 0 });
1726+
1727+
try testing.expectEqualSlices(
1728+
i32,
1729+
&[_]i32{ 1, 0, 0, 0, 3, 4, 5 },
1730+
list.items,
1731+
);
1732+
}
1733+
{
1734+
var list = ArrayList(i32).init(a);
1735+
defer list.deinit();
1736+
try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
1737+
1738+
list.replaceRangeAssumeCapacity(1, 2, &[_]i32{ 0, 0, 0 });
1739+
1740+
try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 4, 5 }, list.items);
1741+
}
1742+
{
1743+
var list = ArrayList(i32).init(a);
1744+
defer list.deinit();
1745+
try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
1746+
1747+
list.replaceRangeAssumeCapacity(1, 3, &[_]i32{ 0, 0, 0 });
1748+
1749+
try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 5 }, list.items);
1750+
}
1751+
{
1752+
var list = ArrayList(i32).init(a);
1753+
defer list.deinit();
1754+
try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
16581755

1659-
const init = [_]i32{ 1, 2, 3, 4, 5 };
1660-
const new = [_]i32{ 0, 0, 0 };
1756+
list.replaceRangeAssumeCapacity(1, 4, &[_]i32{ 0, 0, 0 });
16611757

1662-
const result_zero = [_]i32{ 1, 0, 0, 0, 2, 3, 4, 5 };
1663-
const result_eq = [_]i32{ 1, 0, 0, 0, 5 };
1664-
const result_le = [_]i32{ 1, 0, 0, 0, 4, 5 };
1665-
const result_gt = [_]i32{ 1, 0, 0, 0 };
1758+
try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0 }, list.items);
1759+
}
1760+
}
1761+
1762+
test "ArrayListUnmanaged.replaceRange" {
1763+
const a = testing.allocator;
16661764

16671765
{
1668-
var list_zero = ArrayList(i32).init(a);
1669-
var list_eq = ArrayList(i32).init(a);
1670-
var list_lt = ArrayList(i32).init(a);
1671-
var list_gt = ArrayList(i32).init(a);
1766+
var list = ArrayListUnmanaged(i32){};
1767+
defer list.deinit(a);
1768+
try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
16721769

1673-
try list_zero.appendSlice(&init);
1674-
try list_eq.appendSlice(&init);
1675-
try list_lt.appendSlice(&init);
1676-
try list_gt.appendSlice(&init);
1770+
try list.replaceRange(a, 1, 0, &[_]i32{ 0, 0, 0 });
16771771

1678-
try list_zero.replaceRange(1, 0, &new);
1679-
try list_eq.replaceRange(1, 3, &new);
1680-
try list_lt.replaceRange(1, 2, &new);
1772+
try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 2, 3, 4, 5 }, list.items);
1773+
}
1774+
{
1775+
var list = ArrayListUnmanaged(i32){};
1776+
defer list.deinit(a);
1777+
try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
16811778

1682-
// after_range > new_items.len in function body
1683-
try testing.expect(1 + 4 > new.len);
1684-
try list_gt.replaceRange(1, 4, &new);
1779+
try list.replaceRange(a, 1, 1, &[_]i32{ 0, 0, 0 });
16851780

1686-
try testing.expectEqualSlices(i32, list_zero.items, &result_zero);
1687-
try testing.expectEqualSlices(i32, list_eq.items, &result_eq);
1688-
try testing.expectEqualSlices(i32, list_lt.items, &result_le);
1689-
try testing.expectEqualSlices(i32, list_gt.items, &result_gt);
1781+
try testing.expectEqualSlices(
1782+
i32,
1783+
&[_]i32{ 1, 0, 0, 0, 3, 4, 5 },
1784+
list.items,
1785+
);
16901786
}
16911787
{
1692-
var list_zero = ArrayListUnmanaged(i32){};
1693-
var list_eq = ArrayListUnmanaged(i32){};
1694-
var list_lt = ArrayListUnmanaged(i32){};
1695-
var list_gt = ArrayListUnmanaged(i32){};
1788+
var list = ArrayListUnmanaged(i32){};
1789+
defer list.deinit(a);
1790+
try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
16961791

1697-
try list_zero.appendSlice(a, &init);
1698-
try list_eq.appendSlice(a, &init);
1699-
try list_lt.appendSlice(a, &init);
1700-
try list_gt.appendSlice(a, &init);
1792+
try list.replaceRange(a, 1, 2, &[_]i32{ 0, 0, 0 });
17011793

1702-
try list_zero.replaceRange(a, 1, 0, &new);
1703-
try list_eq.replaceRange(a, 1, 3, &new);
1704-
try list_lt.replaceRange(a, 1, 2, &new);
1794+
try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 4, 5 }, list.items);
1795+
}
1796+
{
1797+
var list = ArrayListUnmanaged(i32){};
1798+
defer list.deinit(a);
1799+
try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
17051800

1706-
// after_range > new_items.len in function body
1707-
try testing.expect(1 + 4 > new.len);
1708-
try list_gt.replaceRange(a, 1, 4, &new);
1801+
try list.replaceRange(a, 1, 3, &[_]i32{ 0, 0, 0 });
17091802

1710-
try testing.expectEqualSlices(i32, list_zero.items, &result_zero);
1711-
try testing.expectEqualSlices(i32, list_eq.items, &result_eq);
1712-
try testing.expectEqualSlices(i32, list_lt.items, &result_le);
1713-
try testing.expectEqualSlices(i32, list_gt.items, &result_gt);
1803+
try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 5 }, list.items);
17141804
}
1805+
{
1806+
var list = ArrayListUnmanaged(i32){};
1807+
defer list.deinit(a);
1808+
try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
1809+
1810+
try list.replaceRange(a, 1, 4, &[_]i32{ 0, 0, 0 });
1811+
1812+
try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0 }, list.items);
1813+
}
1814+
}
1815+
1816+
test "ArrayListUnmanaged.replaceRangeAssumeCapacity" {
1817+
const a = testing.allocator;
1818+
1819+
{
1820+
var list = ArrayListUnmanaged(i32){};
1821+
defer list.deinit(a);
1822+
try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
1823+
1824+
list.replaceRangeAssumeCapacity(1, 0, &[_]i32{ 0, 0, 0 });
17151825

1826+
try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 2, 3, 4, 5 }, list.items);
1827+
}
17161828
{
1717-
var list_zero = ArrayList(i32).init(a);
1718-
var list_eq = ArrayList(i32).init(a);
1719-
var list_lt = ArrayList(i32).init(a);
1720-
var list_gt = ArrayList(i32).init(a);
1829+
var list = ArrayListUnmanaged(i32){};
1830+
defer list.deinit(a);
1831+
try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
17211832

1722-
try list_zero.appendSlice(&init);
1723-
try list_eq.appendSlice(&init);
1724-
try list_lt.appendSlice(&init);
1725-
try list_gt.appendSlice(&init);
1833+
list.replaceRangeAssumeCapacity(1, 1, &[_]i32{ 0, 0, 0 });
17261834

1727-
list_zero.replaceRangeAssumeCapacity(1, 0, &new);
1728-
list_eq.replaceRangeAssumeCapacity(1, 3, &new);
1729-
list_lt.replaceRangeAssumeCapacity(1, 2, &new);
1835+
try testing.expectEqualSlices(
1836+
i32,
1837+
&[_]i32{ 1, 0, 0, 0, 3, 4, 5 },
1838+
list.items,
1839+
);
1840+
}
1841+
{
1842+
var list = ArrayListUnmanaged(i32){};
1843+
defer list.deinit(a);
1844+
try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
17301845

1731-
// after_range > new_items.len in function body
1732-
try testing.expect(1 + 4 > new.len);
1733-
list_gt.replaceRangeAssumeCapacity(1, 4, &new);
1846+
list.replaceRangeAssumeCapacity(1, 2, &[_]i32{ 0, 0, 0 });
17341847

1735-
try testing.expectEqualSlices(i32, list_zero.items, &result_zero);
1736-
try testing.expectEqualSlices(i32, list_eq.items, &result_eq);
1737-
try testing.expectEqualSlices(i32, list_lt.items, &result_le);
1738-
try testing.expectEqualSlices(i32, list_gt.items, &result_gt);
1848+
try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 4, 5 }, list.items);
17391849
}
17401850
{
1741-
var list_zero = ArrayListUnmanaged(i32){};
1742-
var list_eq = ArrayListUnmanaged(i32){};
1743-
var list_lt = ArrayListUnmanaged(i32){};
1744-
var list_gt = ArrayListUnmanaged(i32){};
1851+
var list = ArrayListUnmanaged(i32){};
1852+
defer list.deinit(a);
1853+
try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
17451854

1746-
try list_zero.appendSlice(a, &init);
1747-
try list_eq.appendSlice(a, &init);
1748-
try list_lt.appendSlice(a, &init);
1749-
try list_gt.appendSlice(a, &init);
1855+
list.replaceRangeAssumeCapacity(1, 3, &[_]i32{ 0, 0, 0 });
17501856

1751-
list_zero.replaceRangeAssumeCapacity(1, 0, &new);
1752-
list_eq.replaceRangeAssumeCapacity(1, 3, &new);
1753-
list_lt.replaceRangeAssumeCapacity(1, 2, &new);
1857+
try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 5 }, list.items);
1858+
}
1859+
{
1860+
var list = ArrayListUnmanaged(i32){};
1861+
defer list.deinit(a);
1862+
try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
17541863

1755-
// after_range > new_items.len in function body
1756-
try testing.expect(1 + 4 > new.len);
1757-
list_gt.replaceRangeAssumeCapacity(1, 4, &new);
1864+
list.replaceRangeAssumeCapacity(1, 4, &[_]i32{ 0, 0, 0 });
17581865

1759-
try testing.expectEqualSlices(i32, list_zero.items, &result_zero);
1760-
try testing.expectEqualSlices(i32, list_eq.items, &result_eq);
1761-
try testing.expectEqualSlices(i32, list_lt.items, &result_le);
1762-
try testing.expectEqualSlices(i32, list_gt.items, &result_gt);
1866+
try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0 }, list.items);
17631867
}
17641868
}
17651869

0 commit comments

Comments
 (0)