Index: ps/trunk/source/lib/res/graphics/tests/test_tex.h =================================================================== --- ps/trunk/source/lib/res/graphics/tests/test_tex.h (revision 25883) +++ ps/trunk/source/lib/res/graphics/tests/test_tex.h (nonexistent) @@ -1,88 +0,0 @@ -/* Copyright (C) 2021 Wildfire Games. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include "lib/self_test.h" - -#include "lib/tex/tex.h" -#include "lib/tex/tex_codec.h" -#include "lib/allocators/shared_ptr.h" - -#include - -class TestTex : public CxxTest::TestSuite -{ -public: - // have mipmaps be created for a test image; check resulting size and pixels - void test_mipmap_create() - { - static u8 imgData[] = { 0x10,0x20,0x30, 0x40,0x60,0x80, 0xA0,0xA4,0xA8, 0xC0,0xC1,0xC2 }; - std::shared_ptr img = DummySharedPtr(imgData); - // assumes 2x2 box filter algorithm with rounding - static const u8 mipmap[] = { 0x6C,0x79,0x87 }; - Tex t; - TS_ASSERT_OK(t.wrap(2, 2, 24, 0, img, 0)); - TS_ASSERT_OK(t.transform_to(TEX_MIPMAPS)); - const u8* const out_img = t.get_data(); - TS_ASSERT_EQUALS((int)t.img_size(), 12+3); - TS_ASSERT_SAME_DATA(out_img, imgData, 12); - TS_ASSERT_SAME_DATA(out_img+12, mipmap, 3); - } - - void test_img_size() - { - std::shared_ptr img(new u8[100*100*4], ArrayDeleter()); - - Tex t; - TS_ASSERT_OK(t.wrap(100, 100, 32, TEX_ALPHA, img, 0)); - TS_ASSERT_EQUALS((int)t.img_size(), 40000); - - // DXT rounds up to 4x4 blocks; DXT1a is 4bpp - Tex t2; - TS_ASSERT_OK(t2.wrap(97, 97, 4, DXT1A, img, 0)); - TS_ASSERT_EQUALS((int)t2.img_size(), 5000); - } - - void test_s3tc_decode() - { - const size_t w = 4, h = 4, bpp = 4; - const size_t size = w*h/2; - std::shared_ptr img(new u8[size], ArrayDeleter()); - memcpy(img.get(), "\xFF\xFF\x00\x00\x00\xAA\xFF\x55", 8); // gradient from white to black - const u8 expected[] = - "\xFF\xFF\xFF" "\xFF\xFF\xFF" "\xFF\xFF\xFF" "\xFF\xFF\xFF" - "\xAA\xAA\xAA" "\xAA\xAA\xAA" "\xAA\xAA\xAA" "\xAA\xAA\xAA" - "\x55\x55\x55" "\x55\x55\x55" "\x55\x55\x55" "\x55\x55\x55" - "\x00\x00\x00" "\x00\x00\x00" "\x00\x00\x00" "\x00\x00\x00"; - - const size_t flags = TEX_DXT&1; - - // wrap in Tex - Tex t; - TS_ASSERT_OK(t.wrap(w, h, bpp, flags, img, 0)); - - // decompress S3TC - TS_ASSERT_OK(t.transform_to(0)); - - // compare img - TS_ASSERT_SAME_DATA(t.get_data(), expected, 48); - } -}; Property changes on: ps/trunk/source/lib/res/graphics/tests/test_tex.h ___________________________________________________________________ Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Index: ps/trunk/source/lib/res/graphics/tests =================================================================== --- ps/trunk/source/lib/res/graphics/tests (revision 25883) +++ ps/trunk/source/lib/res/graphics/tests (nonexistent) Property changes on: ps/trunk/source/lib/res/graphics/tests ___________________________________________________________________ Deleted: svn:ignore ## -1 +0,0 ## -*.cpp Index: ps/trunk/source/lib/tex/tests/test_tex.h =================================================================== --- ps/trunk/source/lib/tex/tests/test_tex.h (nonexistent) +++ ps/trunk/source/lib/tex/tests/test_tex.h (revision 25884) @@ -0,0 +1,88 @@ +/* Copyright (C) 2021 Wildfire Games. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "lib/self_test.h" + +#include "lib/tex/tex.h" +#include "lib/tex/tex_codec.h" +#include "lib/allocators/shared_ptr.h" + +#include + +class TestTex : public CxxTest::TestSuite +{ +public: + // have mipmaps be created for a test image; check resulting size and pixels + void test_mipmap_create() + { + static u8 imgData[] = { 0x10,0x20,0x30, 0x40,0x60,0x80, 0xA0,0xA4,0xA8, 0xC0,0xC1,0xC2 }; + std::shared_ptr img = DummySharedPtr(imgData); + // assumes 2x2 box filter algorithm with rounding + static const u8 mipmap[] = { 0x6C,0x79,0x87 }; + Tex t; + TS_ASSERT_OK(t.wrap(2, 2, 24, 0, img, 0)); + TS_ASSERT_OK(t.transform_to(TEX_MIPMAPS)); + const u8* const out_img = t.get_data(); + TS_ASSERT_EQUALS((int)t.img_size(), 12+3); + TS_ASSERT_SAME_DATA(out_img, imgData, 12); + TS_ASSERT_SAME_DATA(out_img+12, mipmap, 3); + } + + void test_img_size() + { + std::shared_ptr img(new u8[100*100*4], ArrayDeleter()); + + Tex t; + TS_ASSERT_OK(t.wrap(100, 100, 32, TEX_ALPHA, img, 0)); + TS_ASSERT_EQUALS((int)t.img_size(), 40000); + + // DXT rounds up to 4x4 blocks; DXT1a is 4bpp + Tex t2; + TS_ASSERT_OK(t2.wrap(97, 97, 4, DXT1A, img, 0)); + TS_ASSERT_EQUALS((int)t2.img_size(), 5000); + } + + void test_s3tc_decode() + { + const size_t w = 4, h = 4, bpp = 4; + const size_t size = w*h/2; + std::shared_ptr img(new u8[size], ArrayDeleter()); + memcpy(img.get(), "\xFF\xFF\x00\x00\x00\xAA\xFF\x55", 8); // gradient from white to black + const u8 expected[] = + "\xFF\xFF\xFF" "\xFF\xFF\xFF" "\xFF\xFF\xFF" "\xFF\xFF\xFF" + "\xAA\xAA\xAA" "\xAA\xAA\xAA" "\xAA\xAA\xAA" "\xAA\xAA\xAA" + "\x55\x55\x55" "\x55\x55\x55" "\x55\x55\x55" "\x55\x55\x55" + "\x00\x00\x00" "\x00\x00\x00" "\x00\x00\x00" "\x00\x00\x00"; + + const size_t flags = TEX_DXT&1; + + // wrap in Tex + Tex t; + TS_ASSERT_OK(t.wrap(w, h, bpp, flags, img, 0)); + + // decompress S3TC + TS_ASSERT_OK(t.transform_to(0)); + + // compare img + TS_ASSERT_SAME_DATA(t.get_data(), expected, 48); + } +}; Property changes on: ps/trunk/source/lib/tex/tests/test_tex.h ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property