Files
Phoenix/unittests/test_bmpbndl.py
Robin Dunn 0a771ad404 Transfer ownership in wx.BitmapBundle.FromImpl
Add unittest for wx.BitmapBundleImpl
2022-05-17 18:48:46 -07:00

84 lines
2.8 KiB
Python

import unittest
from unittests import wtc
import wx
import os
icoFile = os.path.join(os.path.dirname(__file__), 'mondrian.ico')
pngFile = os.path.join(os.path.dirname(__file__), 'toucan.png')
#---------------------------------------------------------------------------
class bmpbndl_Tests(wtc.WidgetTestCase):
def test_BitmapBundleCtor1(self):
b1 = wx.BitmapBundle()
self.assertTrue( not b1.IsOk() )
def test_BitmapBundleCtor2(self):
b2 = wx.BitmapBundle(wx.Bitmap(5, 10, 32))
self.assertTrue( b2.IsOk() )
def test_BitmapBundleCtor3(self):
b3 = wx.BitmapBundle(wx.Icon(icoFile))
self.assertTrue( b3.IsOk() )
def test_BitmapBundleCtor4(self):
b4 = wx.BitmapBundle(wx.Image(pngFile))
self.assertTrue( b4.IsOk() )
def test_BitmapBundleVector(self):
bmps = [wx.Bitmap(16,16,32),
wx.Bitmap(24,24,32),
wx.Bitmap(32,32,32),
wx.Bitmap(64,64,32)]
bb = wx.BitmapBundle.FromBitmaps(bmps)
self.assertTrue( bb.IsOk() )
b = bb.GetBitmap((32,32))
self.assertTrue(b.IsOk())
self.assertEqual(b.GetSize(), wx.Size(32,32))
def test_BitmapBundle_ImplicitCtor(self):
"Ensure that a wx.Bitmap can still be used where a wx.BitmapBundle is needed"
bmp = wx.Bitmap(pngFile)
btn = wx.Button(self.frame, -1, "Hello")
btn.SetBitmap(bmp)
def test_BitmapBundleImpl(self):
"Test deriving a new class from wx.BitmapBundleImpl"
class MyCustomBitmapBundleImpl(wx.BitmapBundleImpl):
def __init__(self):
super().__init__()
self.img = wx.Image(pngFile)
self.size = self.img.GetSize()
def GetDefaultSize(self):
# Report the best or default size for the bitmap
return self.size
def GetPreferredBitmapSizeAtScale(self, scale):
# Return the size of the bitmap at the given display scale. It
# doesn't need to be size*scale if there are unscaled bitmaps
# near that size.
return self.size * scale
def GetBitmap(self, size):
# Return the version of the bitmap at the desired size
img = self.img.Scale(size.width, size.height)
return wx.Bitmap(img)
bb = wx.BitmapBundle.FromImpl(MyCustomBitmapBundleImpl())
self.assertTrue( bb.IsOk() )
b = bb.GetBitmap((32,32))
self.assertTrue(b.IsOk())
self.assertEqual(b.GetSize(), wx.Size(32,32))
b = bb.GetBitmap((48,48))
self.assertTrue(b.IsOk())
self.assertEqual(b.GetSize(), wx.Size(48,48))
#---------------------------------------------------------------------------
if __name__ == '__main__':
unittest.main()