Skip to content

Commit

Permalink
Added unit test for ForwardCurve object.
Browse files Browse the repository at this point in the history
  • Loading branch information
johnbywater committed Oct 17, 2017
1 parent 868d935 commit 93852e3
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
3 changes: 3 additions & 0 deletions quantdsl/priceprocess/forwardcurve.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import dateutil.parser
import six
from scipy import sort, array, searchsorted

from quantdsl.priceprocess.base import datetime_from_date


class ForwardCurve(object):
def __init__(self, name, data):
assert isinstance(name, six.string_types)
assert isinstance(data, (list, tuple))
self.name = name
self.data = data
self.by_date = dict(
Expand Down
30 changes: 30 additions & 0 deletions quantdsl/tests/test_forwardcurve.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
from unittest import TestCase

import datetime

from quantdsl.priceprocess.forwardcurve import ForwardCurve


class TestForwardCurve(TestCase):
def test_get_price(self):
# Check without any data.
curve = ForwardCurve('name', [])

# Check raises KeyError for any dates.
with self.assertRaises(KeyError):
curve.get_price(date=datetime.datetime(2011, 12, 31))

# Check with data.
curve = ForwardCurve('name', [('2011-1-1', 1), ('2011-1-3', 3)])
# Get first value using exact date.
self.assertEqual(curve.get_price(date=datetime.datetime(2011, 1, 1)), 1)
# Get first value using later date.
self.assertEqual(curve.get_price(date=datetime.datetime(2011, 1, 2)), 1)
# Get second value using exact date.
self.assertEqual(curve.get_price(date=datetime.datetime(2011, 1, 3)), 3)
# Get second value using later date.
self.assertEqual(curve.get_price(date=datetime.datetime(2011, 1, 4)), 3)

# Check raises KeyError for values before first date.
with self.assertRaises(KeyError):
curve.get_price(date=datetime.datetime(2010, 12, 31))

0 comments on commit 93852e3

Please sign in to comment.