From 24652e9b066ffeae1a79f20e2efd407ad7b31d1e Mon Sep 17 00:00:00 2001 From: Piotr Maslanka <piotr.maslanka@henrietta.com.pl> Date: Fri, 8 Dec 2017 20:47:30 +0100 Subject: [PATCH] tests --- firanka/series/__init__.py | 8 ++++++-- firanka/series/range.py | 10 ++++++++-- tests/test_series/test_range.py | 11 ++++++++++- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/firanka/series/__init__.py b/firanka/series/__init__.py index f41d214..3b3bbcd 100644 --- a/firanka/series/__init__.py +++ b/firanka/series/__init__.py @@ -3,7 +3,11 @@ from __future__ import print_function, absolute_import, division import six import logging -logger = logging.getLogger(__name__) - from .exceptions import OutOfRangeError, EmptyDomainError +from .range import Range +__all__ = [ + 'OutOfRangeError', + 'EmptyDomainError', + 'Range' +] diff --git a/firanka/series/range.py b/firanka/series/range.py index 81a0123..bb92137 100644 --- a/firanka/series/range.py +++ b/firanka/series/range.py @@ -5,6 +5,7 @@ import logging import re from satella.coding import for_argument import functools +import math logger = logging.getLogger(__name__) @@ -25,8 +26,8 @@ class Range(object): def __init__(self, *args): if len(args) == 1: rs, = args - assert rs.startswith('<') or rs.startswith('(') - assert rs.endswith('>') or rs.endswith(')') + assert rs[0] in '<(' + assert rs[-1] in '>)' lend_inclusive = rs[0] == '<' rend_inclusive = rs[-1] == '>' @@ -41,6 +42,11 @@ class Range(object): else: start, stop, lend_inclusive, rend_inclusive = args + if lend_inclusive and math.isinf(start): + raise ValueError('Greater or equal with infinity!') + if rend_inclusive and math.isinf(stop): + raise ValueError('Greater or equal with infinity!') + self.start = start self.stop = stop self.lend_inclusive = lend_inclusive diff --git a/tests/test_series/test_range.py b/tests/test_series/test_range.py index 8398c3c..8acf5cd 100644 --- a/tests/test_series/test_range.py +++ b/tests/test_series/test_range.py @@ -13,4 +13,13 @@ class TestRange(unittest.TestCase): def test_str(self): - self.assertEqual(str(Range(-1, 1, True, True)), '<-1;1>') \ No newline at end of file + self.assertEqual(str(Range(-1, 1, True, True)), '<-1;1>') + + def test_contains(self): + self.assertFalse(-1 in Range('<-10;-1)')) + self.assertTrue(-10 in Range('<-10;-1)')) + self.assertFalse(-10 in Range('(-10;-1>')) + self.assertTrue(-1 in Range('(-10;-1>')) + self.assertTrue(-5 in Range('(-10;-1>')) + self.assertFalse(-20 in Range('(-10;-1>')) + self.assertFalse(1 in Range('(-10;-1>')) -- GitLab