-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adding tests specifically to exercise pybind11::str::raw_str. #2366
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -220,6 +220,38 @@ def test_constructors(): | |
assert noconv2[k] is expected[k] | ||
|
||
|
||
def test_pybind11_str_raw_str(): | ||
# specifically to exercise pybind11::str::raw_str | ||
cvt = m.convert_to_pybind11_str | ||
assert cvt(u"Str") == u"Str" | ||
assert cvt(b'Bytes') == u"Bytes" if str is bytes else "b'Bytes'" | ||
assert cvt(None) == u"None" | ||
assert cvt(False) == u"False" | ||
assert cvt(True) == u"True" | ||
assert cvt(42) == u"42" | ||
assert cvt(2**65) == u"36893488147419103232" | ||
assert cvt(-1.50) == u"-1.5" | ||
assert cvt(()) == u"()" | ||
assert cvt((18,)) == u"(18,)" | ||
assert cvt([]) == u"[]" | ||
assert cvt([28]) == u"[28]" | ||
assert cvt({}) == u"{}" | ||
assert cvt({3: 4}) == u"{3: 4}" | ||
assert cvt(set()) == u"set([])" if str is bytes else "set()" | ||
assert cvt({3, 3}) == u"set([3])" if str is bytes else "{3}" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Another one, sorry. There're no funky unicode characters/string/weirdly encoded strings as bytes here! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. And while you're add it, I don't know how much work it is, but some checks on types with custom |
||
|
||
valid_orig = u"DZ" | ||
valid_utf8 = valid_orig.encode("utf-8") | ||
valid_cvt = cvt(valid_utf8) | ||
assert type(valid_cvt) == bytes # Probably surprising. | ||
assert valid_cvt == b'\xc7\xb1' | ||
|
||
malformed_utf8 = b'\x80' | ||
malformed_cvt = cvt(malformed_utf8) | ||
assert type(malformed_cvt) == bytes # Probably surprising. | ||
assert malformed_cvt == b'\x80' | ||
|
||
|
||
def test_implicit_casting(): | ||
"""Tests implicit casting when assigning or appending to dicts and lists.""" | ||
z = m.get_implicit_casting() | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This could also be:
Or do we need to be explicit here, line by line?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I actually prefer it being explicit, just to make it as clear as possible, and permit specific branching.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also fine. Let's leave it up to @rwgk, then :-)