From 44764874a3b7220bc490e638a6acaa57d4b4a87f Mon Sep 17 00:00:00 2001 From: Ted John Date: Sat, 12 May 2018 00:04:16 +0100 Subject: [PATCH] Add test for ImageImporter --- test/tests/CMakeLists.txt | 6 ++++ test/tests/ImageImporterTests.cpp | 48 ++++++++++++++++++++++++++++ test/tests/testdata/images/logo.png | Bin 0 -> 4582 bytes test/tests/tests.vcxproj | 1 + 4 files changed, 55 insertions(+) create mode 100644 test/tests/ImageImporterTests.cpp create mode 100644 test/tests/testdata/images/logo.png diff --git a/test/tests/CMakeLists.txt b/test/tests/CMakeLists.txt index 50ef66c92b..2c23d182bf 100644 --- a/test/tests/CMakeLists.txt +++ b/test/tests/CMakeLists.txt @@ -147,6 +147,12 @@ add_executable(test_localisation ${STRING_TEST_SOURCES}) target_link_libraries(test_localisation ${GTEST_LIBRARIES} test-common ${LDL} z) add_test(NAME localisation COMMAND test_localisation) +# ImageImporter tests +add_executable(test_imageimporter "${CMAKE_CURRENT_LIST_DIR}/ImageImporterTests.cpp" + "${CMAKE_CURRENT_LIST_DIR}/TestData.cpp") +target_link_libraries(test_imageimporter ${GTEST_LIBRARIES} libopenrct2) +add_test(NAME ImageImporter COMMAND test_imageimporter) + # Ride ratings test set(RIDE_RATINGS_TEST_SOURCES "${CMAKE_CURRENT_LIST_DIR}/RideRatings.cpp" "${CMAKE_CURRENT_LIST_DIR}/TestData.cpp") diff --git a/test/tests/ImageImporterTests.cpp b/test/tests/ImageImporterTests.cpp new file mode 100644 index 0000000000..9e5f2bd71a --- /dev/null +++ b/test/tests/ImageImporterTests.cpp @@ -0,0 +1,48 @@ +#include +#include +#include +#include +#include "TestData.h" + +using namespace OpenRCT2::Drawing; + +class ImageImporterTests : public testing::Test +{ +public: + static std::string GetImagePath(const std::string_view& name) + { + return Path::Combine(TestData::GetBasePath(), "images", name.data()); + } + + static uint32 GetHash(void * buffer, size_t bufferLength) + { + uint32 hash = 27; + for (size_t i = 0; i < bufferLength; i++) + { + hash = (13 * hash) + ((uint8 *)buffer)[i]; + } + return hash; + } +}; + +TEST_F(ImageImporterTests, Import_Logo) +{ + auto logoPath = GetImagePath("logo.png"); + + ImageImporter importer; + auto image = Imaging::ReadFromFile(logoPath, IMAGE_FORMAT::PNG_32); + auto result = importer.Import(image, 3, 5, ImageImporter::IMPORT_FLAGS::RLE); + + ASSERT_EQ(result.Buffer, result.Element.offset); + ASSERT_EQ(128, result.Element.width); + ASSERT_EQ(128, result.Element.height); + ASSERT_EQ(3, result.Element.x_offset); + ASSERT_EQ(5, result.Element.y_offset); + ASSERT_EQ(0, result.Element.zoomed_offset); + + // Check to ensure RLE data doesn't change unexpectedly. + // Update expected hash if change is expected. + ASSERT_NE(nullptr, result.Buffer); + auto hash = GetHash(result.Buffer, result.BufferLength); + ASSERT_EQ(0xCEF27C7D, hash); +} diff --git a/test/tests/testdata/images/logo.png b/test/tests/testdata/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f99b17660d0c4cde90a5b3cd5e5d349d1512628b GIT binary patch literal 4582 zcmeHK{X5h9|9`#TduN-;W~`w50C5de7v65>-DFnhs#23 zBW(b{LO0hfUh`G-pTJ?}^SI)iYQ7+0YhU`YW?Fz?3prdT=+Fd4v{PPer7quYnkT+A8X)--2ldk%-`?ag$K*W~Mf`2uvOwgxDK%IfQ@!ik}OO6JpQf=nMT!BfROc zF4hqdrm+H=b3gzmB*Z%+B7n~qgmFRy0%PwM>#(i}>ns7Y*xNfTBqS>~wuG0;A(m1;z0w5~@URkLL^+q+ z1V9fKpjgns1*kVbdHPLZVeLX8%5_Es{M0mtERC2d4a&^oN-KHgNzSrNzx?yUf|8)h zj6{IBosvL`zq6%j&knaOY@fKjZ?4P+1;j3U9Q)+w%S|oNjjOxFk+=5j>&zxUCckpJYGdp5 zVZB}CH`2YbV7RFG@w)z>12|DhlctZAd{xe@+jGYnb)BV6l2hxLX0uc|`^@dF(!--5 zyW*xaw5=aHG`BimGXkw1Je82KvjDkcGdTIyw}(ErF3AHMOaQnm>6(2Tu4>Eg(fr>& z_6-><*D`5L&*`=U_ckdkg4J7RFm5s0z}U#(?m-X?Go8Io4uQLx#BM6NkV8;wP(FCq zfuV!K!}U4zD82EpzpSjm7oL9F1pu0b9QDNPpBMF5Kf-_o3wP!gW2QFdsg`^$OHb61 zl@$=n<92h$v-&UKMHyU`^Xs=wj1_AAGtJx57l>-wOz}hA=AT3E4GiRa~lwLb`?~48>nRnMsAERf_U)mFi9Xg(? zULDx6HC;|M*CmWE>i=w{)FQ8m1$c1nQ&pr^2BFa zdUgy6Z+Me>aykNbwNJSQV%(nzAHW&Y~t7L)pPeQUZ5I+lAtLxR96vMo6uk($4R_yL|cmrmuzYHfn{Yc`1L>z$5b z(rz>j)YsP!WW;+&wpEB-mW>6Y*N|H9uX@+(%r!P|w{X6wRKJfcaC^8HElgQr3s2;R zQ3Rk*-JiFrX7c=0hHFI{d?&G~FZ^&wbo9Q@lQYND{Aj<5O$=kO3YDNUuRekqI%@>o zTph_Wr#%e+l5oGOY(`UnY6b%PbFJ7~f%8~;N0u*2P(LMZv-9%1E=7nljot8p(99*iFab|10-rwe>GvkLiZw3k^8EGbh!ZvPK8(~`! z0X(9q1nRZo?8Bd}EI=067PLq>d#GY&Yk}~wk|xOOSkw)LtL~!e#lgV1jv%l2Cd3-(DHJeK%}`72>%gni=&=$O4Gk7vz?@XNJK9m$l^47|*s^Y&3{ZS~%9M z7e@(qz?0-`tHfFU6r0qQWB?v0#KB zzxX7G)5itFKdSWYQ*dCyzC~h?Scw_N4Mpt4M}cg%9ovBQ)l{El1${aJlQv_sK{wtB z#Q$_uiNvq^Y&Bdi#EGuI{apd*l?duDK7HCd#Axv@?+M}QK`UPTR^*sG zmr9I8&KXWaee33AM`2uv%zssH%lLksi!EQ&y={l8|2XMV{qag*gCpsps2B&Ef?GkY zLD59=1zWgg%|4s8az@KH=Ov_Ep2e5lxSQKe z{UBT{_(8lWT{Mu06}|1^YP8I5{zYKndt1(Xw+wiY;Z!rSnZp8ok&^cH?qn3Wz$$X+ zS-^rBsjY2$LrH%RnJT_JLRE+^c+b~dn|4=lM2yj)(f4#F2Fw1GOnQZ3CPL|&B7qv5 zy59ez1|!GIO>`bEy#x;XaQs|>EFRHT^p33A+?>lh`Kp*dS@Oj&_%gUumkKIKV(I6^ z_)$F^n37D%oJmWto<^$%i_P4FeIfry-7Qg)z}n+1h-Ct6%`XO3x$qJjbLl5*`CqRg z>7qn6u_I6W2lm$}JWgJnU{!zh5q?qMH|VY4FL~q8p_aL>;nH8`_-E#)Bw@ml`sbxL6L%-E&E&O54S?v~UXo57-_l1Y@Kl>&&8*6387H2t zEDXGcB=GAJ#@^`fU2-ye{mXTNvX2MzQuamzvD`=>_K>fzU3i+1dr9fe;-;oqTh!Ry zeiIqEY?^}&i`BGC5mW#>&NYo4vRmU2!sO%V6cfC*ei z)T_d)H@0SpaLrP%1IcQSa=Gh!c)Rs1b2vjZSORKsjmw^9{zgehPpnj&4o-t6b+1$& zxvxyLee+=_KVxus%pPo~YS{e)-wBn@+M{kZw(tUfhQn~*^QHd2yvje|&l9oW7coh! zBT{o-53f{I{$$-gurl!g2E3`L6`I6GM#Bb4AIjU7cF$#c2k0x3gM!zxJ!=wjz$yhC z1wTiO+_n5Wn49;eI+_<&UgCpv-rQcWpX3&7X)JfANe78vsT|i?FybQ~=LB`Xnu%)fVnO@$XUO5Ma9h2s zxccNr^O+`X2%%doo(Rs@o(5vP9bOa=H|~1NEO65;(@Bl$d_C9_e4I7tGP|n^Lk6T5 zA6Zlg!&>1PORi3xlI=v~c(qN$p2tC}^MuQJ*kynRw|`vn&;8wh{Hu1`3C2s1!x1|u z2Hxn>Rq3+uZMLQZta7&H&Z>Di{i?a<3Uc6e3SEyWYp~4O1IEdv02k>Bk0(#lB#u(% zxiQPF7zcMm-uO-gT(K#+ClCji2gj2X_-J&x&>WET8ov@Bfn2OX19e^xAt51m_4Xcv zdJS;L0G3^tvQ&*lxi)T@-`BWBD4W;)M;QQvR*vp2DW@QRM0E_Lnz2Oti(IIT`6ZIQC;jSMR? zBLNd=76VF9BGGjCsI8#1iHBj?#3LxaOfq6xj1_T6J49X5-pn4ZgyH^AFlB1Xh9uz; z{IvSp=Pn8hcZepkgtSO{3p|#4u(pd-QCj9cByp`&(=)oWsNz{!?=6RxI zl_kbgEdTjr8o2WJjO7n5j*2MV@ef?0rVsri(asfCq>|xFD|SjLIc(=!v-n@zW4bCChvz+WD~NMF6Gy=eBQu~aV@SGT(YEAO+Jl-5KItF!+2 zP08I(0Px0V*?GdMZ4Z2^k4`K}#y$T&{d%TgUK1z!ZY+wuUOX-_9*iCN6o`&)JS=O| z7y^&xrVZAykJ`T^kSas+FTa)I=a~}if=TF(!B(xP`UB39@cVYDo(P|w2;0TY{c%}M zhe_<`M(fO*A8P&uosFG$ELfV$U%5}UshbQ|g6RULaA~NP;-}tE;da}mDRT|uPj#t= zr%%6_E}xZZDU!2`P8WP +