Changeset 168

Show
Ignore:
Timestamp:
03/16/09 17:22:40 (18 months ago)
Author:
lgs
Message:

Finish basic tests for stacked bar charts. Closes #27

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/tests/stackedbar.py

    r167 r168  
    2121 
    2222import pycha.stackedbar 
    23 import pycha.bar 
    2423 
    2524 
     
    126125        yticks = [ 
    127126            (1.0, 0.0), (0.9, 0.7), (0.8, 1.4), (0.7, 2.1), (0.6, 2.8), 
    128             (0.5, 3.5), (0.4, 4.2), (0.3, 4.9), 
     127            (0.5, 3.5), (0.4, 4.2), (0.3, 4.9), (0.2, 5.6), 
     128            (0.1, 6.3), (0.0, 7.0), 
    129129            ] 
    130130        for i in range(len(yticks)): 
     
    133133 
    134134 
    135 class HorizontalBarTests(unittest.TestCase): 
     135class StackedHorizontalBarTests(unittest.TestCase): 
    136136 
    137137    def test_updateChart(self): 
     
    139139        dataset = ( 
    140140            ('dataset1', ([0, 1], [1, 1], [2, 3])), 
    141             ('dataset2', ([0, 2], [1, 0], [3, 4])), 
    142             ) 
    143         ch = pycha.bar.HorizontalBarChart(surface) 
    144         ch.addDataset(dataset) 
    145         ch._updateXY() 
    146         ch._updateChart() 
    147         self.assertEqual(ch.xrange, 3) 
    148         self.assertAlmostEqual(ch.xscale, 0.25, 4) 
    149         self.assertAlmostEqual(ch.yscale, 0.25, 4) 
     141            ('dataset2', ([0, 2], [1, 0], [2, 4])), 
     142            ) 
     143        ch = pycha.stackedbar.StackedHorizontalBarChart(surface) 
     144        ch.addDataset(dataset) 
     145        ch._updateXY() 
     146        ch._updateChart() 
     147        self.assertEqual(ch.xrange, 2) 
     148        self.assertAlmostEqual(ch.xscale, 0.3333, 4) 
     149        self.assertAlmostEqual(ch.yscale, 0.1429, 4) 
    150150        self.assertEqual(ch.minxdelta, 1) 
    151         self.assertAlmostEqual(ch.barWidthForSet, 0.09375, 4) 
    152         self.assertAlmostEqual(ch.barMargin, 0.03125, 4) 
     151        self.assertAlmostEqual(ch.barWidth, 0.25, 4) 
     152        self.assertAlmostEqual(ch.barMargin, 0.0417, 4) 
    153153 
    154154        bars = ( 
    155             pycha.bar.Rect(0, 0.03125, 0.25, 0.09375, 0, 1, 'dataset1'), 
    156             pycha.bar.Rect(0, 0.28125, 0.25, 0.09375, 1, 1, 'dataset1'), 
    157             pycha.bar.Rect(0, 0.53125, 0.75, 0.09375, 2, 3, 'dataset1'), 
    158  
    159             pycha.bar.Rect(0, 0.125, 0.5, 0.09375, 0, 2, 'dataset2'), 
    160             pycha.bar.Rect(0, 0.375, 0.0, 0.09375, 1, 0, 'dataset2'), 
    161             pycha.bar.Rect(0, 0.875, 1.0, 0.09375, 3, 4, 'dataset2'), 
     155            pycha.bar.Rect(0, 0.0417, 0.1429, 0.25, 0, 1, 'dataset1'), 
     156            pycha.bar.Rect(0, 0.3750, 0.1429, 0.25, 1, 1, 'dataset1'), 
     157            pycha.bar.Rect(0, 0.7083, 0.4286, 0.25, 2, 3, 'dataset1'), 
     158 
     159            pycha.bar.Rect(0.1429, 0.0417, 0.2857, 0.25, 0, 2, 'dataset2'), 
     160            pycha.bar.Rect(0.1429, 0.3750, 0.0000, 0.25, 1, 0, 'dataset2'), 
     161            pycha.bar.Rect(0.4286, 0.7083, 0.5714, 0.25, 2, 4, 'dataset2'), 
    162162            ) 
    163163 
     
    172172            self.assertEqual(b1.name, b2.name) 
    173173 
    174     def test_updateChartWithNegatives(self): 
    175         surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 500, 500) 
    176         dataset = ( 
    177             ('dataset1', ([0, -3], [1, -1], [2, 3], [3, 5])), 
    178             ) 
    179  
    180         ch = pycha.bar.HorizontalBarChart(surface) 
    181         ch.addDataset(dataset) 
    182         ch._updateXY() 
    183         ch._updateChart() 
    184         self.assertEqual(ch.minxval, 0) 
    185         self.assertEqual(ch.maxxval, 3) 
    186         self.assertEqual(ch.xrange, 3) 
    187         self.assertAlmostEqual(ch.xscale, 0.25, 4) 
    188         self.assertEqual(ch.minyval, -3) 
    189         self.assertEqual(ch.maxyval, 5) 
    190         self.assertEqual(ch.yrange, 8) 
    191         self.assertAlmostEqual(ch.yscale, 0.125, 4) 
    192         self.assertAlmostEqual(ch.area.origin, 0.375) 
    193         self.assertEqual(ch.minxdelta, 1) 
    194         self.assertAlmostEqual(ch.barWidthForSet, 0.1875, 4) 
    195         self.assertAlmostEqual(ch.barMargin, 0.03125, 4) 
    196  
    197         R = pycha.bar.Rect 
    198         bars = ( 
    199             R(0.000, 0.03125, 0.375, 0.1875, 0, -3, 'dataset1'), 
    200             R(0.250, 0.28125, 0.125, 0.1875, 1, -1, 'dataset1'), 
    201             R(0.375, 0.53125, 0.375, 0.1875, 2, 3, 'dataset1'), 
    202             R(0.375, 0.78125, 0.625, 0.1875, 3, 5, 'dataset1'), 
    203             ) 
    204  
    205         for i, bar in enumerate(bars): 
    206             b1, b2 = ch.bars[i], bar 
    207             self.assertAlmostEqual(b1.x, b2.x, 4) 
    208             self.assertAlmostEqual(b1.y, b2.y, 4) 
    209             self.assertAlmostEqual(b1.w, b2.w, 4) 
    210             self.assertAlmostEqual(b1.h, b2.h, 4) 
    211             self.assertEqual(b1.xval, b2.xval) 
    212             self.assertEqual(b1.yval, b2.yval) 
    213             self.assertEqual(b1.name, b2.name) 
    214  
    215174    def test_updateTicks(self): 
    216175        surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 500, 500) 
    217176        dataset = ( 
    218177            ('dataset1', ([0, 1], [1, 1], [2, 3])), 
    219             ('dataset2', ([0, 2], [1, 0], [3, 4])), 
    220             ) 
    221         ch = pycha.bar.HorizontalBarChart(surface) 
     178            ('dataset2', ([0, 2], [1, 0], [2, 4])), 
     179            ) 
     180        ch = pycha.stackedbar.StackedHorizontalBarChart(surface) 
    222181        ch.addDataset(dataset) 
    223182        ch._updateXY() 
     
    226185 
    227186        xticks = [ 
    228             (0.0, 0.0), (0.1, 0.4), (0.2, 0.8), (0.3, 1.2), (0.4, 1.6), 
    229             (0.5, 2.0), (0.6, 2.4), (0.7, 2.8), (0.8, 3.2), (0.9, 3.6), 
    230             (1.0, 4.0), 
     187            (0.0, 0.0), (0.1, 0.7), (0.2, 1.4), (0.3, 2.1), 
     188            (0.4, 2.8), (0.5, 3.5), (0.6, 4.2), (0.7, 4.9), 
     189            (0.8, 5.6), (0.9, 6.3), (1.0, 7.0), 
    231190            ] 
    232191        for i in range(len(xticks)): 
     
    234193            self.assertAlmostEqual(ch.xticks[i][1], xticks[i][1], 4) 
    235194 
    236         yticks = [(0.125, 0), (0.375, 1), (0.625, 2)] 
     195        yticks = [(0.1667, 0), (0.5, 1), (0.8333, 2)] 
    237196        for i in range(len(yticks)): 
    238197            self.assertAlmostEqual(ch.yticks[i][0], yticks[i][0], 4) 
    239198            self.assertAlmostEqual(ch.yticks[i][1], yticks[i][1], 4) 
    240  
    241     def test_udpateTicksWithNegatives(self): 
    242         surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 500, 500) 
    243         dataset = ( 
    244             ('dataset1', ([0, -2], [1, 1], [2, 3])), 
    245             ) 
    246         ch = pycha.bar.HorizontalBarChart(surface) 
    247         ch.addDataset(dataset) 
    248         ch._updateXY() 
    249         ch._updateChart() 
    250         ch._updateTicks() 
    251         xticks = [ 
    252             (0.0, -2.0), (0.1, -1.5), (0.2, -1.0), (0.3, -0.5), (0.4, 0.0), 
    253             (0.5, 0.5), (0.6, 1.0), (0.7, 1.5), (0.8, 2.0), (0.9, 2.5), 
    254             (1.0, 3.0), 
    255             ] 
    256         for i in range(len(xticks)): 
    257             self.assertAlmostEqual(ch.xticks[i][0], xticks[i][0], 4) 
    258             self.assertAlmostEqual(ch.xticks[i][1], xticks[i][1], 4) 
    259  
    260         yticks = [(0.1667, 0), (0.5000, 1), (0.8333, 2)] 
    261         for i in range(len(yticks)): 
    262             self.assertAlmostEqual(ch.yticks[i][0], yticks[i][0], 4) 
    263             self.assertAlmostEqual(ch.yticks[i][1], yticks[i][1], 4) 
    264  
    265     def test_shadowRectangle(self): 
    266         ch = pycha.bar.HorizontalBarChart(None) 
    267         shadow = ch._getShadowRectangle(10, 20, 400, 300) 
    268         self.assertEqual(shadow, (10, 18, 402, 304)) 
    269199 
    270200 
     
    273203        unittest.makeSuite(StackedBarTests), 
    274204        unittest.makeSuite(StackedVerticalBarTests), 
    275         unittest.makeSuite(HorizontalBarTests), 
     205        unittest.makeSuite(StackedHorizontalBarTests), 
    276206    )) 
    277207