// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ui/gfx/platform_font_pango.h"

#include <cairo/cairo.h>
#include <fontconfig/fontconfig.h>
#include <glib-object.h>
#include <pango/pangocairo.h>
#include <pango/pangofc-fontmap.h>

#include <string>

#include "base/memory/ref_counted.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/pango_util.h"

namespace gfx {

// Test that PlatformFontPango is able to cope with PangoFontDescriptions
// containing multiple font families.  The first family should be preferred.
TEST(PlatformFontPangoTest, FamilyList) {
  // Needed for GLib versions prior to 2.36, but deprecated starting 2.35.
#if !GLIB_CHECK_VERSION(2, 35, 0)
  g_type_init();
#endif

  ScopedPangoFontDescription desc("Arial,Times New Roman, 13px");
  scoped_refptr<gfx::PlatformFontPango> font(
      new gfx::PlatformFontPango(desc.get()));
  EXPECT_EQ("Arial", font->GetFontName());
  EXPECT_EQ(13, font->GetFontSize());

  ScopedPangoFontDescription desc2("Times New Roman,Arial, 15px");
  scoped_refptr<gfx::PlatformFontPango> font2(
      new gfx::PlatformFontPango(desc2.get()));
  EXPECT_EQ("Times New Roman", font2->GetFontName());
  EXPECT_EQ(15, font2->GetFontSize());

  // Free memory allocated by FontConfig (http://crbug.com/114750).
  pango_fc_font_map_cache_clear(
      PANGO_FC_FONT_MAP(pango_cairo_font_map_get_default()));
  cairo_debug_reset_static_data();
  FcFini();
}

}  // namespace gfx
