From fa0eb1c57529cf31208e57465c595fc899a11c8b Mon Sep 17 00:00:00 2001 From: Werner F Bruhin Date: Thu, 26 Mar 2015 09:53:59 +0100 Subject: [PATCH] add some tests for speedmeter --- unittests/test_lib_agw_speedmeter.py | 133 +++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 unittests/test_lib_agw_speedmeter.py diff --git a/unittests/test_lib_agw_speedmeter.py b/unittests/test_lib_agw_speedmeter.py new file mode 100644 index 00000000..944b907d --- /dev/null +++ b/unittests/test_lib_agw_speedmeter.py @@ -0,0 +1,133 @@ +import imp_unittest, unittest +import wtc +import wx +import random + +import wx.lib.agw.speedmeter as SM + +from math import pi, sqrt + + +#--------------------------------------------------------------------------- + +class lib_agw_speedmeter_Tests(wtc.WidgetTestCase): + + def test_lib_agw_speedmeterCtor(self): + spW = SM.SpeedMeter(self.frame, + agwStyle=SM.SM_DRAW_HAND | + SM.SM_DRAW_SECTORS | + SM.SM_DRAW_MIDDLE_TEXT | + SM.SM_DRAW_SECONDARY_TICKS + ) + + + def test_lib_agw_speedmeterMethods(self): + panel = wx.Panel(self.frame) + spW = SM.SpeedMeter(panel, + agwStyle=SM.SM_DRAW_HAND | + SM.SM_DRAW_SECTORS | + SM.SM_DRAW_MIDDLE_TEXT | + SM.SM_DRAW_SECONDARY_TICKS + ) + + # Set The Region Of Existence Of SpeedMeter (Always In Radians!!!!) + spW.SetAngleRange(-pi/6, 7*pi/6) + self.assertEqual(spW.GetAngleRange(), [-pi/6, 7*pi/6]) + + # Create The Intervals That Will Divide Our SpeedMeter In Sectors + intervals = range(0, 201, 20) + spW.SetIntervals(intervals) + self.assertEqual(spW.GetIntervals(), intervals) + + # Assign The Same Colours To All Sectors (We Simulate A Car Control For Speed) + # Usually This Is Black + colours = [wx.BLACK]*10 + spW.SetIntervalColours(colours) + self.assertEqual(spW.GetIntervalColours(), colours) + + # Assign The Ticks: Here They Are Simply The String Equivalent Of The Intervals + ticks = [str(interval) for interval in intervals] + spW.SetTicks(ticks) + self.assertEqual(spW.GetTicks(), ticks) + + # Set The Ticks/Tick Markers Colour + spW.SetTicksColour(wx.WHITE) + self.assertEqual(spW.GetTicksColour(), wx.WHITE) + + # We Want To Draw 5 Secondary Tickis Between The Principal Ticks + spW.SetNumberOfSecondaryTicks(5) + self.assertEqual(spW.GetNumberOfSecondaryTicks(), 5) + + # Set The Font For The Ticks Markers + tf = wx.Font(7, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL) + spW.SetTicksFont(tf) + self.assertEqual(spW.GetTicksFont(), ([tf], 7)) + + # Set The Text In The Center Of SpeedMeter + spW.SetMiddleText("Km/h") + self.assertEqual(spW.GetMiddleText(), "Km/h") + + # Assign The Colour To The Center Text + spW.SetMiddleTextColour(wx.WHITE) + self.assertEqual(spW.GetMiddleTextColour(), wx.WHITE) + + # Assign A Font To The Center Text + mf = wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD) + spW.SetMiddleTextFont(mf) + self.assertEqual(spW.GetMiddleTextFont(), (mf, 8)) + + # Set The Colour For The Hand Indicator + hc = wx.Colour(255, 50, 0) + spW.SetHandColour(hc) + self.assertEqual(spW.GetHandColour(), hc) + + # Do Not Draw The External (Container) Arc. Drawing The External Arc May + # Sometimes Create Uglier Controls. Try To Comment This Line And See It + # For Yourself! + spW.DrawExternalArc(False) + + # Set The Current Value For The SpeedMeter + spW.SetSpeedValue(44) + self.assertEqual(spW.GetSpeedValue(), 44) + + def test_lib_agw_speedmeterSizerLayout(self): + panel = wx.Panel(self.frame, -1) + fgSizer = wx.FlexGridSizer(rows=2, cols=3, vgap=2, hgap=5) + panel.SetSizer(fgSizer) + + panel1 = wx.Panel(panel, -1, style=wx.SUNKEN_BORDER) + fgSizer.Add(panel1, 1, wx.EXPAND) + + boxSizer = wx.BoxSizer() + panel.SetSizer(boxSizer) + spW = SM.SpeedMeter(panel1, + agwStyle=SM.SM_DRAW_HAND | + SM.SM_DRAW_SECTORS | + SM.SM_DRAW_MIDDLE_TEXT | + SM.SM_DRAW_SECONDARY_TICKS + ) + boxSizer.Add(spW, 1, wx.EXPAND) + boxSizer.Layout() + + + def test_lib_agw_peakmeterConstantsExist(self): + SM.SM_BUFFERED_DC + SM.SM_DRAW_FANCY_TICKS + SM.SM_DRAW_GRADIENT + SM.SM_DRAW_HAND + SM.SM_DRAW_MIDDLE_ICON + SM.SM_DRAW_MIDDLE_TEXT + SM.SM_DRAW_PARTIAL_FILLER + SM.SM_DRAW_PARTIAL_SECTORS + SM.SM_DRAW_SECONDARY_TICKS + SM.SM_DRAW_SECTORS + SM.SM_DRAW_SHADOW + SM.SM_MOUSE_TRACK + SM.SM_NORMAL_DC + SM.SM_ROTATE_TEXT + + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + unittest.main()