Skip to content

Commit f0d9d08

Browse files
author
Brian Luft
committed
adds some initial tests for basic series adds
1 parent 4abf3ca commit f0d9d08

File tree

3 files changed

+59
-1
lines changed

3 files changed

+59
-1
lines changed

README.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ For example::
77

88
>>> import pyflot
99
>>> f = pyflot.Flot()
10-
>>> f.add_series([(1,1), (2,2), (3,3)])
10+
>>> f.add_series([(1, 1), (2, 2), (3, 3)])
1111
>>> print f.series_json
1212
[{"data": [[1, 1], [2, 2], [3, 3]]}]
1313

pyflot/__init__.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
import json
33

44

5+
class MissingDataException(Exception):
6+
"""Exception raised when a series does not contain
7+
any data points"""
8+
9+
510
class DuplicateLabelException(Exception):
611
"""Exception raised when an attempt is made to
712
label a new series with a label already in use"""
@@ -57,6 +62,8 @@ def add_series(self, series, label=None, **kwargs):
5762
"""
5863
A series is a list of pairs (2-tuples)
5964
"""
65+
if not series:
66+
raise MissingDataException
6067
new_series = {'data': series}
6168
if label and label in [x.get('label', None) for x in self._series]:
6269
raise DuplicateLabelException

tests/__init__.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import unittest
2+
3+
from pyflot import Flot, MissingDataException, \
4+
DuplicateLabelException
5+
6+
7+
SERIES = (
8+
((1, 1), (2, 2), (3, 3)),
9+
)
10+
S1, = SERIES
11+
12+
class TestFlot(unittest.TestCase):
13+
14+
def setUp(self):
15+
self.flot = Flot()
16+
17+
def check_add_series(self, raw, label=None):
18+
count = len(self.flot._series)
19+
self.flot.add_series(raw, label)
20+
self.assertEqual(count+1, len(self.flot._series))
21+
series = self.flot._series[count]
22+
self.assertEqual(raw, series['data'])
23+
if label:
24+
self.assertEqual(label, series['label'])
25+
else:
26+
self.assertFalse('label' in series)
27+
28+
def test_basic_add_series(self):
29+
"make sure a series can be added with no label or options"
30+
self.check_add_series(S1)
31+
32+
def test_reject_empty_series(self):
33+
"""don't accept empty series"""
34+
self.assertRaises(MissingDataException, self.flot.add_series, [])
35+
self.assertEqual(len(self.flot._series), 0)
36+
37+
def test_add_series_with_label(self):
38+
"""make sure a label can be associated with a series"""
39+
self.flot.add_series(S1, "as_arg")
40+
self.flot._series = []
41+
self.flot.add_series(S1, label="as_kwarg")
42+
43+
def test_reject_duplicate_label(self):
44+
"make sure a series is not added if it has a duplicate label"
45+
self.check_add_series(S1, "label1")
46+
self.assertRaises(DuplicateLabelException, self.flot.add_series, S1, "label1")
47+
48+
def test_add_multiple_series(self):
49+
"make sure multiple series can be added"
50+
self.check_add_series(S1)
51+
self.check_add_series(S1)

0 commit comments

Comments
 (0)