From 71f275b5ad5991fd51ea975c7546ffb11a9fbd56 Mon Sep 17 00:00:00 2001 From: Liav A Date: Sat, 7 Jan 2023 17:02:00 +0200 Subject: [PATCH] Tests/LibGfx: Add tests for compressed TGA images --- .../buggie-bottom-left-compressed.tga | Bin 0 -> 23955 bytes .../buggie-top-left-compressed.tga | Bin 0 -> 23955 bytes Tests/LibGfx/TestImageDecoder.cpp | 32 ++++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 Base/res/html/misc/targasuite_files/buggie-bottom-left-compressed.tga create mode 100644 Base/res/html/misc/targasuite_files/buggie-top-left-compressed.tga diff --git a/Base/res/html/misc/targasuite_files/buggie-bottom-left-compressed.tga b/Base/res/html/misc/targasuite_files/buggie-bottom-left-compressed.tga new file mode 100644 index 0000000000000000000000000000000000000000..187d49bec5c40ea6618ba36f865dad30f33c7e2d GIT binary patch literal 23955 zcmZQz;9`J*6oxwt5)6<3|NjreOaA}=&-~}lpXbk?U%Ys6|NaBbJ9qA6KYaM`>C>mL zU%!6u-o00^UVZxX>Bo;BfB*hn_y7O@MgRZ*XLVBDwX5-{w zWn*JzVPRr|TF78;Z-4FDwdMc+|DOu-&#zyC&Y`hYmFzJa~}((4j+T&z`+} z`SODY4<<~U$iTqB#lb2n!aGqyjE_ZJluuNIN06V3nTe^iv=n5@B#ear! zK0`x8Mn=X)1_p*EMh1o!kPmry*d)aGr$~tLF^h}wadEP#sj2_{`*+#@|Nkfc|No!y z!-o$oEiH{qjEu~joUD9&oI--!BEr0lq9QzOA|gBxZwUx+Gcq!=vVx45CLzYh#LL6M z%*_1x^JkDb6F_eG`0-<0TpS}KBQFoTm?&SPgcyH|gcz7+782rSU|`@E;1n0*18e8! z<78l9c=_@rNP9m>`@etxy1Kd;85soyxh2H;Izg83@o_LPFo=loOb7A!1weY9K79() z!~EdkLnbCB9&UCCalS5)5*{u#Mn*<4F+Q*cL9m7=PoBUuFs)g$hLMp$M1;2+6dc@~ ztW1oI;$r*~V*FrN2?=m9GBDh{bqlVcxTFN)X^;jc9&R>9Mh2Mi5Y^Xj+<>WObai#* zpxWF!fD!qOkq_pq<|Nl(CfB)9h)Z*e~1FIGj;bUTCITIHxPbeI(qadBLjmFKNrY$b_r2_9xir9aQ0zi zW#;2$7ZT(W72#Y;^O0BXJH1ZU}9o|8_Unh$iQ&--aU~2K|W&s`SWL7 zTpSYo2nsUxCJ8Yd&7) zji79Y%OX&IX8!y4@5M`(+S=Om^z=ZP8C-gROAru`MM6TNsj2DEp+n%5zz&W%4o((N zFR#CU|Du~N2o8IwH$Y_$&-d@&@87?F^ytxz8#gXlvSjJfW!txJzjW!+$B!TX|NsB? z?ORl10|Em7{riX4*!iF&jiJ%U&kyFF{QP`)w1I>5@slU*AWi@N{rmRq+uOHq8{fQn z!}$60=Rbe`O#lD?KXwyc-QD3P78JlD3X<~g-+$2j|Nnp9@87>)zkYrF`t^;CjXpj; zDk`e%>>Lb?jLgi;l9E!+&dyCuO}lpOdj0y%6u3R_-l2Gz)!xAoW=~;Z5eo}AbBICg zxpn*Y|NsBLe*Jp##MI5mIIWF=VFnu$<5U)=CT6AxMkZl-dHGG7HvReY2b3qkR=t1!9@T%A zR@N}9y1KfcR5(}fEc)~s36-QC?-R#wK8mzM{!mIszVSh_(@�P6Ju+@87>GSFUt)bjZoe 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, file->size()); + EXPECT_EQ(tga.frame_count(), 1u); + + EXPECT(tga.sniff()); + EXPECT(!tga.is_animated()); + EXPECT(!tga.loop_count()); + + auto frame_or_error = tga.frame(0); + EXPECT(!frame_or_error.is_error()); + auto frame = frame_or_error.release_value(); + EXPECT(frame.duration == 0); +} + +TEST_CASE(test_targa_top_left_compressed) +{ + auto file = Core::MappedFile::map("/res/html/misc/targasuite_files/buggie-top-left-compressed.tga"sv).release_value(); + auto tga = Gfx::TGAImageDecoderPlugin(reinterpret_cast(file->data()), file->size()); + EXPECT_EQ(tga.frame_count(), 1u); + + EXPECT(tga.sniff()); + EXPECT(!tga.is_animated()); + EXPECT(!tga.loop_count()); + + auto frame_or_error = tga.frame(0); + EXPECT(!frame_or_error.is_error()); + auto frame = frame_or_error.release_value(); + EXPECT(frame.duration == 0); +}