Merge branch 'master' of github.com:dpgeorge/micropython
This commit is contained in:
commit
5a877503d9
18
py/runtime.c
18
py/runtime.c
@ -297,6 +297,24 @@ int rt_is_true(mp_obj_t arg) {
|
|||||||
return 0;
|
return 0;
|
||||||
} else if (arg == mp_const_true) {
|
} else if (arg == mp_const_true) {
|
||||||
return 1;
|
return 1;
|
||||||
|
} else if (MP_OBJ_IS_QSTR(arg)) {
|
||||||
|
// TODO: \0
|
||||||
|
return *qstr_str(MP_OBJ_QSTR_VALUE(arg)) != 0;
|
||||||
|
} else if (MP_OBJ_IS_TYPE(arg, &str_type)) {
|
||||||
|
// TODO: \0
|
||||||
|
return *qstr_str(mp_obj_str_get(arg)) != 0;
|
||||||
|
} else if (MP_OBJ_IS_TYPE(arg, &list_type)) {
|
||||||
|
uint len;
|
||||||
|
mp_obj_t *dummy;
|
||||||
|
mp_obj_list_get(arg, &len, &dummy);
|
||||||
|
return len != 0;
|
||||||
|
} else if (MP_OBJ_IS_TYPE(arg, &tuple_type)) {
|
||||||
|
uint len;
|
||||||
|
mp_obj_t *dummy;
|
||||||
|
mp_obj_tuple_get(arg, &len, &dummy);
|
||||||
|
return len != 0;
|
||||||
|
} else if (MP_OBJ_IS_TYPE(arg, &dict_type)) {
|
||||||
|
return mp_obj_dict_len(arg) != 0;
|
||||||
} else {
|
} else {
|
||||||
assert(0);
|
assert(0);
|
||||||
return 0;
|
return 0;
|
||||||
|
27
tests/basics/tests/true-value.py
Normal file
27
tests/basics/tests/true-value.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# Test true-ish value handling
|
||||||
|
|
||||||
|
if not False:
|
||||||
|
print("False")
|
||||||
|
|
||||||
|
if not 0:
|
||||||
|
print("0")
|
||||||
|
|
||||||
|
if not "":
|
||||||
|
print("Empty string")
|
||||||
|
if "foo":
|
||||||
|
print("Non-empty string")
|
||||||
|
|
||||||
|
if not ():
|
||||||
|
print("Empty tuple")
|
||||||
|
if ("",):
|
||||||
|
print("Non-empty tuple")
|
||||||
|
|
||||||
|
if not []:
|
||||||
|
print("Empty list")
|
||||||
|
if [0]:
|
||||||
|
print("Non-empty list")
|
||||||
|
|
||||||
|
if not {}:
|
||||||
|
print("Empty dict")
|
||||||
|
if {0:0}:
|
||||||
|
print("Non-empty dict")
|
Loading…
Reference in New Issue
Block a user