M showcolours.py +17 -0
@@ 170,6 170,23 @@ def can_only_be_decimal(number):
return False
+def can_also_be_decimal(number):
+ """Could the number string represent a decimal in the range 0-1?
+
+ For decimal fractions we obviously return true. If the number is 0 or 1, it
+ might also represent a value in the 0-255 range, but that's fine.
+ """
+ if type(number) is not str:
+ raise TypeError
+ try:
+ if 0 <= float(number) <= 1:
+ return True
+ else:
+ return False
+ except ValueError:
+ return False
+
+
def interpret_colours(numbers, hint):
if hint == 'rgb':
return colours_from_rgb255_numbers(numbers)
M test_showcolours.py +17 -0
@@ 153,6 153,23 @@ class Test_can_only_be_decimal():
def test_big_numbers_arent_decimal(self):
assert not any([sc.can_only_be_decimal(num) for num in ('1.1', '8.0')])
+class Test_can_also_be_decimal():
+
+ def test_numbers_between_0_and_1_can_be_decimal(self):
+ assert all([
+ sc.can_also_be_decimal(num)
+ for num in ('0.1', '0.2', '0.999', '0.001')
+ ])
+
+ def test_0_and_1_can_be_decimal(self):
+ assert all([sc.can_also_be_decimal(num) for num in ('0', '1')])
+
+ def test_negative_decimals_cant_be_decimal(self):
+ assert not any([sc.can_also_be_decimal(num) for num in ('-.1', '-1')])
+
+ def test_big_numbers_cant_be_decimal(self):
+ assert not any([sc.can_also_be_decimal(num) for num in ('1.1', '8.0')])
+
class Test_colours_from_rgb1_numbers():
"""Test the colours_from_rgb1_numbers function"""