| 1686 | end |
| 1687 | |
| 1688 | def test_29 |
| 1689 | |
| 1690 | # copy/ref semantics on return |
| 1691 | |
| 1692 | c = RBA::C::new |
| 1693 | |
| 1694 | cd = RBA::CopyDetector::new(42) |
| 1695 | |
| 1696 | cd2 = c.pass_cd_direct(cd) |
| 1697 | assert_equal(cd2.x, 42) |
| 1698 | # two copies: one for return statement and then one for the new object |
| 1699 | assert_equal(cd2.xx, 44) |
| 1700 | |
| 1701 | cd2 = c.pass_cd_cref(cd) |
| 1702 | assert_equal(cd2.x, 42) |
| 1703 | assert_equal(cd2.xx, 43) |
| 1704 | |
| 1705 | cd2 = c.pass_cd_cref_as_copy(cd) |
| 1706 | assert_equal(cd2.x, 42) |
| 1707 | assert_equal(cd2.xx, 43) |
| 1708 | |
| 1709 | cd2 = c.pass_cd_cref_as_ref(cd) |
| 1710 | assert_equal(cd2.x, 42) |
| 1711 | assert_equal(cd2.xx, 42) |
| 1712 | |
| 1713 | cd2 = c.pass_cd_cptr(cd) |
| 1714 | assert_equal(cd2.x, 42) |
| 1715 | assert_equal(cd2.xx, 42) |
| 1716 | |
| 1717 | cd2 = c.pass_cd_cptr_as_copy(cd) |
| 1718 | assert_equal(cd2.x, 42) |
| 1719 | assert_equal(cd2.xx, 43) |
| 1720 | |
| 1721 | cd2 = c.pass_cd_cptr_as_ref(cd) |
| 1722 | assert_equal(cd2.x, 42) |
| 1723 | assert_equal(cd2.xx, 42) |
| 1724 | |
| 1725 | cd2 = c.pass_cd_ptr(cd) |
| 1726 | assert_equal(cd2.x, 42) |
| 1727 | assert_equal(cd2.xx, 42) |
| 1728 | |
| 1729 | cd2 = c.pass_cd_ptr_as_copy(cd) |
| 1730 | assert_equal(cd2.x, 42) |
| 1731 | assert_equal(cd2.xx, 43) |
| 1732 | |
| 1733 | cd2 = c.pass_cd_ptr_as_ref(cd) |
| 1734 | assert_equal(cd2.x, 42) |
| 1735 | assert_equal(cd2.xx, 42) |
| 1736 | |
| 1737 | cd2 = c.pass_cd_ref(cd) |
| 1738 | assert_equal(cd2.x, 42) |
| 1739 | assert_equal(cd2.xx, 42) |
| 1740 | |
| 1741 | cd2 = c.pass_cd_ref_as_copy(cd) |
| 1742 | assert_equal(cd2.x, 42) |
| 1743 | assert_equal(cd2.xx, 43) |
| 1744 | |
| 1745 | cd2 = c.pass_cd_ref_as_ref(cd) |
nothing calls this directly
no test coverage detected