@@ -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