Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
a81539db
Commit
a81539db
authored
Oct 01, 2015
by
Damien George
Browse files
tests: Add further tests for mpz code.
parent
2f4e8511
Changes
9
Hide whitespace changes
Inline
Side-by-side
tests/basics/builtin_hash.py
View file @
a81539db
...
...
@@ -4,6 +4,7 @@ print(hash(False))
print
(
hash
(
True
))
print
({():
1
})
# hash tuple
print
({
1
<<
66
:
1
})
# hash big int
print
({
-
(
1
<<
66
):
2
})
# hash negative big int
print
(
hash
in
{
hash
:
1
})
# hash function
try
:
...
...
tests/basics/int_big_error.py
View file @
a81539db
...
...
@@ -16,3 +16,16 @@ try:
1
in
i
except
TypeError
:
print
(
"TypeError"
)
# overflow because rhs of >> is being converted to machine int
try
:
1
>>
i
except
OverflowError
:
print
(
'OverflowError'
)
# to test conversion of negative mpz to machine int
# (we know << will convert to machine int, even though it fails to do the shift)
try
:
i
<<
(
-
(
i
>>
40
))
except
ValueError
:
print
(
'ValueError'
)
tests/basics/int_big_lshift.py
View file @
a81539db
...
...
@@ -15,3 +15,6 @@ for i in range(8):
print
(
-
100000000000000000000000000002
>>
i
)
print
(
-
100000000000000000000000000003
>>
i
)
print
(
-
100000000000000000000000000004
>>
i
)
# shl by zero
print
((
1
<<
70
)
<<
0
)
tests/basics/int_big_pow.py
0 → 100644
View file @
a81539db
# test bignum power
i
=
1
<<
65
print
(
0
**
i
)
print
(
i
**
0
)
print
(
i
**
1
)
print
(
i
**
2
)
tests/basics/int_big_rshift.py
View file @
a81539db
i
=
123456789012345678901234567890
print
(
i
>>
1
)
print
(
i
>>
1000
)
# result needs rounding up
print
(
-
(
1
<<
70
)
>>
80
)
tests/basics/struct1.py
View file @
a81539db
...
...
@@ -35,8 +35,11 @@ print(struct.pack("<I", 0xffffffff))
# long long ints
print
(
struct
.
pack
(
"<Q"
,
2
**
64
-
1
))
print
(
struct
.
pack
(
">Q"
,
2
**
64
-
1
))
print
(
struct
.
pack
(
"<Q"
,
0xffffffffffffffff
))
print
(
struct
.
pack
(
">Q"
,
0xffffffffffffffff
))
print
(
struct
.
pack
(
"<q"
,
-
1
))
print
(
struct
.
pack
(
">q"
,
-
1
))
print
(
struct
.
pack
(
"<Q"
,
1234567890123456789
))
print
(
struct
.
pack
(
"<q"
,
-
1234567890123456789
))
print
(
struct
.
pack
(
">Q"
,
1234567890123456789
))
...
...
tests/float/int_big_float.py
View file @
a81539db
...
...
@@ -5,6 +5,9 @@ i = 1 << 65
# convert bignum to float on rhs
print
(
"%.5g"
%
(
2.0
*
i
))
# negative bignum as float
print
(
"%.5g"
%
float
(
-
i
))
# this should convert to float
print
(
"%.5g"
%
(
i
/
5
))
...
...
tests/unix/extra_coverage.py.exp
View file @
a81539db
...
...
@@ -27,3 +27,8 @@ ementation
(start=1, stop=2, step=3)
# str
1
# mpz
1
12345678
0
0
unix/coverage.c
View file @
a81539db
...
...
@@ -3,6 +3,7 @@
#include
"py/obj.h"
#include
"py/runtime.h"
#include
"py/repl.h"
#include
"py/mpz.h"
#if defined(MICROPY_UNIX_COVERAGE)
...
...
@@ -83,6 +84,29 @@ STATIC mp_obj_t extra_coverage(void) {
printf
(
"%d
\n
"
,
MP_OBJ_IS_QSTR
(
mp_obj_str_intern
(
mp_obj_new_str
(
"intern me"
,
9
,
false
))));
}
// mpz
{
printf
(
"# mpz
\n
"
);
mp_uint_t
value
;
mpz_t
mpz
;
mpz_init_zero
(
&
mpz
);
// mpz_as_uint_checked, with success
mpz_set_from_int
(
&
mpz
,
12345678
);
printf
(
"%d
\n
"
,
mpz_as_uint_checked
(
&
mpz
,
&
value
));
printf
(
"%d
\n
"
,
(
int
)
value
);
// mpz_as_uint_checked, with negative arg
mpz_set_from_int
(
&
mpz
,
-
1
);
printf
(
"%d
\n
"
,
mpz_as_uint_checked
(
&
mpz
,
&
value
));
// mpz_as_uint_checked, with overflowing arg
mpz_set_from_int
(
&
mpz
,
1
);
mpz_shl_inpl
(
&
mpz
,
&
mpz
,
70
);
printf
(
"%d
\n
"
,
mpz_as_uint_checked
(
&
mpz
,
&
value
));
}
return
mp_const_none
;
}
MP_DEFINE_CONST_FUN_OBJ_0
(
extra_coverage_obj
,
extra_coverage
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment