File: test_charting.py

package info (click to toggle)
python-agate 1.13.0-1~exp1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 2,008 kB
  • sloc: python: 8,578; makefile: 126
file content (88 lines) | stat: -rw-r--r-- 2,783 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
from collections import OrderedDict

import leather

from agate import Table, TableSet
from agate.data_types import Number, Text


class TestTableSetCharts(leather.LeatherTestCase):
    def setUp(self):
        self.table1 = (
            ('a', 1, 4),
            ('b', 3, 7),
            ('c', 2, 2)
        )

        self.table2 = (
            ('a', 0, 3),
            ('b', 2, 3),
            ('c', 5, 3)
        )

        self.table3 = (
            ('a', 1, 10),
            ('b', 2, 1),
            ('c', 3, None)
        )

        self.text_type = Text()
        self.number_type = Number()

        self.column_names = ['one', 'two', 'three']
        self.column_types = [self.text_type, self.number_type, self.number_type]

        self.tables = OrderedDict([
            ('table1', Table(self.table1, self.column_names, self.column_types)),
            ('table2', Table(self.table2, self.column_names, self.column_types)),
            ('table3', Table(self.table3, self.column_names, self.column_types))
        ])

        self.tablesets = TableSet(self.tables.values(), self.tables.keys())

    def test_bar_chart(self):
        text = self.tablesets.bar_chart(label='one', value='three')
        svg = self.parse_svg(text)

        self.assertElementCount(svg, '.axis', 6)
        self.assertElementCount(svg, '.series', 3)
        self.assertElementCount(svg, '.bars', 3)
        self.assertElementCount(svg, '.bars rect', 8)

        text2 = self.tablesets.bar_chart(label=0, value=2)
        self.assertEqual(text, text2)

    def test_column_chart(self):
        text = self.tablesets.column_chart(label='one', value='three')
        svg = self.parse_svg(text)

        self.assertElementCount(svg, '.axis', 6)
        self.assertElementCount(svg, '.series', 3)
        self.assertElementCount(svg, '.columns', 3)
        self.assertElementCount(svg, '.columns rect', 8)

        text2 = self.tablesets.column_chart(label=0, value=2)
        self.assertEqual(text, text2)

    def test_line_chart(self):
        text = self.tablesets.line_chart(x='two', y='three')
        svg = self.parse_svg(text)

        self.assertElementCount(svg, '.axis', 6)
        self.assertElementCount(svg, '.series', 3)
        self.assertElementCount(svg, 'path', 3)

        text2 = self.tablesets.line_chart(x=1, y=2)
        self.assertEqual(text, text2)

    def test_scatterplot(self):
        text = self.tablesets.scatterplot(x='two', y='three')
        svg = self.parse_svg(text)

        self.assertElementCount(svg, '.axis', 6)
        self.assertElementCount(svg, '.series', 3)
        self.assertElementCount(svg, '.dots', 3)
        self.assertElementCount(svg, 'circle', 8)

        text2 = self.tablesets.scatterplot(x=1, y=2)
        self.assertEqual(text, text2)