EmbeddedFontCollectionTests.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System;
  2. using Avalonia.Media;
  3. using Avalonia.Media.Fonts;
  4. using Avalonia.UnitTests;
  5. using Xunit;
  6. namespace Avalonia.Skia.UnitTests.Media
  7. {
  8. public class EmbeddedFontCollectionTests
  9. {
  10. private const string s_notoMono =
  11. "resm:Avalonia.Skia.UnitTests.Assets?assembly=Avalonia.Skia.UnitTests#Noto Mono";
  12. [InlineData(FontWeight.SemiLight, FontStyle.Normal)]
  13. [InlineData(FontWeight.Bold, FontStyle.Italic)]
  14. [InlineData(FontWeight.Heavy, FontStyle.Oblique)]
  15. [Theory]
  16. public void Should_Get_Near_Matching_Typeface(FontWeight fontWeight, FontStyle fontStyle)
  17. {
  18. using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface.With(fontManagerImpl: new CustomFontManagerImpl())))
  19. {
  20. var fontCollection = new EmbeddedFontCollection(FontManager.Current, new Uri(s_notoMono));
  21. Assert.True(fontCollection.TryGetGlyphTypeface("Noto Mono", fontStyle, fontWeight, FontStretch.Normal, out var glyphTypeface));
  22. var actual = glyphTypeface?.FamilyName;
  23. Assert.Equal("Noto Mono", actual);
  24. }
  25. }
  26. [Fact]
  27. public void Should_Not_Get_Typeface_For_Invalid_FamilyName()
  28. {
  29. using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface.With(fontManagerImpl: new CustomFontManagerImpl())))
  30. {
  31. var fontCollection = new EmbeddedFontCollection(FontManager.Current, new Uri(s_notoMono));
  32. Assert.False(fontCollection.TryGetGlyphTypeface("ABC", FontStyle.Normal, FontWeight.Normal, FontStretch.Normal, out var glyphTypeface));
  33. }
  34. }
  35. [Fact]
  36. public void Should_Get_Typeface_For_Partial_FamilyName()
  37. {
  38. using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface.With(fontManagerImpl: new CustomFontManagerImpl())))
  39. {
  40. var source = new Uri("resm:Avalonia.Skia.UnitTests.Assets?assembly=Avalonia.Skia.UnitTests#T", UriKind.Absolute);
  41. var fontCollection = new EmbeddedFontCollection(FontManager.Current, source);
  42. Assert.True(fontCollection.TryGetGlyphTypeface("T", FontStyle.Normal, FontWeight.Normal, FontStretch.Normal, out var glyphTypeface));
  43. Assert.Equal("Twitter Color Emoji", glyphTypeface.FamilyName);
  44. }
  45. }
  46. }
  47. }