Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 6f42a99

Browse files
author
Onur R. Bingol
committedJul 8, 2018
list and tuple checks fail if input has no length (e.g. float)
1 parent 122938b commit 6f42a99

File tree

2 files changed

+59
-17
lines changed

2 files changed

+59
-17
lines changed
 

‎geomdl/utilities.py

Lines changed: 56 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,14 @@ def vector_cross(vector1, vector2):
4545
:return: result of the cross product
4646
:rtype: list
4747
"""
48-
if not vector1 or not vector2:
49-
raise ValueError("Input vectors cannot be empty")
48+
try:
49+
if vector1 is None or len(vector1) == 0 or vector2 is None or len(vector2) == 0:
50+
raise ValueError("Input vectors cannot be empty")
51+
except TypeError as e:
52+
print("An error occurred: {}".format(e.args[-1]))
53+
raise TypeError("Input must be a list or tuple")
54+
except Exception:
55+
raise
5056

5157
if len(vector1) != 3 or len(vector2) != 3:
5258
raise ValueError("Input should contain 3 elements")
@@ -70,8 +76,14 @@ def vector_dot(vector1, vector2):
7076
:return: result of the dot product
7177
:rtype: list
7278
"""
73-
if vector1 is None or len(vector1) == 0 or vector2 is None or len(vector2) == 0:
74-
raise ValueError("Input vectors cannot be empty")
79+
try:
80+
if vector1 is None or len(vector1) == 0 or vector2 is None or len(vector2) == 0:
81+
raise ValueError("Input vectors cannot be empty")
82+
except TypeError as e:
83+
print("An error occurred: {}".format(e.args[-1]))
84+
raise TypeError("Input must be a list or tuple")
85+
except Exception:
86+
raise
7587

7688
# Compute dot product
7789
prod = 0
@@ -93,8 +105,14 @@ def vector_normalize(vector_in, decimals=6):
93105
:return: the normalized vector (i.e. the unit vector)
94106
:rtype: list
95107
"""
96-
if vector_in is None or len(vector_in) == 0:
97-
raise ValueError("Input vector cannot be empty")
108+
try:
109+
if vector_in is None or len(vector_in) == 0:
110+
raise ValueError("Input vector cannot be empty")
111+
except TypeError as e:
112+
print("An error occurred: {}".format(e.args[-1]))
113+
raise TypeError("Input must be a list or tuple")
114+
except Exception:
115+
raise
98116

99117
# Calculate magnitude of the vector
100118
sq_sum = 0
@@ -126,8 +144,14 @@ def vector_generate(start_pt, end_pt, normalize=False):
126144
:return: a vector from start_pt to end_pt
127145
:rtype: list
128146
"""
129-
if start_pt is None or len(start_pt) == 0 or end_pt is None or len(end_pt) == 0:
130-
raise ValueError("Input points cannot be empty")
147+
try:
148+
if start_pt is None or len(start_pt) == 0 or end_pt is None or len(end_pt) == 0:
149+
raise ValueError("Input points cannot be empty")
150+
except TypeError as e:
151+
print("An error occurred: {}".format(e.args[-1]))
152+
raise TypeError("Input must be a list or tuple")
153+
except Exception:
154+
raise
131155

132156
ret_vec = []
133157
for sp, ep in zip(start_pt, end_pt):
@@ -148,8 +172,14 @@ def point_translate(point_in, vector_in):
148172
:return: translated point
149173
:rtype: list
150174
"""
151-
if point_in is None or len(point_in) == 0 or vector_in is None or len(vector_in) == 0:
152-
raise ValueError("Inputs cannot be empty")
175+
try:
176+
if point_in is None or len(point_in) == 0 or vector_in is None or len(vector_in) == 0:
177+
raise ValueError("Input arguments cannot be empty")
178+
except TypeError as e:
179+
print("An error occurred: {}".format(e.args[-1]))
180+
raise TypeError("Input must be a list or tuple")
181+
except Exception:
182+
raise
153183

154184
# Translate the point using the input vector
155185
point_out = [coord + comp for coord, comp in zip(point_in, vector_in)]
@@ -386,8 +416,14 @@ def normalize_knot_vector(knot_vector, decimals=4):
386416
:return: normalized knot vector
387417
:rtype: list
388418
"""
389-
if knot_vector is None or len(knot_vector) == 0:
390-
return knot_vector
419+
try:
420+
if knot_vector is None or len(knot_vector) == 0:
421+
raise ValueError("Input knot vector cannot be empty")
422+
except TypeError as e:
423+
print("An error occurred: {}".format(e.args[-1]))
424+
raise TypeError("Knot vector must be a list or tuple")
425+
except Exception:
426+
raise
391427

392428
first_knot = float(knot_vector[0])
393429
last_knot = float(knot_vector[-1])
@@ -450,8 +486,14 @@ def check_knot_vector(degree, knot_vector, num_ctrlpts):
450486
:return: True if the knot vector is valid, False otherwise
451487
:rtype: bool
452488
"""
453-
if knot_vector is None or len(knot_vector) == 0:
454-
raise ValueError("Input knot vector cannot be empty")
489+
try:
490+
if knot_vector is None or len(knot_vector) == 0:
491+
raise ValueError("Input knot vector cannot be empty")
492+
except TypeError as e:
493+
print("An error occurred: {}".format(e.args[-1]))
494+
raise TypeError("Knot vector must be a list or tuple")
495+
except Exception:
496+
raise
455497

456498
# Check the formula; m = p + n + 1
457499
if len(knot_vector) != degree + num_ctrlpts + 1:

‎tests/test_utils.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,9 @@ def test_check_knot_vector4():
6464

6565

6666
def test_normalize_knot_vector1():
67-
result = tuple()
68-
to_check = utilities.normalize_knot_vector(result)
69-
assert to_check == result
67+
# check for empty list/tuple
68+
with pytest.raises(ValueError):
69+
utilities.normalize_knot_vector(tuple())
7070

7171

7272
def test_normalize_knot_vector2():

0 commit comments

Comments
 (0)
Please sign in to comment.