From 570ea95d58569ffd0f6c3af014c07c72cf6be88b Mon Sep 17 00:00:00 2001
From: Piotr Maslanka <piotr.maslanka@henrietta.com.pl>
Date: Sat, 9 Dec 2017 01:29:21 +0100
Subject: [PATCH] tests

---
 firanka/series/series.py         | 18 ++++++++++--------
 tests/test_series/test_series.py |  6 +++++-
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/firanka/series/series.py b/firanka/series/series.py
index 331827a..ae7372b 100644
--- a/firanka/series/series.py
+++ b/firanka/series/series.py
@@ -19,12 +19,14 @@ class Series(object):
     def __getitem__(self, item):
         """
         Return a value for given index, or a subslice of this series
-        :param item: a float, or a slice
+        :param item: a float, or a slice, or a Range
         :return: Series instance or a value
         :raises NotInDomainError: index not in domain
         """
-        if isinstance(item, slice):
-            item = Range(item)
+        if isinstance(item, (Range, slice)):
+            if isinstance(item, slice):
+                item = Range(item)
+
             if item not in self.domain:
                 raise NotInDomainError('slicing beyond series domain')
 
@@ -63,14 +65,14 @@ class Series(object):
         if len(points) == 0:
             return DiscreteSeries([])
 
-        domain = domain or Range(min(points), max(points), True, True)
+        points = list(sorted(points))
+
+        domain = domain or Range(points[0], points[-1], 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)
+        return DiscreteSeries([(i, self[i]) for i in points], domain)
 
     def join(self, series, fun):
         """
@@ -98,7 +100,7 @@ class AppliedSeries(Series):
         self.series = series
 
     def _get_for(self, item):
-        return self.fun(self._get_for(item))
+        return self.fun(self.series._get_for(item))
 
 
 class TranslatedSeries(Series):
diff --git a/tests/test_series/test_series.py b/tests/test_series/test_series.py
index 98e95c0..232d557 100644
--- a/tests/test_series/test_series.py
+++ b/tests/test_series/test_series.py
@@ -92,7 +92,6 @@ class TestDiscreteSeries(unittest.TestCase):
 class TestFunctionBasedSeries(unittest.TestCase):
     def test_slice(self):
         series = FunctionBasedSeries(lambda x: x, '<0;2>')
-
         sp = series[0.5:1.5]
 
         self.assertEqual(sp[0.5], 0.5)
@@ -102,6 +101,11 @@ class TestFunctionBasedSeries(unittest.TestCase):
         self.assertEqual(sp.domain.start, 0.5)
         self.assertEqual(sp.domain.stop, 1.5)
 
+    def test_apply(self):
+        PTS = [-1,-2,-3,1,2,3]
+        series = FunctionBasedSeries(lambda x: x, '<-5;5>').apply(lambda x: x*2)
+
+        self.assertEqual(series.eval_points(PTS), [x*2 for x in PTS])
 
 class TestModuloSeries(unittest.TestCase):
     def test_base(self):
-- 
GitLab