287 строки
8.4 KiB
C#
287 строки
8.4 KiB
C#
//
|
|
// FontTests.cs
|
|
//
|
|
// Author:
|
|
// Lluis Sanchez <lluis@xamarin.com>
|
|
//
|
|
// Copyright (c) 2013 Xamarin Inc.
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
// of this software and associated documentation files (the "Software"), to deal
|
|
// in the Software without restriction, including without limitation the rights
|
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
// copies of the Software, and to permit persons to whom the Software is
|
|
// furnished to do so, subject to the following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be included in
|
|
// all copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
// THE SOFTWARE.
|
|
using System;
|
|
|
|
using NUnit.Framework;
|
|
using Xwt.Drawing;
|
|
|
|
namespace Xwt
|
|
{
|
|
[TestFixture]
|
|
public class FontTests: DrawingTestsBase
|
|
{
|
|
[Test]
|
|
public void FromNameEmpty ()
|
|
{
|
|
var f = Font.FromName ("");
|
|
Assert.AreEqual (Font.SystemFont, f);
|
|
}
|
|
|
|
[Test]
|
|
public void WithFamily ()
|
|
{
|
|
var f1 = Font.SystemFont;
|
|
var f2 = f1.WithFamily ("Arial");
|
|
Assert.AreEqual ("Arial", f2.Family);
|
|
Assert.AreEqual (f1.Size, f2.Size);
|
|
Assert.AreEqual (f1.Stretch, f2.Stretch);
|
|
Assert.AreEqual (f1.Style, f2.Style);
|
|
Assert.AreEqual (f1.Weight, f2.Weight);
|
|
}
|
|
|
|
[Test]
|
|
public void WithSize ()
|
|
{
|
|
var f1 = Font.SystemFont;
|
|
var f2 = f1.WithSize (33);
|
|
Assert.AreEqual (f1.Family, f2.Family);
|
|
Assert.AreEqual (33d, f2.Size);
|
|
Assert.AreEqual (f1.Stretch, f2.Stretch);
|
|
Assert.AreEqual (f1.Style, f2.Style);
|
|
Assert.AreEqual (f1.Weight, f2.Weight);
|
|
}
|
|
|
|
[Test]
|
|
public void WithStretch ()
|
|
{
|
|
var f1 = Font.SystemFont;
|
|
var f2 = f1.WithStretch (FontStretch.Condensed);
|
|
Assert.AreEqual (f1.Family, f2.Family);
|
|
Assert.AreEqual (f1.Size, f2.Size);
|
|
Assert.AreEqual (FontStretch.Condensed, f2.Stretch);
|
|
Assert.AreEqual (f1.Style, f2.Style);
|
|
Assert.AreEqual (f1.Weight, f2.Weight);
|
|
}
|
|
|
|
[Test]
|
|
public void WithStyle ()
|
|
{
|
|
var f1 = Font.SystemFont;
|
|
var f2 = f1.WithStyle (FontStyle.Oblique);
|
|
Assert.AreEqual (f1.Family, f2.Family);
|
|
Assert.AreEqual (f1.Size, f2.Size);
|
|
Assert.AreEqual (f1.Stretch, f2.Stretch);
|
|
Assert.AreEqual (FontStyle.Oblique, f2.Style);
|
|
Assert.AreEqual (f1.Weight, f2.Weight);
|
|
}
|
|
|
|
[Test]
|
|
public void WithWeight ()
|
|
{
|
|
var f1 = Font.SystemFont;
|
|
var f2 = f1.WithWeight (FontWeight.Bold);
|
|
Assert.AreEqual (f1.Family, f2.Family);
|
|
Assert.AreEqual (f1.Size, f2.Size);
|
|
Assert.AreEqual (f1.Stretch, f2.Stretch);
|
|
Assert.AreEqual (f1.Style, f2.Style);
|
|
Assert.AreEqual (FontWeight.Bold, f2.Weight);
|
|
}
|
|
|
|
[Test]
|
|
public void FromNameOnlyFamily ()
|
|
{
|
|
var f = Font.FromName ("Arial");
|
|
Assert.AreEqual ("Arial", f.Family);
|
|
Assert.AreEqual (Font.SystemFont.Size, f.Size);
|
|
Assert.AreEqual (FontStretch.Normal, f.Stretch);
|
|
Assert.AreEqual (FontStyle.Normal, f.Style);
|
|
Assert.AreEqual (FontWeight.Normal, f.Weight);
|
|
}
|
|
|
|
[Test]
|
|
public void FromNameOnlyFamilyIgnoreCase ()
|
|
{
|
|
var f = Font.FromName ("aRiaL");
|
|
Assert.AreEqual ("Arial", f.Family);
|
|
Assert.AreEqual (Font.SystemFont.Size, f.Size);
|
|
Assert.AreEqual (FontStretch.Normal, f.Stretch);
|
|
Assert.AreEqual (FontStyle.Normal, f.Style);
|
|
Assert.AreEqual (FontWeight.Normal, f.Weight);
|
|
}
|
|
|
|
[Test]
|
|
public void FromNameOnlySize ()
|
|
{
|
|
var f = Font.FromName ("33");
|
|
Assert.AreEqual (Font.SystemFont.Family, f.Family);
|
|
Assert.AreEqual (33d, f.Size);
|
|
Assert.AreEqual (FontStretch.Normal, f.Stretch);
|
|
Assert.AreEqual (FontStyle.Normal, f.Style);
|
|
Assert.AreEqual (FontWeight.Normal, f.Weight);
|
|
}
|
|
|
|
[Test]
|
|
public void FromNameOnlyFamilyAndSize ()
|
|
{
|
|
var f = Font.FromName ("Arial 33");
|
|
Assert.AreEqual ("Arial", f.Family);
|
|
Assert.AreEqual (33d, f.Size);
|
|
Assert.AreEqual (FontStretch.Normal, f.Stretch);
|
|
Assert.AreEqual (FontStyle.Normal, f.Style);
|
|
Assert.AreEqual (FontWeight.Normal, f.Weight);
|
|
}
|
|
|
|
[Test]
|
|
public void FromNameOnlyFamilyAndSizeWithFallbackSecondChoice ()
|
|
{
|
|
var f = Font.FromName ("Foobar, Arial, dummy, 33");
|
|
Assert.AreEqual ("Arial", f.Family);
|
|
Assert.AreEqual (33d, f.Size);
|
|
Assert.AreEqual (FontStretch.Normal, f.Stretch);
|
|
Assert.AreEqual (FontStyle.Normal, f.Style);
|
|
Assert.AreEqual (FontWeight.Normal, f.Weight);
|
|
}
|
|
|
|
[Test]
|
|
public void FromNameOnlyFamilyAndSizeWithFallbackFirstChoice ()
|
|
{
|
|
var f = Font.FromName ("Arial, Foobar, dummy 33");
|
|
Assert.AreEqual ("Arial", f.Family);
|
|
Assert.AreEqual (33d, f.Size);
|
|
Assert.AreEqual (FontStretch.Normal, f.Stretch);
|
|
Assert.AreEqual (FontStyle.Normal, f.Style);
|
|
Assert.AreEqual (FontWeight.Normal, f.Weight);
|
|
}
|
|
|
|
[Test]
|
|
public void FromNameOnlyFamilyAndSizeWithFallbackNoChoice ()
|
|
{
|
|
var f = Font.FromName ("Foobar, dummy 33");
|
|
Assert.AreEqual (Font.SystemFont.Family, f.Family);
|
|
Assert.AreEqual (33d, f.Size);
|
|
Assert.AreEqual (FontStretch.Normal, f.Stretch);
|
|
Assert.AreEqual (FontStyle.Normal, f.Style);
|
|
Assert.AreEqual (FontWeight.Normal, f.Weight);
|
|
}
|
|
|
|
[Test]
|
|
public void FromNameWithStyle ()
|
|
{
|
|
var f = Font.FromName ("Arial, dummy italic 33");
|
|
Assert.AreEqual ("Arial", f.Family);
|
|
Assert.AreEqual (33d, f.Size);
|
|
Assert.AreEqual (FontStretch.Normal, f.Stretch);
|
|
Assert.AreEqual (FontStyle.Italic, f.Style);
|
|
Assert.AreEqual (FontWeight.Normal, f.Weight);
|
|
}
|
|
|
|
[Test]
|
|
public void FromNameWithWeight ()
|
|
{
|
|
var f = Font.FromName ("Arial, dummy bold 33");
|
|
Assert.AreEqual ("Arial", f.Family);
|
|
Assert.AreEqual (33d, f.Size);
|
|
Assert.AreEqual (FontStretch.Normal, f.Stretch);
|
|
Assert.AreEqual (FontStyle.Normal, f.Style);
|
|
Assert.AreEqual (FontWeight.Bold, f.Weight);
|
|
}
|
|
|
|
[Test]
|
|
public void FromNameWithStretch ()
|
|
{
|
|
var f = Font.FromName ("Arial, dummy condensed 33");
|
|
Assert.AreEqual ("Arial", f.Family);
|
|
Assert.AreEqual (33d, f.Size);
|
|
Assert.AreEqual (FontStretch.Condensed, f.Stretch);
|
|
Assert.AreEqual (FontStyle.Normal, f.Style);
|
|
Assert.AreEqual (FontWeight.Normal, f.Weight);
|
|
}
|
|
|
|
[Test]
|
|
public void FromNameWithAllStyles ()
|
|
{
|
|
var f = Font.FromName ("Arial, dummy expanded Oblique Light 33");
|
|
Assert.AreEqual ("Arial", f.Family);
|
|
Assert.AreEqual (33d, f.Size);
|
|
Assert.AreEqual (FontStretch.Expanded, f.Stretch);
|
|
Assert.AreEqual (FontStyle.Oblique, f.Style);
|
|
Assert.AreEqual (FontWeight.Light, f.Weight);
|
|
}
|
|
|
|
[Test]
|
|
public void FontEquals ()
|
|
{
|
|
var f1 = Font.FromName ("Arial expanded Oblique Light 33");
|
|
var f2 = Font.FromName ("Arial expanded Oblique Light 33");
|
|
Assert.IsTrue (f1.Equals (f2));
|
|
}
|
|
|
|
[Test]
|
|
public void FontNameWithNumber()
|
|
{
|
|
var font = Font.FromName("____FakeTestFont 72");
|
|
Assert.AreEqual("Arial", font.Family);
|
|
Assert.AreNotEqual(72d, font.Size); // 72 is part of the font name and not the size
|
|
}
|
|
|
|
[Test]
|
|
public void FontNameWithNumberAndStyles()
|
|
{
|
|
var font = Font.FromName("____FakeTestFont 72 18 Bold");
|
|
Assert.AreEqual("Arial", font.Family);
|
|
Assert.AreEqual(18d, font.Size);
|
|
Assert.AreEqual(FontWeight.Bold, font.Weight);
|
|
}
|
|
|
|
[Test]
|
|
public void FontNameWithWeight()
|
|
{
|
|
var font = Font.FromName("____FakeTestFont Rounded MT Bold");
|
|
Assert.AreEqual("Arial", font.Family);
|
|
Assert.AreNotEqual(FontWeight.Bold, font.Weight); // Bold is part of the name and not the weight
|
|
}
|
|
|
|
[Test]
|
|
public void FontNameWithWeightAndStyles()
|
|
{
|
|
var font = Font.FromName("____FakeTestFont Rounded MT Bold Bold 18");
|
|
Assert.AreEqual("Arial", font.Family);
|
|
Assert.AreEqual(18d, font.Size);
|
|
Assert.AreEqual(FontWeight.Bold, font.Weight); // Bold is part of the name and the weight
|
|
}
|
|
|
|
//[Test]
|
|
public void RenderWeight ()
|
|
{
|
|
var font = "Avenir Next";
|
|
|
|
InitBlank (250, 400);
|
|
TextLayout la = new TextLayout ();
|
|
double y = 0;
|
|
|
|
foreach (FontWeight w in Enum.GetValues (typeof(FontWeight))) {
|
|
la.Font = Font.FromName (font).WithSize (20).WithWeight (w);
|
|
la.Text = "Test " + w.ToString ();
|
|
context.DrawTextLayout (la, 0, y + 3);
|
|
y += la.GetSize ().Height;
|
|
}
|
|
|
|
CheckImage ("FontTests.RenderWeight.png");
|
|
}
|
|
}
|
|
}
|
|
|