diff --git a/firanka/series/exceptions.py b/firanka/series/exceptions.py index 1144a1df43d7c6c1870b7e49e18250a3c0b8850e..f8d6a2885e2e3c142dfbb2b4aee946cdab471144 100644 --- a/firanka/series/exceptions.py +++ b/firanka/series/exceptions.py @@ -5,7 +5,9 @@ import logging class FirankaError(Exception): - pass + """ + Base class for firanka's exceptions + """ class NotInDomainError(FirankaError, ValueError): diff --git a/firanka/series/range.py b/firanka/series/range.py index dc1e4a1c110aa8d4f0db7fa3ffee4d97e1b71fb2..82efa3809d754e2db0de86c12453286dc5c8a9e7 100644 --- a/firanka/series/range.py +++ b/firanka/series/range.py @@ -53,11 +53,10 @@ class Range(object): :type x: index or a Range """ - if isinstance(x, (Range, six.text_type)): - if isinstance(x, six.text_type): - x = Range(x) - print('does ', self, 'contain', x) + if isinstance(x, six.string_types): + x = Range(x) + if isinstance(x, Range): if x.start == self.start: if x.left_inc ^ self.left_inc: return False diff --git a/firanka/series/series.py b/firanka/series/series.py index c819859a162b033b987e1a1583b4d2bcac5b7cee..331827a41ecdfe10ce69b4ed141fd77fe3b2665c 100644 --- a/firanka/series/series.py +++ b/firanka/series/series.py @@ -63,13 +63,13 @@ class Series(object): if len(points) == 0: return DiscreteSeries([]) - if domain is None: - domain = Range(points[0], points[-1], True, True) + domain = domain or Range(min(points), max(points), True, True) if domain not in self.domain: raise NotInDomainError('points not inside this series!') data = [(i, self[i]) for i in points] + data.sort() return DiscreteSeries(data, domain) def join(self, series, fun): diff --git a/tests/test_series/test_range.py b/tests/test_series/test_range.py index 0a3c5b1d79270b9920ec2473d120479b3cf03c48..6a6652f7d5de0842d05ef207bded3b57c393f378 100644 --- a/tests/test_series/test_range.py +++ b/tests/test_series/test_range.py @@ -49,4 +49,5 @@ class TestRange(unittest.TestCase): self.assertFalse(-20 in Range('(-10;-1>')) self.assertFalse(1 in Range('(-10;-1>')) - self.assertTrue(Range('<-5;5>') in Range('<-10;10>')) \ No newline at end of file + self.assertTrue(Range('<-5;5>') in Range('<-10;10>')) + self.assertTrue('(-1;6)' in Range(-10.0, 10.0, True, False)) diff --git a/tests/test_series/test_series.py b/tests/test_series/test_series.py index 7036336a8e0f04e340e92efee39a978e55569479..98e95c08527303ce869177b2ed063c4125d8acc4 100644 --- a/tests/test_series/test_series.py +++ b/tests/test_series/test_series.py @@ -2,7 +2,7 @@ from __future__ import print_function, absolute_import, division import six import unittest -from firanka.series import DiscreteSeries, FunctionBasedSeries, Range, ModuloSeries +from firanka.series import DiscreteSeries, FunctionBasedSeries, Range, ModuloSeries, NotInDomainError class TestDiscreteSeries(unittest.TestCase): @@ -14,15 +14,15 @@ class TestDiscreteSeries(unittest.TestCase): self.assertEqual(s[0.5], 0) self.assertEqual(s[1], 1) - self.assertRaises(ValueError, lambda: s[-1]) - self.assertRaises(ValueError, lambda: s[2.5]) + self.assertRaises(NotInDomainError, lambda: s[-1]) + self.assertRaises(NotInDomainError, lambda: s[2.5]) s = DiscreteSeries([[0,0], [1,1], [2,2]], domain=Range(0,3,True,True)) self.assertEqual(s[0], 0) self.assertEqual(s[0.5], 0) self.assertEqual(s[1], 1) - self.assertRaises(ValueError, lambda: s[-1]) + self.assertRaises(NotInDomainError, lambda: s[-1]) self.assertEqual(s[2.5], 2) def test_translation(self): @@ -39,8 +39,8 @@ class TestDiscreteSeries(unittest.TestCase): self.assertEqual(sp[0.5], 0) self.assertEqual(sp[1.5], 1) - self.assertRaises(ValueError, lambda: sp[0]) - self.assertRaises(ValueError, lambda: sp[2]) + self.assertRaises(NotInDomainError, lambda: sp[0]) + self.assertRaises(NotInDomainError, lambda: sp[2]) self.assertEqual(sp.domain.start, 0.5) self.assertEqual(sp.domain.stop, 1.5) @@ -97,8 +97,8 @@ class TestFunctionBasedSeries(unittest.TestCase): self.assertEqual(sp[0.5], 0.5) self.assertEqual(sp[1.5], 1.5) - self.assertRaises(ValueError, lambda: sp[0]) - self.assertRaises(ValueError, lambda: sp[2]) + self.assertRaises(NotInDomainError, lambda: sp[0]) + self.assertRaises(NotInDomainError, lambda: sp[2]) self.assertEqual(sp.domain.start, 0.5) self.assertEqual(sp.domain.stop, 1.5)