From 1db2846beaf4e6dbec590351158f079dcece5c4f Mon Sep 17 00:00:00 2001 From: Piotr Maslanka <piotr.maslanka@henrietta.com.pl> Date: Sat, 9 Dec 2017 01:19:29 +0100 Subject: [PATCH] fix range --- firanka/series/exceptions.py | 4 +++- firanka/series/range.py | 7 +++---- firanka/series/series.py | 4 ++-- tests/test_series/test_range.py | 3 ++- tests/test_series/test_series.py | 16 ++++++++-------- 5 files changed, 18 insertions(+), 16 deletions(-) diff --git a/firanka/series/exceptions.py b/firanka/series/exceptions.py index 1144a1d..f8d6a28 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 dc1e4a1..82efa38 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 c819859..331827a 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 0a3c5b1..6a6652f 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 7036336..98e95c0 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) -- GitLab