libs-gui/Tests/gui/NSSliderCell/minMax.m
fredkiefer d6a1c119f5 * Tests/gui/NSBezierPath/windingCountAtPoint.m
* Tests/gui/NSCell/basic.m
	* Tests/gui/NSEvent/delta.m
	* Tests/gui/NSPasteboard/lazy_copy.m
	* Tests/gui/NSSavePanel/setDelegate_reload.m
	* Tests/gui/NSSliderCell/minMax.m
	* Tests/gui/NSView/NSView_visibleRect.m
	Remove comipler warnings in test code.
	* Tests/gui/TextSystem/deallocation.m
	Move auto release pool inside of the test set to get the test
	working again.
2017-12-28 17:18:03 +01:00

140 lines
5.3 KiB
Objective-C

#include "Testing.h"
#include <Foundation/NSAutoreleasePool.h>
#include <Foundation/NSValue.h>
#include <AppKit/NSApplication.h>
#include <AppKit/NSSliderCell.h>
#include <AppKit/NSImage.h>
int main()
{
CREATE_AUTORELEASE_POOL(arp);
NSSliderCell *cell;
START_SET("NSSliderCell GNUstep minMax")
NS_DURING
{
[NSApplication sharedApplication];
}
NS_HANDLER
{
if ([[localException name] isEqualToString: NSInternalInconsistencyException ])
SKIP("It looks like GNUstep backend is not yet installed")
}
NS_ENDHANDLER
cell = [[NSSliderCell alloc] init];
pass([cell isContinuous], "slider continuous by default");
pass([cell minValue] == 0.0, "default min value is 0");
pass([cell maxValue] == 1.0, "default max value is 1");
pass([cell doubleValue] == 0.0, "default value is 0");
pass([[cell objectValue] isEqual: [NSNumber numberWithDouble: 0]], "default objectValue is NSNumber 0");
[cell setMinValue: 2];
pass([cell minValue] == 2.0, "set min value to 2");
pass([cell maxValue] == 1.0, "max value is still 1");
pass([cell doubleValue] == 2.0, "when min < max, value should always be min");
[cell setDoubleValue: -100.0];
pass([cell doubleValue] == 2.0, "when min < max, value should always be min");
[cell setDoubleValue: 1];
pass([cell doubleValue] == 2.0, "when min < max, value should always be min");
[cell setDoubleValue: 1.5];
pass([cell doubleValue] == 2.0, "when min < max, value should always be min");
[cell setDoubleValue: 2.0];
pass([cell doubleValue] == 2.0, "when min < max, value should always be min");
[cell setDoubleValue: 2.5];
pass([cell doubleValue] == 2.0, "when min < max, value should always be min");
[cell setMaxValue: 10];
pass([cell doubleValue] == 2.0, "value is still 2.0");
[cell setMinValue: 3.0];
pass([cell doubleValue] == 3.0, "changing minimum clamps value to 3.0");
pass([cell floatValue] == 3.0, "changing minimum clamps value to 3.0");
[cell setDoubleValue: 10];
[cell setMaxValue: 9];
pass([cell doubleValue] == 9.0, "changing max clamps value to 9.0");
pass([cell floatValue] == 9.0, "changing max clamps value to 9.0");
// Test value setters
[cell setObjectValue: @"hello"];
pass([cell doubleValue] == 3.0, "setting nonsense string objectValue sets value to min");
[cell setDoubleValue: 9.0];
[cell setStringValue: @"hello"];
pass([cell doubleValue] == 3.0, "setting nonsense string stringValue sets value to min");
[cell setDoubleValue: 9.0];
[cell setObjectValue: nil];
pass([cell doubleValue] == 3.0, "setting nil objectValue sets value to min");
[cell setDoubleValue: 9.0];
[cell setObjectValue: @"3.5"];
pass([cell doubleValue] == 3.5, "setting @'3.5' objectValue sets value to 3.5");
[cell setDoubleValue: 9.0];
[cell setStringValue: @"3.5"];
pass([cell doubleValue] == 3.5, "setting @'3.5' stringValue sets value to 3.5");
[cell setDoubleValue: 9.0];
[cell setIntValue: 3];
pass([cell doubleValue] == 3.0, "setting 3 intValue sets value to 3.0");
[cell setDoubleValue: 9.0];
// Test setting the value out of bounds with different setters
[cell setDoubleValue: 3.5];
[cell setObjectValue: @"-5"];
pass([cell doubleValue] == 3.0, "setting @'-5' objectValue sets value to min");
pass([cell intValue] == 3, "setting @'-5' objectValue sets value to min (integer)");
[cell setDoubleValue: 3.5];
[cell setStringValue: @"-5"];
pass([cell doubleValue] == 3.0, "setting @'-5' stringValue sets value to min");
pass([cell intValue] == 3, "setting @'-5' objectValue sets value to min (integer)");
[cell setDoubleValue: 3.5];
[cell setIntValue: -5];
pass([cell doubleValue] == 3.0, "setting -5 intValue sets value to min");
pass([cell intValue] == 3, "setting @'-5' objectValue sets value to min (integer)");
[cell setDoubleValue: 3.5];
[cell setDoubleValue: -5];
pass([cell doubleValue] == 3.0, "setting -5 doubleValue sets value to min");
pass([cell intValue] == 3, "setting @'-5' objectValue sets value to min (integer)");
[cell setDoubleValue: 3.5];
[cell setFloatValue: -5];
pass([cell doubleValue] == 3.0, "setting -5 floatValue sets value to min");
pass([cell intValue] == 3, "setting @'-5' objectValue sets value to min (integer)");
[cell setDoubleValue: 3.5];
[cell setObjectValue: @"15"];
pass([cell doubleValue] == 9.0, "setting @'15' objectValue sets value to max");
pass([cell intValue] == 9, "setting @'15' objectValue sets value to max (integer)");
[cell setDoubleValue: 3.5];
[cell setStringValue: @"15"];
pass([cell doubleValue] == 9.0, "setting @'15' stringValue sets value to max");
pass([cell intValue] == 9, "setting @'15' stringValue sets value to max (integer)");
[cell setDoubleValue: 3.5];
[cell setIntValue: 15];
pass([cell doubleValue] == 9.0, "setting 15 intValue sets value to max");
pass([cell intValue] == 9, "setting 15 intValue sets value to max (integer)");
[cell setDoubleValue: 3.5];
[cell setDoubleValue: 15];
pass([cell doubleValue] == 9.0, "setting 15 doubleValue sets value to max");
pass([cell intValue] == 9, "setting 15 doubleValue sets value to max (integer)");
[cell setDoubleValue: 3.5];
[cell setFloatValue: 15];
pass([cell doubleValue] == 9.0, "setting 15 floatValue sets value to max");
pass([cell intValue] == 9, "setting 15 floatValue sets value to max (integer)");
END_SET("NSSliderCell GNUstep minMax")
DESTROY(arp);
return 0;
}