Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/gfx/tests/gtest/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 2 kB image not shown  

Quelle  TestFontOverlapPrevention.cpp

  Sprache: C
 

/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/
 */


#include "gtest/gtest.h"
#include <vector>
#include <string>

#define StandardFonts
#ifdef XP_WIN
#  include "../thebes/StandardFonts-win10.inc"
#elif defined(XP_MACOSX)
#  include "../thebes/StandardFonts-macos.inc"
#elif defined(XP_LINUX)
#  include "../thebes/StandardFonts-linux.inc"
#elif defined(XP_ANDROID)
#  include "../thebes/StandardFonts-android.inc"
#endif
#undef StandardFonts

// Helper to collect FONT_RULE font names
std::vector<std::string> GetFontRuleNames() {
  std::vector<std::string> fontRuleNames;
#undef FONT_RULE
#define FONT_RULE(fontName, ...) fontRuleNames.push_back(fontName);
#define FontInclusionByLocaleRules

#ifdef XP_WIN
#  include "../thebes/StandardFonts-win10.inc"
#elif defined(XP_MACOSX)
#  include "../thebes/StandardFonts-macos.inc"
#elif defined(XP_LINUX)
#  include "../thebes/StandardFonts-linux.inc"
#elif defined(XP_ANDROID)
#  include "../thebes/StandardFonts-android.inc"
#endif

#undef FontInclusionByLocaleRules
#undef FONT_RULE
  return fontRuleNames;
}

/*
 * This test verifies that the font names defined in the language pack
 * (kLangPackFonts) do not overlap with the font names defined by FONT_RULE
 * macros in the platform-specific standard font inclusion files.
 *
 * The code in gfxDWriteFontList::GetVisibilityForFamily assumes that a font is
 * not in both lists.
 */


TEST(StandardFontsTest, LangPackAndFontRuleNoOverlap)
{
  // Get LangPack font names
  std::set<std::string> langPackFonts;
  for (const char* font : kLangPackFonts) {
    langPackFonts.insert(font);
  }

  // Get FONT_RULE font names
  std::vector<std::string> fontRuleNames = GetFontRuleNames();

  // Check for overlap
  for (const auto& font : fontRuleNames) {
    auto it = std::find_if(langPackFonts.begin(), langPackFonts.end(),
                           [&font](const std::string& langPackFont) {
                             return std::equal(
                                 font.begin(), font.end(), langPackFont.begin(),
                                 langPackFont.end(), [](char a, char b) {
                                   return tolower(a) == tolower(b);
                                 });
                           });
    ASSERT_EQ(it, langPackFonts.end())
        << "Font '" << font
        << "' is in both kLangPackFonts and FONT_RULE (case insensitive)";
  }
}

Messung V0.5 in Prozent
C=92 H=79 G=85

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.