Files

131 lines
4.8 KiB
Plaintext

@import <AppKit/AppKit.j>
@implementation CPFontManagerTest : OJTestCase
{
CPFont fontA;
CPFont fontB;
CPFont convertedFontA;
CPFont convertedFontB;
int tag @accessors;
}
- (void)setUp
{
// This will init the global var CPApp which are used internally in the AppKit
[[CPApplication alloc] init];
fontA = [CPFont systemFontOfSize:8.0];
}
- (void)testAvailableFonts
{
var fonts = [[CPFontManager sharedFontManager] availableFonts];
[self assertTrue:[fonts isKindOfClass:[CPArray class]] message:@"font list returned by availableFonts"];
}
- (void)testSetSelectedFont_isMultiple_
{
var fontManager = [CPFontManager sharedFontManager];
[fontManager setSelectedFont:fontA isMultiple:NO];
[self assert:[fontManager selectedFont] equals:fontA];
[self assertFalse:[fontManager isMultiple]];
[fontManager setSelectedFont:fontA isMultiple:YES];
[self assert:[fontManager selectedFont] equals:fontA];
[self assertTrue:[fontManager isMultiple]];
}
- (void)testWeightOfFont_
{
var fontManager = [CPFontManager sharedFontManager];
[self assert:[fontManager weightOfFont:fontA] equals:5 message:@"standard font weight"];
fontB = [CPFont boldFontWithName:@"Helvetica" size:12.0 italic:YES];
[self assert:[fontManager weightOfFont:fontB] equals:9 message:@"bold font weight"];
}
- (void)testTraitsOfFont_
{
var fontManager = [CPFontManager sharedFontManager];
fontB = [CPFont boldFontWithName:@"Helvetica" size:12.0 italic:YES];
[self assert:[fontManager traitsOfFont:fontA] equals:0 message:@"fontA traits"];
[self assert:[fontManager traitsOfFont:fontB] equals:CPBoldFontMask | CPItalicFontMask message:@"fontB traits"];
}
- (void)testAddFontTrait_
{
var fontManager = [CPFontManager sharedFontManager];
[fontManager setSelectedFont:fontA isMultiple:NO];
[fontManager setTarget:self];
fontB = [CPFont boldFontWithName:@"Helvetica" size:12.0 italic:YES];
// Do nothing conversion.
[fontManager addFontTrait:self];
[self assert:fontA equals:convertedFontA message:@"fontA changed"];
[self assert:fontB equals:convertedFontB message:@"fontB changed"];
// Add bold
tag = CPBoldFontMask;
[fontManager addFontTrait:self];
[self assertTrue:[convertedFontA isBold] message:@"add bold to fontA"];
[self assertFalse:[convertedFontA isItalic] message:@"maintain no italics fontA"];
[self assert:8.0 equals:[convertedFontA size]];
[self assertTrue:[convertedFontB isBold]];
[self assertTrue:[convertedFontB isItalic]];
[self assert:12.0 equals:[convertedFontB size]];
// Remove bold, add italic
tag = CPUnboldFontMask || CPItalicFontMask;
[fontManager addFontTrait:self];
[self assertFalse:[convertedFontA isBold] message:@"maintain no bold fontA with CPUnboldFontMask || CPItalicFontMask"];
[self assertFalse:[convertedFontA isItalic] message:@"add italics fontA with CPUnboldFontMask || CPItalicFontMask"];
[self assert:8.0 equals:[convertedFontA size] message:@"maintain size fontA with CPUnboldFontMask || CPItalicFontMask"];
[self assertFalse:[convertedFontB isBold] message:@"remove bold fontB with CPUnboldFontMask || CPItalicFontMask"];
[self assertTrue:[convertedFontB isItalic] message:@"maintain italics fontB with CPUnboldFontMask || CPItalicFontMask"];
[self assert:12.0 equals:[convertedFontB size] message:@"maintain size fontB with CPUnboldFontMask || CPItalicFontMask"];
// Remove italic
tag = CPUnitalicFontMask;
[fontManager addFontTrait:self];
[self assertFalse:[convertedFontA isBold] message:@"maintain no bold fontA with CPUnitalicFontMask"];
[self assertFalse:[convertedFontA isItalic] message:@"maintain no italics fontA with CPUnitalicFontMask"];
[self assert:8.0 equals:[convertedFontA size] message:@"maintain size fontA with CPUnitalicFontMask"];
[self assertTrue:[convertedFontB isBold] message:@"maintain bold fontB with CPUnitalicFontMask"];
[self assertFalse:[convertedFontB isItalic] message:@"remove italics from fontB with CPUnitalicFontMask"];
[self assert:12.0 equals:[convertedFontB size] message:@"maintain size fontB with CPUnitalicFontMask"];
}
- (void)testConvertFont_toFace_
{
fontB = [CPFont boldFontWithName:@"Helvetica" size:12.0 italic:YES];
convertedFontB = [[CPFontManager sharedFontManager] convertFont:fontB toFace:@"Arial"];
[self assertTrue:[convertedFontB isBold] message:@"maintain bold fontB"];
[self assertTrue:[convertedFontB isItalic] message:@"maintain italic fontB"];
[self assert:12.0 equals:[convertedFontB size] message:@"maintain size fontB"];
[self assert:@"Arial" equals:[convertedFontB familyName] message:@"change face fontB"];
}
- (@action)changeFont:(id)sender
{
convertedFontA = [sender convertFont:fontA];
convertedFontB = [sender convertFont:fontB];
}
@end