mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	
		
			
	
	
		
			337 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			337 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | import unittest | ||
|  | import tkinter | ||
|  | from tkinter import ttk | ||
|  | from test import support | ||
|  | from tkinter.test.support import requires_tcl | ||
|  | 
 | ||
|  | support.requires('gui') | ||
|  | 
 | ||
|  | 
 | ||
|  | class MiscTest(unittest.TestCase): | ||
|  | 
 | ||
|  |     def setUp(self): | ||
|  |         self.root = ttk.setup_master() | ||
|  | 
 | ||
|  |     def test_image_types(self): | ||
|  |         image_types = self.root.image_types() | ||
|  |         self.assertIsInstance(image_types, tuple) | ||
|  |         self.assertIn('photo', image_types) | ||
|  |         self.assertIn('bitmap', image_types) | ||
|  | 
 | ||
|  |     def test_image_names(self): | ||
|  |         image_names = self.root.image_names() | ||
|  |         self.assertIsInstance(image_names, tuple) | ||
|  | 
 | ||
|  | 
 | ||
|  | class BitmapImageTest(unittest.TestCase): | ||
|  | 
 | ||
|  |     @classmethod | ||
|  |     def setUpClass(cls): | ||
|  |         cls.testfile = support.findfile('python.xbm', subdir='imghdrdata') | ||
|  | 
 | ||
|  |     def setUp(self): | ||
|  |         self.root = ttk.setup_master() | ||
|  | 
 | ||
|  |     def test_create_from_file(self): | ||
|  |         image = tkinter.BitmapImage('::img::test', master=self.root, | ||
|  |                                     foreground='yellow', background='blue', | ||
|  |                                     file=self.testfile) | ||
|  |         self.assertEqual(str(image), '::img::test') | ||
|  |         self.assertEqual(image.type(), 'bitmap') | ||
|  |         self.assertEqual(image.width(), 16) | ||
|  |         self.assertEqual(image.height(), 16) | ||
|  |         self.assertIn('::img::test', self.root.image_names()) | ||
|  |         del image | ||
|  |         self.assertNotIn('::img::test', self.root.image_names()) | ||
|  | 
 | ||
|  |     def test_create_from_data(self): | ||
|  |         with open(self.testfile, 'rb') as f: | ||
|  |             data = f.read() | ||
|  |         image = tkinter.BitmapImage('::img::test', master=self.root, | ||
|  |                                     foreground='yellow', background='blue', | ||
|  |                                     data=data) | ||
|  |         self.assertEqual(str(image), '::img::test') | ||
|  |         self.assertEqual(image.type(), 'bitmap') | ||
|  |         self.assertEqual(image.width(), 16) | ||
|  |         self.assertEqual(image.height(), 16) | ||
|  |         self.assertIn('::img::test', self.root.image_names()) | ||
|  |         del image | ||
|  |         self.assertNotIn('::img::test', self.root.image_names()) | ||
|  | 
 | ||
|  |     def assertEqualStrList(self, actual, expected): | ||
|  |         self.assertIsInstance(actual, str) | ||
|  |         self.assertEqual(self.root.splitlist(actual), expected) | ||
|  | 
 | ||
|  |     def test_configure_data(self): | ||
|  |         image = tkinter.BitmapImage('::img::test', master=self.root) | ||
|  |         self.assertEqual(image['data'], '-data {} {} {} {}') | ||
|  |         with open(self.testfile, 'rb') as f: | ||
|  |             data = f.read() | ||
|  |         image.configure(data=data) | ||
|  |         self.assertEqualStrList(image['data'], | ||
|  |                                 ('-data', '', '', '', data.decode('ascii'))) | ||
|  |         self.assertEqual(image.width(), 16) | ||
|  |         self.assertEqual(image.height(), 16) | ||
|  | 
 | ||
|  |         self.assertEqual(image['maskdata'], '-maskdata {} {} {} {}') | ||
|  |         image.configure(maskdata=data) | ||
|  |         self.assertEqualStrList(image['maskdata'], | ||
|  |                                 ('-maskdata', '', '', '', data.decode('ascii'))) | ||
|  | 
 | ||
|  |     def test_configure_file(self): | ||
|  |         image = tkinter.BitmapImage('::img::test', master=self.root) | ||
|  |         self.assertEqual(image['file'], '-file {} {} {} {}') | ||
|  |         image.configure(file=self.testfile) | ||
|  |         self.assertEqualStrList(image['file'], | ||
|  |                                 ('-file', '', '', '',self.testfile)) | ||
|  |         self.assertEqual(image.width(), 16) | ||
|  |         self.assertEqual(image.height(), 16) | ||
|  | 
 | ||
|  |         self.assertEqual(image['maskfile'], '-maskfile {} {} {} {}') | ||
|  |         image.configure(maskfile=self.testfile) | ||
|  |         self.assertEqualStrList(image['maskfile'], | ||
|  |                                 ('-maskfile', '', '', '', self.testfile)) | ||
|  | 
 | ||
|  |     def test_configure_background(self): | ||
|  |         image = tkinter.BitmapImage('::img::test', master=self.root) | ||
|  |         self.assertEqual(image['background'], '-background {} {} {} {}') | ||
|  |         image.configure(background='blue') | ||
|  |         self.assertEqual(image['background'], '-background {} {} {} blue') | ||
|  | 
 | ||
|  |     def test_configure_foreground(self): | ||
|  |         image = tkinter.BitmapImage('::img::test', master=self.root) | ||
|  |         self.assertEqual(image['foreground'], | ||
|  |                          '-foreground {} {} #000000 #000000') | ||
|  |         image.configure(foreground='yellow') | ||
|  |         self.assertEqual(image['foreground'], | ||
|  |                          '-foreground {} {} #000000 yellow') | ||
|  | 
 | ||
|  | 
 | ||
|  | class PhotoImageTest(unittest.TestCase): | ||
|  | 
 | ||
|  |     @classmethod | ||
|  |     def setUpClass(cls): | ||
|  |         cls.testfile = support.findfile('python.gif', subdir='imghdrdata') | ||
|  | 
 | ||
|  |     def setUp(self): | ||
|  |         self.root = ttk.setup_master() | ||
|  |         self.wantobjects = self.root.wantobjects() | ||
|  | 
 | ||
|  |     def create(self): | ||
|  |         return tkinter.PhotoImage('::img::test', master=self.root, | ||
|  |                                   file=self.testfile) | ||
|  | 
 | ||
|  |     def colorlist(self, *args): | ||
|  |         if tkinter.TkVersion >= 8.6 and self.wantobjects: | ||
|  |             return args | ||
|  |         else: | ||
|  |             return tkinter._join(args) | ||
|  | 
 | ||
|  |     def check_create_from_file(self, ext): | ||
|  |         testfile = support.findfile('python.' + ext, subdir='imghdrdata') | ||
|  |         image = tkinter.PhotoImage('::img::test', master=self.root, | ||
|  |                                    file=testfile) | ||
|  |         self.assertEqual(str(image), '::img::test') | ||
|  |         self.assertEqual(image.type(), 'photo') | ||
|  |         self.assertEqual(image.width(), 16) | ||
|  |         self.assertEqual(image.height(), 16) | ||
|  |         self.assertEqual(image['data'], '') | ||
|  |         self.assertEqual(image['file'], testfile) | ||
|  |         self.assertIn('::img::test', self.root.image_names()) | ||
|  |         del image | ||
|  |         self.assertNotIn('::img::test', self.root.image_names()) | ||
|  | 
 | ||
|  |     def check_create_from_data(self, ext): | ||
|  |         testfile = support.findfile('python.' + ext, subdir='imghdrdata') | ||
|  |         with open(testfile, 'rb') as f: | ||
|  |             data = f.read() | ||
|  |         image = tkinter.PhotoImage('::img::test', master=self.root, | ||
|  |                                    data=data) | ||
|  |         self.assertEqual(str(image), '::img::test') | ||
|  |         self.assertEqual(image.type(), 'photo') | ||
|  |         self.assertEqual(image.width(), 16) | ||
|  |         self.assertEqual(image.height(), 16) | ||
|  |         self.assertEqual(image['data'], data if self.wantobjects | ||
|  |                                         else data.decode('latin1')) | ||
|  |         self.assertEqual(image['file'], '') | ||
|  |         self.assertIn('::img::test', self.root.image_names()) | ||
|  |         del image | ||
|  |         self.assertNotIn('::img::test', self.root.image_names()) | ||
|  | 
 | ||
|  |     def test_create_from_ppm_file(self): | ||
|  |         self.check_create_from_file('ppm') | ||
|  | 
 | ||
|  |     def test_create_from_ppm_data(self): | ||
|  |         self.check_create_from_data('ppm') | ||
|  | 
 | ||
|  |     def test_create_from_pgm_file(self): | ||
|  |         self.check_create_from_file('pgm') | ||
|  | 
 | ||
|  |     def test_create_from_pgm_data(self): | ||
|  |         self.check_create_from_data('pgm') | ||
|  | 
 | ||
|  |     def test_create_from_gif_file(self): | ||
|  |         self.check_create_from_file('gif') | ||
|  | 
 | ||
|  |     def test_create_from_gif_data(self): | ||
|  |         self.check_create_from_data('gif') | ||
|  | 
 | ||
|  |     @requires_tcl(8, 6) | ||
|  |     def test_create_from_png_file(self): | ||
|  |         self.check_create_from_file('png') | ||
|  | 
 | ||
|  |     @requires_tcl(8, 6) | ||
|  |     def test_create_from_png_data(self): | ||
|  |         self.check_create_from_data('png') | ||
|  | 
 | ||
|  |     def test_configure_data(self): | ||
|  |         image = tkinter.PhotoImage('::img::test', master=self.root) | ||
|  |         self.assertEqual(image['data'], '') | ||
|  |         with open(self.testfile, 'rb') as f: | ||
|  |             data = f.read() | ||
|  |         image.configure(data=data) | ||
|  |         self.assertEqual(image['data'], data if self.wantobjects | ||
|  |                                         else data.decode('latin1')) | ||
|  |         self.assertEqual(image.width(), 16) | ||
|  |         self.assertEqual(image.height(), 16) | ||
|  | 
 | ||
|  |     def test_configure_format(self): | ||
|  |         image = tkinter.PhotoImage('::img::test', master=self.root) | ||
|  |         self.assertEqual(image['format'], '') | ||
|  |         image.configure(file=self.testfile, format='gif') | ||
|  |         self.assertEqual(image['format'], ('gif',) if self.wantobjects | ||
|  |                                           else 'gif') | ||
|  |         self.assertEqual(image.width(), 16) | ||
|  |         self.assertEqual(image.height(), 16) | ||
|  | 
 | ||
|  |     def test_configure_file(self): | ||
|  |         image = tkinter.PhotoImage('::img::test', master=self.root) | ||
|  |         self.assertEqual(image['file'], '') | ||
|  |         image.configure(file=self.testfile) | ||
|  |         self.assertEqual(image['file'], self.testfile) | ||
|  |         self.assertEqual(image.width(), 16) | ||
|  |         self.assertEqual(image.height(), 16) | ||
|  | 
 | ||
|  |     def test_configure_gamma(self): | ||
|  |         image = tkinter.PhotoImage('::img::test', master=self.root) | ||
|  |         self.assertEqual(image['gamma'], '1.0') | ||
|  |         image.configure(gamma=2.0) | ||
|  |         self.assertEqual(image['gamma'], '2.0') | ||
|  | 
 | ||
|  |     def test_configure_width_height(self): | ||
|  |         image = tkinter.PhotoImage('::img::test', master=self.root) | ||
|  |         self.assertEqual(image['width'], '0') | ||
|  |         self.assertEqual(image['height'], '0') | ||
|  |         image.configure(width=20) | ||
|  |         image.configure(height=10) | ||
|  |         self.assertEqual(image['width'], '20') | ||
|  |         self.assertEqual(image['height'], '10') | ||
|  |         self.assertEqual(image.width(), 20) | ||
|  |         self.assertEqual(image.height(), 10) | ||
|  | 
 | ||
|  |     def test_configure_palette(self): | ||
|  |         image = tkinter.PhotoImage('::img::test', master=self.root) | ||
|  |         self.assertEqual(image['palette'], '') | ||
|  |         image.configure(palette=256) | ||
|  |         self.assertEqual(image['palette'], '256') | ||
|  |         image.configure(palette='3/4/2') | ||
|  |         self.assertEqual(image['palette'], '3/4/2') | ||
|  | 
 | ||
|  |     def test_blank(self): | ||
|  |         image = self.create() | ||
|  |         image.blank() | ||
|  |         self.assertEqual(image.width(), 16) | ||
|  |         self.assertEqual(image.height(), 16) | ||
|  |         self.assertEqual(image.get(4, 6), self.colorlist(0, 0, 0)) | ||
|  | 
 | ||
|  |     def test_copy(self): | ||
|  |         image = self.create() | ||
|  |         image2 = image.copy() | ||
|  |         self.assertEqual(image2.width(), 16) | ||
|  |         self.assertEqual(image2.height(), 16) | ||
|  |         self.assertEqual(image.get(4, 6), image.get(4, 6)) | ||
|  | 
 | ||
|  |     def test_subsample(self): | ||
|  |         image = self.create() | ||
|  |         image2 = image.subsample(2, 3) | ||
|  |         self.assertEqual(image2.width(), 8) | ||
|  |         self.assertEqual(image2.height(), 6) | ||
|  |         self.assertEqual(image2.get(2, 2), image.get(4, 6)) | ||
|  | 
 | ||
|  |         image2 = image.subsample(2) | ||
|  |         self.assertEqual(image2.width(), 8) | ||
|  |         self.assertEqual(image2.height(), 8) | ||
|  |         self.assertEqual(image2.get(2, 3), image.get(4, 6)) | ||
|  | 
 | ||
|  |     def test_zoom(self): | ||
|  |         image = self.create() | ||
|  |         image2 = image.zoom(2, 3) | ||
|  |         self.assertEqual(image2.width(), 32) | ||
|  |         self.assertEqual(image2.height(), 48) | ||
|  |         self.assertEqual(image2.get(8, 18), image.get(4, 6)) | ||
|  |         self.assertEqual(image2.get(9, 20), image.get(4, 6)) | ||
|  | 
 | ||
|  |         image2 = image.zoom(2) | ||
|  |         self.assertEqual(image2.width(), 32) | ||
|  |         self.assertEqual(image2.height(), 32) | ||
|  |         self.assertEqual(image2.get(8, 12), image.get(4, 6)) | ||
|  |         self.assertEqual(image2.get(9, 13), image.get(4, 6)) | ||
|  | 
 | ||
|  |     def test_put(self): | ||
|  |         image = self.create() | ||
|  |         image.put('{red green} {blue yellow}', to=(4, 6)) | ||
|  |         self.assertEqual(image.get(4, 6), self.colorlist(255, 0, 0)) | ||
|  |         self.assertEqual(image.get(5, 6), | ||
|  |                          self.colorlist(0, 128 if tkinter.TkVersion >= 8.6 | ||
|  |                                            else 255, 0)) | ||
|  |         self.assertEqual(image.get(4, 7), self.colorlist(0, 0, 255)) | ||
|  |         self.assertEqual(image.get(5, 7), self.colorlist(255, 255, 0)) | ||
|  | 
 | ||
|  |         image.put((('#f00', '#00ff00'), ('#000000fff', '#ffffffff0000'))) | ||
|  |         self.assertEqual(image.get(0, 0), self.colorlist(255, 0, 0)) | ||
|  |         self.assertEqual(image.get(1, 0), self.colorlist(0, 255, 0)) | ||
|  |         self.assertEqual(image.get(0, 1), self.colorlist(0, 0, 255)) | ||
|  |         self.assertEqual(image.get(1, 1), self.colorlist(255, 255, 0)) | ||
|  | 
 | ||
|  |     def test_get(self): | ||
|  |         image = self.create() | ||
|  |         self.assertEqual(image.get(4, 6), self.colorlist(62, 116, 162)) | ||
|  |         self.assertEqual(image.get(0, 0), self.colorlist(0, 0, 0)) | ||
|  |         self.assertEqual(image.get(15, 15), self.colorlist(0, 0, 0)) | ||
|  |         self.assertRaises(tkinter.TclError, image.get, -1, 0) | ||
|  |         self.assertRaises(tkinter.TclError, image.get, 0, -1) | ||
|  |         self.assertRaises(tkinter.TclError, image.get, 16, 15) | ||
|  |         self.assertRaises(tkinter.TclError, image.get, 15, 16) | ||
|  | 
 | ||
|  |     def test_write(self): | ||
|  |         image = self.create() | ||
|  |         self.addCleanup(support.unlink, support.TESTFN) | ||
|  | 
 | ||
|  |         image.write(support.TESTFN) | ||
|  |         image2 = tkinter.PhotoImage('::img::test2', master=self.root, | ||
|  |                                     format='ppm', | ||
|  |                                     file=support.TESTFN) | ||
|  |         self.assertEqual(str(image2), '::img::test2') | ||
|  |         self.assertEqual(image2.type(), 'photo') | ||
|  |         self.assertEqual(image2.width(), 16) | ||
|  |         self.assertEqual(image2.height(), 16) | ||
|  |         self.assertEqual(image2.get(0, 0), image.get(0, 0)) | ||
|  |         self.assertEqual(image2.get(15, 8), image.get(15, 8)) | ||
|  | 
 | ||
|  |         image.write(support.TESTFN, format='gif', from_coords=(4, 6, 6, 9)) | ||
|  |         image3 = tkinter.PhotoImage('::img::test3', master=self.root, | ||
|  |                                     format='gif', | ||
|  |                                     file=support.TESTFN) | ||
|  |         self.assertEqual(str(image3), '::img::test3') | ||
|  |         self.assertEqual(image3.type(), 'photo') | ||
|  |         self.assertEqual(image3.width(), 2) | ||
|  |         self.assertEqual(image3.height(), 3) | ||
|  |         self.assertEqual(image3.get(0, 0), image.get(4, 6)) | ||
|  |         self.assertEqual(image3.get(1, 2), image.get(5, 8)) | ||
|  | 
 | ||
|  | 
 | ||
|  | tests_gui = (MiscTest, BitmapImageTest, PhotoImageTest,) | ||
|  | 
 | ||
|  | if __name__ == "__main__": | ||
|  |     support.run_unittest(*tests_gui) |