SKTypefaceCollectionCacheTests.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using Avalonia.Media;
  2. using Avalonia.UnitTests;
  3. using Xunit;
  4. namespace Avalonia.Skia.UnitTests.Media
  5. {
  6. public class SKTypefaceCollectionCacheTests
  7. {
  8. private const string s_notoMono =
  9. "resm:Avalonia.Skia.UnitTests.Assets?assembly=Avalonia.Skia.UnitTests#Noto Mono";
  10. [InlineData(s_notoMono, FontWeight.SemiLight, FontStyle.Normal)]
  11. [InlineData(s_notoMono, FontWeight.Bold, FontStyle.Italic)]
  12. [InlineData(s_notoMono, FontWeight.Heavy, FontStyle.Oblique)]
  13. [Theory]
  14. public void Should_Get_Near_Matching_Typeface(string familyName, FontWeight fontWeight, FontStyle fontStyle)
  15. {
  16. using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
  17. {
  18. var fontFamily = new FontFamily(familyName);
  19. var typefaceCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(fontFamily);
  20. var actual = typefaceCollection.Get(new Typeface(fontFamily, fontStyle, fontWeight))?.FamilyName;
  21. Assert.Equal("Noto Mono", actual);
  22. }
  23. }
  24. [Fact]
  25. public void Should_Get_Null_For_Invalid_FamilyName()
  26. {
  27. using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
  28. {
  29. var notoMono =
  30. new FontFamily("resm:Avalonia.Skia.UnitTests.Assets?assembly=Avalonia.Skia.UnitTests#Noto Mono");
  31. var notoMonoCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(notoMono);
  32. var typeface = notoMonoCollection.Get(new Typeface("ABC"));
  33. Assert.Null(typeface);
  34. }
  35. }
  36. }
  37. }