Fixup bad testcases with non-portable code

This commit is contained in:
rfm 2024-06-06 12:33:05 +01:00
parent a5410d9dc6
commit c9a0e74437
4 changed files with 197 additions and 173 deletions

View file

@ -10,49 +10,60 @@
int main()
{
START_SET("GSXib5KeyedUnarchiver NSButtonCell tests")
START_SET("GSXib5KeyedUnarchiver NSButtonCell tests")
NS_DURING
{
[NSApplication sharedApplication];
}
{
[NSApplication sharedApplication];
}
NS_HANDLER
{
if ([[localException name] isEqualToString: NSInternalInconsistencyException ])
SKIP("It looks like GNUstep backend is not yet installed")
}
{
if ([[localException name]
isEqualToString: NSInternalInconsistencyException ])
{
SKIP("It looks like GNUstep backend is not yet installed")
}
}
NS_ENDHANDLER
NSData* data = [NSData dataWithContentsOfFile:@"ButtonCell.xib"];
GSXibKeyedUnarchiver* unarchiver = [GSXibKeyedUnarchiver unarchiverForReadingWithData:data];
NSData *data;
GSXibKeyedUnarchiver *unarchiver;
NSArray *rootObjects;
NSEnumerator *enumerator;
NSMatrix *matrix;
id element;
NSArray *rootObjects;
data = [NSData dataWithContentsOfFile: @"ButtonCell.xib"];
unarchiver = [GSXibKeyedUnarchiver unarchiverForReadingWithData:data];
rootObjects = [unarchiver decodeObjectForKey: @"IBDocument.RootObjects"];
NSMatrix* matrix;
for (id element in rootObjects) {
if ([element isKindOfClass:[NSMatrix class]]) {
enumerator = [rootObjects objectEnumerator];
while ((element = [enumerator nextObject]) != nil)
{
if ([element isKindOfClass: [NSMatrix class]])
{
matrix = (NSMatrix*)element;
break;
}
}
}
}
PASS(matrix != nil, "Top-level NSMatrix was found");
PASS(matrix != nil, "Top-level NSMatrix was found")
NSArray* cells = [matrix cells];
NSArray *cells = [matrix cells];
// <modifierMask key="keyEquivalentModifierMask" shift="YES"/> node
PASS_MODIFIER(0, NSShiftKeyMask);
PASS_MODIFIER(0, NSShiftKeyMask)
// <modifierMask key="keyEquivalentModifierMask" command="YES"/> node
PASS_MODIFIER(1, NSCommandKeyMask);
PASS_MODIFIER(1, NSCommandKeyMask)
// <modifierMask key="keyEquivalentModifierMask" />
PASS_MODIFIER(2, 0);
PASS_MODIFIER(2, 0)
// Unlike NSMenuItem, the default for NSButtonCell is 0
PASS_MODIFIER(3, 0);
PASS_MODIFIER(3, 0)
END_SET("GSXib5KeyedUnarchiver NSButtonCell tests")
END_SET("GSXib5KeyedUnarchiver NSButtonCell tests")
return 0;
}

View file

@ -9,56 +9,67 @@
int main()
{
START_SET("GSXib5KeyedUnarchiver NSMenu tests")
START_SET("GSXib5KeyedUnarchiver NSMenu tests")
NS_DURING
{
[NSApplication sharedApplication];
}
{
[NSApplication sharedApplication];
}
NS_HANDLER
{
if ([[localException name] isEqualToString: NSInternalInconsistencyException ])
SKIP("It looks like GNUstep backend is not yet installed")
}
{
if ([[localException name]
isEqualToString: NSInternalInconsistencyException ])
{
SKIP("It looks like GNUstep backend is not yet installed")
}
}
NS_ENDHANDLER
NSData* data = [NSData dataWithContentsOfFile:@"Menu.xib"];
GSXibKeyedUnarchiver* unarchiver = [GSXibKeyedUnarchiver unarchiverForReadingWithData:data];
NSData *data
GSXibKeyedUnarchiver *unarchiver;
NSArray *rootObjects;
NSEnumerator *enumerator;
id element;
NSMenu *menu;
NSArray *rootObjects;
data = [NSData dataWithContentsOfFile:@"Menu.xib"];
unarchiver = [GSXibKeyedUnarchiver unarchiverForReadingWithData:data];
rootObjects = [unarchiver decodeObjectForKey: @"IBDocument.RootObjects"];
enumerator = [rootObjects objectenumerator];
NSMenu* menu;
for (id element in rootObjects) {
if ([element isKindOfClass:[NSMenu class]]) {
while ((element = [enumerator nextObject]) != nil)
{
if ([element isKindOfClass: [NSMenu class]])
{
menu = (NSMenu*)element;
break;
}
}
}
}
PASS(menu != nil, "Top-level NSMenu was found");
PASS(menu != nil, "Top-level NSMenu was found")
// Empty <modifierMask key="keyEquivalentModifierMask"/> node
PASS_MODIFIER(0, 0);
PASS_MODIFIER(0, 0)
// <modifierMask key="keyEquivalentModifierMask" shift="YES"/>
PASS_MODIFIER(1, NSShiftKeyMask);
PASS_MODIFIER(1, NSShiftKeyMask)
// <modifierMask key="keyEquivalentModifierMask" command="YES"/>
PASS_MODIFIER(2, NSCommandKeyMask);
PASS_MODIFIER(2, NSCommandKeyMask)
// <modifierMask key="keyEquivalentModifierMask" option="YES"/>
PASS_MODIFIER(3, NSAlternateKeyMask);
PASS_MODIFIER(3, NSAlternateKeyMask)
// No modifierMask element
PASS_MODIFIER(4, NSCommandKeyMask);
PASS_MODIFIER(4, NSCommandKeyMask)
// No modifierMask element and no keyEquivalent attribute
PASS_MODIFIER(5, NSCommandKeyMask);
PASS_MODIFIER(5, NSCommandKeyMask)
// no modfierMask
PASS_MODIFIER(6, NSCommandKeyMask);
PASS_MODIFIER(6, NSCommandKeyMask)
// empty modifierMask
PASS_MODIFIER(7, 0);
PASS_MODIFIER(7, 0)
// explicit modifier mask
PASS_MODIFIER(8, NSCommandKeyMask);
PASS_MODIFIER(8, NSCommandKeyMask)
END_SET("GSXib5KeyedUnarchiver NSMenu tests")
END_SET("GSXib5KeyedUnarchiver NSMenu tests")
return 0;
}

View file

@ -11,159 +11,159 @@ copyright 2004 Alexander Malmberg <alexander@malmberg.org>
int main(int argc, char **argv)
{
CREATE_AUTORELEASE_POOL(arp);
NSBezierPath *p=[[NSBezierPath alloc] init];
NSRect r;
CREATE_AUTORELEASE_POOL(arp);
NSBezierPath *p=[[NSBezierPath alloc] init];
NSRect r;
pass(NSIsEmptyRect([p bounds]),"empty path gives empty bounds");
pass(NSIsEmptyRect([p bounds]),"empty path gives empty bounds");
[p moveToPoint: NSMakePoint(100,100)];
[p lineToPoint: NSMakePoint(150,150)];
[p moveToPoint: NSMakePoint(100,100)];
[p lineToPoint: NSMakePoint(150,150)];
pass(NSEqualRects([p bounds],NSMakeRect(100,100,50,50)),"bounds accuracy (1)");
pass(NSEqualRects([p controlPointBounds],NSMakeRect(100,100,50,50)),"control-point bounds accuracy (1)");
pass(NSEqualRects([p bounds],NSMakeRect(100,100,50,50)),"bounds accuracy (1)");
pass(NSEqualRects([p controlPointBounds],NSMakeRect(100,100,50,50)),"control-point bounds accuracy (1)");
[p removeAllPoints];
pass(NSIsEmptyRect([p bounds]),"empty path gives empty bounds (2)");
[p removeAllPoints];
pass(NSIsEmptyRect([p bounds]),"empty path gives empty bounds (2)");
[p moveToPoint: NSMakePoint(100,100)];
[p curveToPoint: NSMakePoint(200,100)
controlPoint1: NSMakePoint(125,50)
controlPoint2: NSMakePoint(175,150)];
[p moveToPoint: NSMakePoint(100,100)];
[p curveToPoint: NSMakePoint(200,100)
controlPoint1: NSMakePoint(125,50)
controlPoint2: NSMakePoint(175,150)];
/* Basic checking Y. */
r=[p bounds];
if (fabs(r.origin.x - 100.0000) > 0.001 ||
fabs(r.origin.y - 85.5662) > 0.001 ||
fabs(r.size.width - 100.0000) > 0.001 ||
fabs(r.size.height - 28.8678) > 0.001)
{
pass(0,"bounds accuracy (2)");
printf("expected %s, got %s\n",
[NSStringFromRect(NSMakeRect(100.0000, 85.5662, 100.0000, 28.8678)) lossyCString],
[NSStringFromRect(r) lossyCString]);
}
else
pass(1,"bounds accuracy (2)");
/* Basic checking Y. */
r=[p bounds];
if (fabs(r.origin.x - 100.0000) > 0.001 ||
fabs(r.origin.y - 85.5662) > 0.001 ||
fabs(r.size.width - 100.0000) > 0.001 ||
fabs(r.size.height - 28.8678) > 0.001)
{
pass(0,"bounds accuracy (2)");
printf("expected %s, got %s\n",
[NSStringFromRect(NSMakeRect(100.0000, 85.5662, 100.0000, 28.8678)) lossyCString],
[NSStringFromRect(r) lossyCString]);
}
else
pass(1,"bounds accuracy (2)");
pass(NSEqualRects([p controlPointBounds],NSMakeRect(100,50,100,100)),"control-point bounds accuracy (2)");
pass(NSEqualRects([p controlPointBounds],NSMakeRect(100,50,100,100)),"control-point bounds accuracy (2)");
/* Basic checking X. */
[p removeAllPoints];
[p moveToPoint: NSMakePoint(100,100)];
[p curveToPoint: NSMakePoint(100,200)
controlPoint1: NSMakePoint(50,125)
controlPoint2: NSMakePoint(150,175)];
/* Basic checking X. */
[p removeAllPoints];
[p moveToPoint: NSMakePoint(100,100)];
[p curveToPoint: NSMakePoint(100,200)
controlPoint1: NSMakePoint(50,125)
controlPoint2: NSMakePoint(150,175)];
r=[p bounds];
if (fabs(r.origin.y - 100.0000) > 0.001 ||
fabs(r.origin.x - 85.5662) > 0.001 ||
fabs(r.size.height - 100.0000) > 0.001 ||
fabs(r.size.width - 28.8678) > 0.001)
{
pass(0,"bounds accuracy (3)");
printf("expected %s, got %s\n",
[NSStringFromRect(NSMakeRect(85.5662, 100.0000, 28.8678, 100.0000)) lossyCString],
[NSStringFromRect(r) lossyCString]);
}
else
pass(1,"bounds accuracy (3)");
r=[p bounds];
if (fabs(r.origin.y - 100.0000) > 0.001 ||
fabs(r.origin.x - 85.5662) > 0.001 ||
fabs(r.size.height - 100.0000) > 0.001 ||
fabs(r.size.width - 28.8678) > 0.001)
{
pass(0,"bounds accuracy (3)");
printf("expected %s, got %s\n",
[NSStringFromRect(NSMakeRect(85.5662, 100.0000, 28.8678, 100.0000)) lossyCString],
[NSStringFromRect(r) lossyCString]);
}
else
pass(1,"bounds accuracy (3)");
/* A bit of both, and extreme values beyond the initial points. */
[p removeAllPoints];
[p moveToPoint: NSMakePoint(-100,0)];
[p curveToPoint: NSMakePoint(100,0)
controlPoint1: NSMakePoint(-118.2, 10.393)
controlPoint2: NSMakePoint( 118.2,-10.393)];
/* A bit of both, and extreme values beyond the initial points. */
[p removeAllPoints];
[p moveToPoint: NSMakePoint(-100,0)];
[p curveToPoint: NSMakePoint(100,0)
controlPoint1: NSMakePoint(-118.2, 10.393)
controlPoint2: NSMakePoint( 118.2,-10.393)];
r=[p bounds];
if (fabs(r.origin.x + 101.0) > 0.001 ||
fabs(r.origin.y + 3.0) > 0.001 ||
fabs(r.size.width - 202.0) > 0.001 ||
fabs(r.size.height - 6.0) > 0.001)
{
pass(0,"bounds accuracy (4)");
printf("expected %s, got %s\n",
[NSStringFromRect(NSMakeRect(-101.0, -3.0, 202.0, 6.0)) lossyCString],
[NSStringFromRect(r) lossyCString]);
}
else
pass(1,"bounds accuracy (4)");
r=[p bounds];
if (fabs(r.origin.x + 101.0) > 0.001 ||
fabs(r.origin.y + 3.0) > 0.001 ||
fabs(r.size.width - 202.0) > 0.001 ||
fabs(r.size.height - 6.0) > 0.001)
{
pass(0,"bounds accuracy (4)");
printf("expected %s, got %s\n",
[NSStringFromRect(NSMakeRect(-101.0, -3.0, 202.0, 6.0)) lossyCString],
[NSStringFromRect(r) lossyCString]);
}
else
pass(1,"bounds accuracy (4)");
/* Check the control-point bounding box. */
r=[p controlPointBounds];
if (fabs(r.origin.x + 118.2 ) > 0.001 ||
fabs(r.origin.y + 10.393) > 0.001 ||
fabs(r.size.width - 236.4 ) > 0.001 ||
fabs(r.size.height - 20.786) > 0.001)
{
pass(0,"control-point bounds accuracy (3)");
printf("expected %s, got %s\n",
[NSStringFromRect(NSMakeRect(-118.2, -10.393, 236.4, 20.786)) lossyCString],
[NSStringFromRect(r) lossyCString]);
}
else
pass(1,"control-point bounds accuracy (3)");
/* Check the control-point bounding box. */
r=[p controlPointBounds];
if (fabs(r.origin.x + 118.2 ) > 0.001 ||
fabs(r.origin.y + 10.393) > 0.001 ||
fabs(r.size.width - 236.4 ) > 0.001 ||
fabs(r.size.height - 20.786) > 0.001)
{
pass(0,"control-point bounds accuracy (3)");
printf("expected %s, got %s\n",
[NSStringFromRect(NSMakeRect(-118.2, -10.393, 236.4, 20.786)) lossyCString],
[NSStringFromRect(r) lossyCString]);
}
else
pass(1,"control-point bounds accuracy (3)");
/*
/*
p=(1-t)^3*a + 3*(1-t)^2*t*b + 3*(1-t)*t^2*c + t^3*d
p=(1-t)^3*a + 3*(1-t)^2*t*b + 3*(1-t)*t^2*c + t^3*d
c-2b+a +- sqrt(a(d-c)+b(-d-c)+c^2+b^2)
t= --------------------------------------
-d+3c-3b+a
c-2b+a +- sqrt(a(d-c)+b(-d-c)+c^2+b^2)
t= --------------------------------------
-d+3c-3b+a
*/
*/
if (0)
{
NSPoint a,b,c,d;
double t1,t2;
double t,ti;
NSPoint p;
if (0)
{
NSPoint a,b,c,d;
double t1,t2;
double t,ti;
NSPoint p;
a=NSMakePoint(-100,0);
b=NSMakePoint(-118.2,10.39);
c=NSMakePoint(118.2,-10.39);
d=NSMakePoint(100,0);
a=NSMakePoint(-100,0);
b=NSMakePoint(-118.2,10.39);
c=NSMakePoint(118.2,-10.39);
d=NSMakePoint(100,0);
#define D \
ti=1.0-t; \
p.x=ti*ti*ti*a.x + 3*ti*ti*t*b.x + 3*ti*t*t*c.x + t*t*t*d.x; \
p.y=ti*ti*ti*a.y + 3*ti*ti*t*b.y + 3*ti*t*t*c.y + t*t*t*d.y; \
printf(" t=%15.7f (%15.7f %15.7f)\n",t,p.x,p.y);
ti=1.0-t; \
p.x=ti*ti*ti*a.x + 3*ti*ti*t*b.x + 3*ti*t*t*c.x + t*t*t*d.x; \
p.y=ti*ti*ti*a.y + 3*ti*ti*t*b.y + 3*ti*t*t*c.y + t*t*t*d.y; \
printf(" t=%15.7f (%15.7f %15.7f)\n",t,p.x,p.y);
t=0; D
t=1; D
t=0.5; D
t=0; D
t=1; D
t=0.5; D
t1=(c.x-2*b.x+a.x + sqrt(a.x*(d.x-c.x)+b.x*(-d.x-c.x)+c.x*c.x+b.x*b.x)) / (-d.x+3*c.x-3*b.x+a.x);
t2=(c.x-2*b.x+a.x - sqrt(a.x*(d.x-c.x)+b.x*(-d.x-c.x)+c.x*c.x+b.x*b.x)) / (-d.x+3*c.x-3*b.x+a.x);
printf("x:\n");
t1=(c.x-2*b.x+a.x + sqrt(a.x*(d.x-c.x)+b.x*(-d.x-c.x)+c.x*c.x+b.x*b.x)) / (-d.x+3*c.x-3*b.x+a.x);
t2=(c.x-2*b.x+a.x - sqrt(a.x*(d.x-c.x)+b.x*(-d.x-c.x)+c.x*c.x+b.x*b.x)) / (-d.x+3*c.x-3*b.x+a.x);
printf("x:\n");
t=t1;
D
t=t2;
D
t=t1;
D
t=t2;
D
t1=(c.y-2*b.y+a.y + sqrt(a.y*(d.y-c.y)+b.y*(-d.y-c.y)+c.y*c.y+b.y*b.y)) / (-d.y+3*c.y-3*b.y+a.y);
t2=(c.y-2*b.y+a.y - sqrt(a.y*(d.y-c.y)+b.y*(-d.y-c.y)+c.y*c.y+b.y*b.y)) / (-d.y+3*c.y-3*b.y+a.y);
printf("y:\n");
t=t1;
D
t=t2;
D
}
t1=(c.y-2*b.y+a.y + sqrt(a.y*(d.y-c.y)+b.y*(-d.y-c.y)+c.y*c.y+b.y*b.y)) / (-d.y+3*c.y-3*b.y+a.y);
t2=(c.y-2*b.y+a.y - sqrt(a.y*(d.y-c.y)+b.y*(-d.y-c.y)+c.y*c.y+b.y*b.y)) / (-d.y+3*c.y-3*b.y+a.y);
printf("y:\n");
t=t1;
D
t=t2;
D
}
// printf("bounds=%@\n",NSStringFromRect([p bounds]));
DESTROY(arp);
DESTROY(arp);
return 0;
return 0;
}

View file

@ -82,4 +82,6 @@ int main()
found, expect);
END_SET("NSButtonCell encoding tests")
return 0;
}