#!/usr/bin/python2.4 # # Copyright 2008 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Tests for line_chart.py.""" import warnings from graphy import common from graphy import line_chart from graphy import graphy_test # TODO: All the different charts are expected to support a similar API (like # having a display object, having a list of data series, axes, etc.). Add some # tests that run against all the charts to make sure they conform to the API. class LineChartTest(graphy_test.GraphyTest): def tearDown(self): warnings.resetwarnings() # TODO: remove once AddSeries is deleted def testAddSeries(self): warnings.filterwarnings('ignore') chart = line_chart.LineChart() chart.AddSeries(points=[1, 2, 3], style=line_chart.LineStyle.solid(), markers='markers', label='label') series = chart.data[0] self.assertEqual(series.data, [1, 2, 3]) self.assertEqual(series.style.width, line_chart.LineStyle.solid().width) self.assertEqual(series.style.on, line_chart.LineStyle.solid().on) self.assertEqual(series.style.off, line_chart.LineStyle.solid().off) self.assertEqual(series.markers, 'markers') self.assertEqual(series.label, 'label') # TODO: remove once the deprecation warning is removed def testAddLineArgumentOrder(self): x = common.Marker(common.Marker.x, '0000ff', 5) # Deprecated approach chart = line_chart.LineChart() warnings.filterwarnings("error") self.assertRaises(DeprecationWarning, chart.AddLine, [1, 2, 3], 'label', [x], 'color') # New order chart = line_chart.LineChart() chart.AddLine([1, 2, 3], 'label', 'color', markers=[x]) self.assertEqual('label', chart.data[0].label) self.assertEqual([x], chart.data[0].markers) self.assertEqual('color', chart.data[0].style.color) class LineStyleTest(graphy_test.GraphyTest): def tearDown(self): warnings.resetwarnings() def testPresets(self): """Test selected traits from the preset line styles.""" self.assertEqual(0, line_chart.LineStyle.solid().off) self.assert_(line_chart.LineStyle.dashed().off > 0) self.assert_(line_chart.LineStyle.solid().width < line_chart.LineStyle.thick_solid().width) def testLineStyleByValueGivesWarning(self): """Using LineStyle.foo as a value should throw a deprecation warning""" warnings.filterwarnings('error') self.assertRaises(DeprecationWarning, common.DataSeries, [], style=line_chart.LineStyle.solid) series = common.DataSeries([]) def _TestAssignment(): series.style = line_chart.LineStyle.solid self.assertRaises(DeprecationWarning, _TestAssignment) warnings.filterwarnings('ignore') series.style = line_chart.LineStyle.solid warnings.resetwarnings() self.assertEqual(1, series.style.width) self.assertEqual(1, series.style.on) self.assertEqual(0, series.style.off) if __name__ == '__main__': graphy_test.main()