Skip to content

Commit

Permalink
Add basic shape tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
onyxfish committed May 18, 2016
1 parent 8623a7e commit 73d78d4
Show file tree
Hide file tree
Showing 3 changed files with 118 additions and 5 deletions.
5 changes: 2 additions & 3 deletions leather/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,5 @@
from leather.lattice import Lattice
from leather.legend import Legend
from leather.scales import Linear, Ordinal
from leather.shapes.columns import Columns
from leather.shapes.dots import Dots
from leather.shapes.lines import Lines
from leather.series import Series
from leather.shapes import Bars, Columns, Dots, Lines
2 changes: 0 additions & 2 deletions leather/shapes/bars.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ def to_svg(self, width, height, x_scale, y_scale, series):
proj_x = x_scale.project(x, 0, width)
y1, y2 = y_scale.project_interval(y, height, 0)

print(proj_x, y1, y2)

group.append(ET.Element('rect',
x=six.text_type(0),
y=six.text_type(y2),
Expand Down
116 changes: 116 additions & 0 deletions tests/test_shapes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
#!/usr/bin/env python

try:
import unittest2 as unittest
except ImportError:
import unittest

import leather


class TestBars(unittest.TestCase):
def setUp(self):
self.shape = leather.Bars()
self.linear = leather.Linear(0, 10)
self.ordinal = leather.Ordinal(['foo', 'bar', 'bing'])

def test_to_svg(self):
series = leather.Series([
(0, 'foo'),
(5, 'bar'),
(10, 'bing')
], self.shape)

group = self.shape.to_svg(200, 100, self.linear, self.ordinal, series)
rects = list(group)

self.assertEqual(len(rects), 3)
self.assertEqual(float(rects[1].get('x')), 0)
self.assertEqual(float(rects[1].get('width')), 100)


class TestColumns(unittest.TestCase):
def setUp(self):
self.shape = leather.Columns()
self.linear = leather.Linear(0, 10)
self.ordinal = leather.Ordinal(['foo', 'bar', 'bing'])

def test_to_svg(self):
series = leather.Series([
('foo', 0),
('bar', 5),
('bing', 10)
], self.shape)

group = self.shape.to_svg(200, 100, self.ordinal, self.linear, series)
rects = list(group)

self.assertEqual(len(rects), 3)
self.assertEqual(float(rects[1].get('y')), 50)
self.assertEqual(float(rects[1].get('height')), 50)


class TestDots(unittest.TestCase):
def setUp(self):
self.shape = leather.Dots()
self.linear = leather.Linear(0, 10)
self.ordinal = leather.Ordinal(['foo', 'bar', 'bing'])

def test_linear(self):
series = leather.Series([
(0, 0),
(5, 5),
(10, 10)
], self.shape)

group = self.shape.to_svg(200, 100, self.linear, self.linear, series)
circles = list(group)

self.assertEqual(len(circles), 3)
self.assertEqual(float(circles[1].get('cx')), 100)
self.assertEqual(float(circles[1].get('cy')), 50)

def test_ordinal(self):
series = leather.Series([
('foo', 0),
('bar', 5),
('bing', 10)
], self.shape)

group = self.shape.to_svg(200, 100, self.ordinal, self.linear, series)
circles = list(group)

self.assertEqual(len(circles), 3)
self.assertEqual(float(circles[1].get('cx')), 100)
self.assertEqual(float(circles[1].get('cy')), 50)


class TestLines(unittest.TestCase):
def setUp(self):
self.shape = leather.Lines()
self.linear = leather.Linear(0, 10)
self.ordinal = leather.Ordinal(['foo', 'bar', 'bing'])

def test_linear(self):
series = leather.Series([
(0, 0),
(5, 5),
(10, 10)
], self.shape)

group = self.shape.to_svg(200, 100, self.linear, self.linear, series)
paths = list(group)

self.assertEqual(len(paths), 1)

def test_ordinal(self):
series = leather.Series([
('foo', 0),
('bar', 5),
('bing', 10)
], self.shape)

group = self.shape.to_svg(200, 100, self.ordinal, self.linear, series)
paths = list(group)

self.assertEqual(len(paths), 1)

0 comments on commit 73d78d4

Please sign in to comment.