Tests support for C++17 string_view arguments and return values
(capture)
| 146 | |
| 147 | @pytest.mark.skipif(not hasattr(m, "has_string_view"), reason="no <string_view>") |
| 148 | def test_string_view(capture): |
| 149 | """Tests support for C++17 string_view arguments and return values""" |
| 150 | assert m.string_view_chars("Hi") == [72, 105] |
| 151 | assert m.string_view_chars("Hi 🎂") == [72, 105, 32, 0xF0, 0x9F, 0x8E, 0x82] |
| 152 | assert m.string_view16_chars("Hi 🎂") == [72, 105, 32, 0xD83C, 0xDF82] |
| 153 | assert m.string_view32_chars("Hi 🎂") == [72, 105, 32, 127874] |
| 154 | if hasattr(m, "has_u8string"): |
| 155 | assert m.string_view8_chars("Hi") == [72, 105] |
| 156 | assert m.string_view8_chars("Hi 🎂") == [72, 105, 32, 0xF0, 0x9F, 0x8E, 0x82] |
| 157 | |
| 158 | assert m.string_view_return() == "utf8 secret 🎂" |
| 159 | assert m.string_view16_return() == "utf16 secret 🎂" |
| 160 | assert m.string_view32_return() == "utf32 secret 🎂" |
| 161 | if hasattr(m, "has_u8string"): |
| 162 | assert m.string_view8_return() == "utf8 secret 🎂" |
| 163 | |
| 164 | with capture: |
| 165 | m.string_view_print("Hi") |
| 166 | m.string_view_print("utf8 🎂") |
| 167 | m.string_view16_print("utf16 🎂") |
| 168 | m.string_view32_print("utf32 🎂") |
| 169 | assert ( |
| 170 | capture |
| 171 | == """ |
| 172 | Hi 2 |
| 173 | utf8 🎂 9 |
| 174 | utf16 🎂 8 |
| 175 | utf32 🎂 7 |
| 176 | """ |
| 177 | ) |
| 178 | if hasattr(m, "has_u8string"): |
| 179 | with capture: |
| 180 | m.string_view8_print("Hi") |
| 181 | m.string_view8_print("utf8 🎂") |
| 182 | assert ( |
| 183 | capture |
| 184 | == """ |
| 185 | Hi 2 |
| 186 | utf8 🎂 9 |
| 187 | """ |
| 188 | ) |
| 189 | |
| 190 | with capture: |
| 191 | m.string_view_print("Hi, ascii") |
| 192 | m.string_view_print("Hi, utf8 🎂") |
| 193 | m.string_view16_print("Hi, utf16 🎂") |
| 194 | m.string_view32_print("Hi, utf32 🎂") |
| 195 | assert ( |
| 196 | capture |
| 197 | == """ |
| 198 | Hi, ascii 9 |
| 199 | Hi, utf8 🎂 13 |
| 200 | Hi, utf16 🎂 12 |
| 201 | Hi, utf32 🎂 11 |
| 202 | """ |
| 203 | ) |
| 204 | if hasattr(m, "has_u8string"): |
| 205 | with capture: |