diff --git a/Userland/Tests/CMakeLists.txt b/Userland/Tests/CMakeLists.txt index 32dd554bd8..50f1b4a411 100644 --- a/Userland/Tests/CMakeLists.txt +++ b/Userland/Tests/CMakeLists.txt @@ -1,2 +1,3 @@ add_subdirectory(Kernel) add_subdirectory(LibC) +add_subdirectory(LibGfx) diff --git a/Userland/Tests/LibGfx/CMakeLists.txt b/Userland/Tests/LibGfx/CMakeLists.txt new file mode 100644 index 0000000000..ba65cc1471 --- /dev/null +++ b/Userland/Tests/LibGfx/CMakeLists.txt @@ -0,0 +1,10 @@ +file(GLOB CMD_SOURCES CONFIGURE_DEPENDS "*.cpp") + +foreach(CMD_SRC ${CMD_SOURCES}) + get_filename_component(CMD_NAME ${CMD_SRC} NAME_WE) + add_executable(${CMD_NAME} ${CMD_SRC}) + target_link_libraries(${CMD_NAME} LibCore) + install(TARGETS ${CMD_NAME} RUNTIME DESTINATION usr/Tests/LibGfx) +endforeach() + +target_link_libraries(font LibGUI LibCore) diff --git a/Userland/Utilities/test-gfx-font.cpp b/Userland/Tests/LibGfx/font.cpp similarity index 75% rename from Userland/Utilities/test-gfx-font.cpp rename to Userland/Tests/LibGfx/font.cpp index e1bf939bb5..a52e6c85eb 100644 --- a/Userland/Utilities/test-gfx-font.cpp +++ b/Userland/Tests/LibGfx/font.cpp @@ -37,6 +37,12 @@ static void test_fontdatabase_get_by_name() assert(!font_database.get_by_name(name)->name().is_null()); } +static void test_fontdatabase_get() +{ + auto& font_database = Gfx::FontDatabase::the(); + assert(!font_database.get("Liza", 10, 400)->name().is_null()); +} + static void test_fontdatabase_for_each_font() { auto& font_database = Gfx::FontDatabase::the(); @@ -55,17 +61,17 @@ static void test_default_font() static void test_default_fixed_width_font() { - assert(!Gfx::FontDatabase::default_font().name().is_null()); + assert(!Gfx::FontDatabase::default_fixed_width_font().name().is_null()); } static void test_default_bold_fixed_width_font() { - assert(!Gfx::FontDatabase::default_font().name().is_null()); + assert(!Gfx::FontDatabase::default_bold_fixed_width_font().name().is_null()); } static void test_default_bold_font() { - assert(!Gfx::FontDatabase::default_font().name().is_null()); + assert(!Gfx::FontDatabase::default_bold_font().name().is_null()); } static void test_clone() @@ -90,8 +96,44 @@ static void test_set_name() const char* name = "my newly created font"; font->set_name(name); - assert(!font->qualified_name().is_null()); - assert(!font->qualified_name().contains(name)); + assert(!font->name().is_null()); + assert(font->name().contains(name)); +} + +static void test_set_family() +{ + u8 glyph_height = 1; + u8 glyph_width = 1; + auto font = Gfx::BitmapFont::create(glyph_height, glyph_width, true, Gfx::FontTypes::Default); + + const char* family = "my newly created font family"; + font->set_family(family); + + assert(!font->family().is_null()); + assert(font->family().contains(family)); +} + +static void test_set_glyph_width() +{ + u8 glyph_height = 1; + u8 glyph_width = 1; + auto font = Gfx::BitmapFont::create(glyph_height, glyph_width, true, Gfx::FontTypes::Default); + + size_t ch = 123; + font->set_glyph_width(ch, glyph_width); + + assert(font->glyph_width(ch) == glyph_width); +} +static void test_set_glyph_spacing() +{ + u8 glyph_height = 1; + u8 glyph_width = 1; + auto font = Gfx::BitmapFont::create(glyph_height, glyph_width, true, Gfx::FontTypes::Default); + + u8 glyph_spacing = 8; + font->set_glyph_spacing(glyph_spacing); + + assert(font->glyph_spacing() == glyph_spacing); } static void test_set_type() @@ -151,6 +193,7 @@ int main(int, char**) x(); \ printf("Success!\n"); \ } + RUNTEST(test_fontdatabase_get); RUNTEST(test_fontdatabase_get_by_name); RUNTEST(test_fontdatabase_for_each_font); RUNTEST(test_default_font); @@ -159,7 +202,10 @@ int main(int, char**) RUNTEST(test_default_bold_font); RUNTEST(test_clone); RUNTEST(test_set_name); + RUNTEST(test_set_family); RUNTEST(test_set_type); + RUNTEST(test_set_glyph_width); + RUNTEST(test_set_glyph_spacing); RUNTEST(test_width); RUNTEST(test_glyph_or_emoji_width); RUNTEST(test_load_from_file); diff --git a/Userland/Utilities/CMakeLists.txt b/Userland/Utilities/CMakeLists.txt index 6dc2c78079..a6cffdb6de 100644 --- a/Userland/Utilities/CMakeLists.txt +++ b/Userland/Utilities/CMakeLists.txt @@ -40,7 +40,6 @@ target_link_libraries(su LibCrypt) target_link_libraries(tar LibTar LibCompress) target_link_libraries(test-crypto LibCrypto LibTLS LibLine) target_link_libraries(test-compress LibCompress) -target_link_libraries(test-gfx-font LibGUI LibCore) target_link_libraries(test-js LibJS LibLine LibCore) target_link_libraries(test-pthread LibThread) target_link_libraries(test-web LibWeb)