Test that iterators reference rather than copy their referents.
()
| 81 | |
| 82 | |
| 83 | def test_iterator_referencing(): |
| 84 | """Test that iterators reference rather than copy their referents.""" |
| 85 | vec = m.VectorNonCopyableInt() |
| 86 | vec.append(3) |
| 87 | vec.append(5) |
| 88 | assert [int(x) for x in vec] == [3, 5] |
| 89 | # Increment everything to make sure the referents can be mutated |
| 90 | for x in vec: |
| 91 | x.set(int(x) + 1) |
| 92 | assert [int(x) for x in vec] == [4, 6] |
| 93 | |
| 94 | vec = m.VectorNonCopyableIntPair() |
| 95 | vec.append([3, 4]) |
| 96 | vec.append([5, 7]) |
| 97 | assert [int(x) for x in vec.keys()] == [3, 5] |
| 98 | assert [int(x) for x in vec.values()] == [4, 7] |
| 99 | for x in vec.keys(): |
| 100 | x.set(int(x) + 1) |
| 101 | for x in vec.values(): |
| 102 | x.set(int(x) + 10) |
| 103 | assert [int(x) for x in vec.keys()] == [4, 6] |
| 104 | assert [int(x) for x in vec.values()] == [14, 17] |
| 105 | |
| 106 | |
| 107 | def test_sliceable(): |