From 015da28ffad7fa22d6d5e69e5d6171bbe03cee6d Mon Sep 17 00:00:00 2001 From: Piotr Maslanka <piotr.maslanka@henrietta.com.pl> Date: Fri, 8 Dec 2017 20:58:25 +0100 Subject: [PATCH] test --- firanka/series/range.py | 35 ++++++++++++++++++--------------- setup.py | 1 + tests/test_series/test_range.py | 12 ++++++++--- 3 files changed, 29 insertions(+), 19 deletions(-) diff --git a/firanka/series/range.py b/firanka/series/range.py index ffc0859..3779a14 100644 --- a/firanka/series/range.py +++ b/firanka/series/range.py @@ -24,21 +24,26 @@ class Range(object): """ def __init__(self, *args): if len(args) == 1: - rs, = args - if (rs[0] not in '<(') or (rs[-1] not in '>)'): - raise ValueError('Must start with < or ( and end with ) or >') - - lend_inclusive = rs[0] == '<' - rend_inclusive = rs[-1] == '>' - - rs = rs[1:-1] - start, stop = map(float, rs.split(';')) - elif isinstance(args[0], Range): - start = args[0].range - stop = args[0].stop - lend_inclusive = args[0].lend_inclusive - rend_inclusive = args[0].rend_inclusive + if isinstance(args[0], type(self)): + start = args[0].start + stop = args[0].stop + lend_inclusive = args[0].lend_inclusive + rend_inclusive = args[0].rend_inclusive + else: + rs, = args + + if rs[0] not in '<(': raise ValueError('Must start with ( or <') + if rs[-1] not in '>)': raise ValueError('Must end with ) or >') + if ';' not in rs: raise ValueError('Separator ; required') + + lend_inclusive = rs[0] == '<' + rend_inclusive = rs[-1] == '>' + + rs = rs[1:-1] + start, stop = rs.split(';') + start = float(start) + stop = float(stop) else: start, stop, lend_inclusive, rend_inclusive = args @@ -69,7 +74,6 @@ class Range(object): return self.stop - self.start def __repr__(self): - return str(self) return 'Range(%s, %s, %s, %s)' % (repr(self.start), repr(self.stop), repr(self.lend_inclusive), repr(self.rend_inclusive)) def __bool__(self): @@ -86,7 +90,6 @@ class Range(object): @pre_range def intersection(self, y): - print(str(self), str(y)) if self.start > y.start: return y.intersection(self) diff --git a/setup.py b/setup.py index ca77cde..42ca61a 100644 --- a/setup.py +++ b/setup.py @@ -4,6 +4,7 @@ from setuptools import setup, find_packages from firanka import __version__ setup( + name='firanka', version=__version__, packages=find_packages(exclude=['tests.*', 'tests']), tests_require=["nose", 'coverage>=4.0,<4.4'], diff --git a/tests/test_series/test_range.py b/tests/test_series/test_range.py index f0eca70..5fa18b7 100644 --- a/tests/test_series/test_range.py +++ b/tests/test_series/test_range.py @@ -5,11 +5,17 @@ import unittest from firanka.series import Range + class TestRange(unittest.TestCase): + + def do_intersect(self, a, b, val): + self.assertEqual(bool(Range(a).intersection(b)), val) + self.assertEqual(bool(Range(b).intersection(a)), val) + def test_intersection(self): - self.assertFalse(Range(-10, -1, True, True).intersection('<2;3>')) - self.assertFalse(Range(-10, -1, True, False).intersection('(-1;3>')) - self.assertFalse(Range('<-10;-1)').intersection('<-1;1>')) + self.do_intersect(Range(-10, -1, True, True), '<2;3>', False) + self.do_intersect(Range(-10, -1, True, False), '(-1;3>', False) + self.do_intersect('<-10;-1)', '<-1;1>', False) def test_str(self): self.assertEqual(str(Range(-1, 1, True, True)), '<-1;1>') -- GitLab