Files

22 lines
1.1 KiB
Python

import io,pathlib,struct,sys,unittest
sys.path.insert(0,str(pathlib.Path(__file__).parents[1]/'plugins'))
try:
import scene_media
from PIL import Image
except ImportError:
scene_media=None
@unittest.skipIf(scene_media is None,'install plugins/requirements.txt for BC texture tests')
class SceneTests(unittest.TestCase):
def test_bc1_exact_color_and_bounds(self):
block=struct.pack('<HHI',0xf800,0x07e0,0)
png=scene_media.encoded_png(block,4,4,4)
with Image.open(io.BytesIO(png)) as image:self.assertEqual(image.getpixel((0,0)),(255,0,0,255))
for data,w,h in [(block[:-1],4,4),(block,10000,10000)]:
with self.assertRaises(ValueError):scene_media.encoded_png(data,w,h,4)
def test_ambiguous_descriptor_and_truncation(self):
def desc(w):return struct.pack('<4I',w,4,4,0x80000001)+struct.pack('<Q',7)+b'1.asset'
self.assertEqual(scene_media.texture_descriptor(desc(4),'1.asset'),(4,4,4))
with self.assertRaises(ValueError):scene_media.texture_descriptor(desc(4)+desc(8),'1.asset')
self.assertEqual(scene_media.inline_images(struct.pack('<6I',4,4,4,0,0,8)+b'\0'*7),[])
if __name__=='__main__':unittest.main()