authorgravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2021-10-03 16:45:13+02:00
committergravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2021-10-04 11:25:29+02:00
logebcdfebaa642c592bae13323c52dd1ec4f242f84
tree81bdad071cc04b22998d93a4c31dd466d07a9e3f
parentbbd50248f25996e707ebacc2f020e23cee6140e3

big ints: saturate() tests


1 files changed, 64 insertions(+), 0 deletions(-)

lib/std/math/big/int_test.zig+64
......@@ -1569,6 +1569,70 @@ test "big.int truncate negative multi to single" {
15691569 try testing.expect((try a.to(i17)) == 0);
15701570}
15711571
1572test "big.int saturate single signed positive" {
1573 var a = try Managed.initSet(testing.allocator, 0xBBBB_BBBB);
1574 defer a.deinit();
1575
1576 try a.saturate(a.toConst(), .signed, 17);
1577
1578 try testing.expect((try a.to(i17)) == maxInt(i17));
1579}
1580
1581test "big.int saturate single signed negative" {
1582 var a = try Managed.initSet(testing.allocator, -1_234_567);
1583 defer a.deinit();
1584
1585 try a.saturate(a.toConst(), .signed, 17);
1586
1587 try testing.expect((try a.to(i17)) == minInt(i17));
1588}
1589
1590test "big.int saturate single signed" {
1591 var a = try Managed.initSet(testing.allocator, maxInt(i17) - 1);
1592 defer a.deinit();
1593
1594 try a.saturate(a.toConst(), .signed, 17);
1595
1596 try testing.expect((try a.to(i17)) == maxInt(i17) - 1);
1597}
1598
1599test "big.int saturate multi signed" {
1600 var a = try Managed.initSet(testing.allocator, maxInt(Limb) << @bitSizeOf(SignedDoubleLimb));
1601 defer a.deinit();
1602
1603 try a.saturate(a.toConst(), .signed, @bitSizeOf(SignedDoubleLimb));
1604
1605 try testing.expect((try a.to(SignedDoubleLimb)) == maxInt(SignedDoubleLimb));
1606}
1607
1608test "big.int saturate single unsigned" {
1609 var a = try Managed.initSet(testing.allocator, 0xFEFE_FEFE);
1610 defer a.deinit();
1611
1612 try a.saturate(a.toConst(), .unsigned, 23);
1613
1614 try testing.expect((try a.to(u23)) == maxInt(u23));
1615}
1616
1617test "big.int saturate multi unsigned zero" {
1618 var a = try Managed.initSet(testing.allocator, -1);
1619 defer a.deinit();
1620
1621 try a.saturate(a.toConst(), .unsigned, @bitSizeOf(DoubleLimb));
1622
1623 try testing.expect(a.eqZero());
1624}
1625
1626
1627test "big.int saturate multi unsigned" {
1628 var a = try Managed.initSet(testing.allocator, maxInt(Limb) << @bitSizeOf(DoubleLimb));
1629 defer a.deinit();
1630
1631 try a.saturate(a.toConst(), .unsigned, @bitSizeOf(DoubleLimb));
1632
1633 try testing.expect((try a.to(DoubleLimb)) == maxInt(DoubleLimb));
1634}
1635
15721636test "big.int shift-right single" {
15731637 var a = try Managed.initSet(testing.allocator, 0xffff0000);
15741638 defer a.deinit();