Skip to content
Snippets Groups Projects
Commit 294317cf authored by Piotr Maślanka's avatar Piotr Maślanka
Browse files

bug in ranges found

parent 570ea95d
No related branches found
No related tags found
No related merge requests found
......@@ -5,7 +5,7 @@ import logging
from .exceptions import NotInDomainError, FirankaError
from .range import Range, REAL_SET
from .series import DiscreteSeries, FunctionBasedSeries, ModuloSeries
from .series import DiscreteSeries, FunctionBasedSeries, ModuloSeries, Series
__all__ = [
......@@ -16,4 +16,5 @@ __all__ = [
'FunctionBasedSeries',
'DiscreteSeries',
'ModuloSeries',
'Series',
]
......@@ -107,14 +107,14 @@ class Range(object):
if self.start == y.start:
start = self.start
left_inc = self.left_inc or y.left_inc
left_inc = self.left_inc and y.left_inc
else:
start = y.start
left_inc = y.left_inc
if self.stop == y.stop:
stop = self.stop
right_inc = self.right_inc or y.right_inc
right_inc = self.right_inc and y.right_inc
else:
p, q = (self, y) if self.stop < y.stop else (y, self)
stop = p.stop
......
......@@ -10,6 +10,12 @@ from .exceptions import NotInDomainError
class Series(object):
"""
Abstract, base class for series.
Your series needs to override just _get_for(x: float) -> v
for minimum functionality
"""
def __init__(self, domain):
if not isinstance(domain, Range):
......@@ -39,7 +45,7 @@ class Series(object):
return self._get_for(item)
def _get_for(self, item):
raise NotImplementedError
raise NotImplementedError('This is abstract, override me!')
def eval_points(self, points):
"""
......
......@@ -28,6 +28,7 @@ class TestRange(unittest.TestCase):
self.do_intersect('<-10;-1)', '<-1;1>', True)
self.do_intersect('<-10;-1)', '(-1;3>', True)
self.do_intersect('<-10;2)', '<1;5>', '<1;2)')
self.do_intersect('<-5;5>', '(-5;5)', '(-5;5)')
def test_str_and_repr_and_bool(self):
p = Range(-1,1,True,True)
......
......@@ -32,6 +32,11 @@ class TestDiscreteSeries(unittest.TestCase):
self.assertEqual(s[3.5], 0)
self.assertEqual(s[4], 1)
def test_slice_outdomain(self):
series = DiscreteSeries([[0, 0], [1, 1], [2, 2]])
self.assertRaises(NotInDomainError, lambda: series[-1:2])
def test_slice(self):
series = DiscreteSeries([[0, 0], [1, 1], [2, 2]])
......@@ -89,6 +94,9 @@ class TestDiscreteSeries(unittest.TestCase):
self.assertIsInstance(sa, DiscreteSeries)
self.assertEqual(sa.data, [(i, i**2) for i in PTS])
empty = FunctionBasedSeries(lambda x: x**2, '<-10;10)').discretize([])
self.assertTrue(empty.domain.is_empty())
class TestFunctionBasedSeries(unittest.TestCase):
def test_slice(self):
series = FunctionBasedSeries(lambda x: x, '<0;2>')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment