mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-10-31 07:57:27 +03:00 
			
		
		
		
	mcidas test case changes implemented
This commit is contained in:
		
							parent
							
								
									b129900e48
								
							
						
					
					
						commit
						90c0661e8d
					
				|  | @ -1,32 +1,79 @@ | |||
| from __future__ import annotations | ||||
| 
 | ||||
| import pytest | ||||
| 
 | ||||
| from PIL import Image, McIdasImagePlugin | ||||
| 
 | ||||
| from .helper import assert_image_equal_tofile | ||||
| from io import BytesIO | ||||
| import struct | ||||
| 
 | ||||
| def create_mock_mcidas_file(w11_value: int) -> BytesIO: | ||||
|     """ | ||||
|     Creates a mock McIdas file with a given w[11] value. | ||||
|     """ | ||||
|     header = struct.pack( | ||||
|         "!64i", | ||||
|         0, 0, 0, 0, 0, 0, 0, 4,  # Prefix (first 8 bytes) | ||||
|         0, 400, 1800,  # Width, Height (w[9], w[10]) | ||||
|         w11_value,  # Mode (w[11]) | ||||
|         0, 0, 0,  # w[12] to w[14] | ||||
|         16,  # w[15] (assuming some stride value) | ||||
|         0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # w[16] to w[25] | ||||
|         0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  # w[26] to w[35] | ||||
|         256,  # w[34] (assuming some offset) | ||||
|     ) | ||||
|     # Ensure header length is 256 bytes | ||||
|     header = b"\x00" * (256 - len(header)) + header | ||||
| 
 | ||||
|     # Create a valid file | ||||
|     return BytesIO(header) | ||||
| 
 | ||||
| def test_invalid_file() -> None: | ||||
|     invalid_file = "Tests/images/flower.jpg" | ||||
| 
 | ||||
|     with pytest.raises(SyntaxError): | ||||
|         McIdasImagePlugin.McIdasImageFile(invalid_file) | ||||
| 
 | ||||
| 
 | ||||
| def test_valid_file() -> None: | ||||
|     # Arrange | ||||
|     # https://ghrc.nsstc.nasa.gov/hydro/details/cmx3g8 | ||||
|     # https://ghrc.nsstc.nasa.gov/pub/fieldCampaigns/camex3/cmx3g8/browse/ | ||||
|     test_file = "Tests/images/cmx3g8_wv_1998.260_0745_mcidas.ara" | ||||
|     saved_file = "Tests/images/cmx3g8_wv_1998.260_0745_mcidas.tiff" | ||||
| 
 | ||||
|     # Act | ||||
|     with Image.open(test_file) as im: | ||||
|         im.load() | ||||
| 
 | ||||
|         # Assert | ||||
|         assert im.format == "MCIDAS" | ||||
|         assert im.mode == "I" | ||||
|         assert im.size == (1800, 400) | ||||
|         assert_image_equal_tofile(im, saved_file) | ||||
| 
 | ||||
| def test_8bit_file() -> None: | ||||
|     # Arrange | ||||
|     test_file = create_mock_mcidas_file(1) | ||||
| 
 | ||||
|     # Act | ||||
|     with Image.open(test_file) as im: | ||||
|         im.load() | ||||
|         # Assert | ||||
|         assert im.format == "MCIDAS" | ||||
|         assert im.mode == "L" | ||||
|         assert im.size == (1800, 400) | ||||
| 
 | ||||
| def test_32bit_file() -> None: | ||||
|     # Arrange | ||||
|     test_file = create_mock_mcidas_file(4) | ||||
| 
 | ||||
|     # Act | ||||
|     with Image.open(test_file) as im: | ||||
|         im.load() | ||||
|         # Assert | ||||
|         assert im.format == "MCIDAS" | ||||
|         assert im.mode == "I" | ||||
|         assert im.size == (1800, 400) | ||||
| 
 | ||||
| def test_unsupported_file() -> None: | ||||
|     # Arrange | ||||
|     test_file = create_mock_mcidas_file(3) | ||||
| 
 | ||||
|     # Act & Assert | ||||
|     with pytest.raises(SyntaxError, match="unsupported McIdas format"): | ||||
|         Image.open(test_file) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user