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