Improved tests for segmented control

Added manual test showing fix for setLabel:forSegment for flexible
segments.
Added ojtest showing that the selection is preserved when a selected
segment is removed.
This commit is contained in:
cacaodev
2015-02-27 13:33:11 +01:00
parent 34bc571f80
commit 3ea230fd17
5 changed files with 1144 additions and 2892 deletions
+33 -1
View File
@@ -3,7 +3,7 @@
// TODO: Maybe create one test file for each tracking mode so they can be tested separately without confusion.
@implementation CPSegmentedControlTest : OJTestCase
{
CPSegmentedControlTest _segmentedControl;
CPSegmentedControl _segmentedControl;
}
- (void)setUp
@@ -29,5 +29,37 @@
[self assert:[_segmentedControl selectedSegment] equals:1];
}
- (void)testSegmentWidthAfterLabelChange
{
[_segmentedControl setWidth:0 forSegment:0]; // This is the default.
[_segmentedControl setLabel:@"Label 1" forSegment:0];
[self assert:[_segmentedControl widthForSegment:0] equals:0]; // The width property is still 0 : means sizeToFit content.
[_segmentedControl setWidth:100 forSegment:0];
[self assert:[_segmentedControl widthForSegment:0] equals:100];
//Unfortunatly it is not possible to test frameForSegment: or anything related to the layout.
// -sizeWithFont: uses the DOM and will always return (0,0) in the terminal.
}
- (void)testRemoveSelection
{
[_segmentedControl setSelectedSegment:2];
[_segmentedControl setSegmentCount:2];
[self assert:1 equals:[_segmentedControl selectedSegment]]; // The last segment is now selected.
}
- (void)testEmpty
{
[self assertNoThrow:function()
{
[_segmentedControl setSegmentCount:0];
}];
[self assert:[_segmentedControl selectedSegment] equals:-1];
}
@end
@@ -5,16 +5,17 @@
* Created by You on January 4, 2013.
* Copyright 2013, Your Company All rights reserved.
*/
@import <AppKit/AppKit.j>
@import <Foundation/CPObject.j>
CPLogRegister(CPLogConsole);
@implementation AppController : CPObject
{
@outlet CPSegmentedControl segmentedControl1;
@outlet CPSegmentedControl segmentedControl2;
CPWindow theWindow; //this "outlet" is connected automatically by the Cib
@outlet CPWindow theWindow; //this "outlet" is connected automatically by the Cib
}
- (void)awakeFromCib
@@ -22,7 +23,6 @@
[theWindow setFullPlatformWindow:YES];
}
- (IBAction)addSegment:(id)aSender
{
var n = [segmentedControl1 segmentCount];
@@ -36,24 +36,60 @@
- (IBAction)addSegmentWithFixedSize:(id)aSender
{
var width = [[[theWindow contentView] viewWithTag:1] intValue];
var n = [segmentedControl1 segmentCount];
[segmentedControl1 setSegmentCount:n + 1];
[segmentedControl1 setLabel:@"" + n + 1 forSegment:n];
[segmentedControl1 setWidth:100 forSegment:n];
[segmentedControl1 setWidth:width forSegment:n];
[segmentedControl2 setSegmentCount:n + 1];
[segmentedControl2 setLabel:@"" + n + 1 forSegment:n];
[segmentedControl2 setWidth:100 forSegment:n];
[segmentedControl2 setWidth:width forSegment:n];
}
- (IBAction)removeSegment:(id)aSender
{
var n = [segmentedControl1 segmentCount];
var n = [[[theWindow contentView] viewWithTag:4] intValue];
[segmentedControl1 setSegmentCount:n - 1];
[segmentedControl2 setSegmentCount:n - 1];
[segmentedControl1 setSegmentCount:n];
[segmentedControl2 setSegmentCount:n];
}
/*
- (IBAction)removeSelectedSegment:(id)sender
{
var selectedSegment1 = [segmentedControl1 selectedSegment];
[segmentedControl1 removeSegmentsAtIndexes:[CPIndexSet indexSetWithIndex:selectedSegment1]];
var selectedSegment2 = [segmentedControl2 selectedSegment];
[segmentedControl2 removeSegmentsAtIndexes:[CPIndexSet indexSetWithIndex:selectedSegment2]];
}
*/
- (IBAction)changeLabel:(id)sender
{
var segment = [[[theWindow contentView] viewWithTag:2] intValue];
[segmentedControl1 setLabel:(@"New Label " + segment) forSegment:segment];
[segmentedControl2 setLabel:(@"New Label " + segment) forSegment:segment];
CPLog.debug("Segment " + segment + " frame=" + CPStringFromRect([segmentedControl2 frameForSegment:segment]) + " width=" + [segmentedControl2 widthForSegment:0]);
}
- (IBAction)changeImage:(id)sender
{
var image = CPImageInBundle(@"CPImageNameAdvanced.png", 20, 20);
var segment = [[[theWindow contentView] viewWithTag:3] intValue];
[segmentedControl1 setImage:image forSegment:segment];
[segmentedControl2 setImage:image forSegment:segment];
}
- (IBAction)setTrackingMode:(id)sender
{
var mode = [sender indexOfSelectedItem];
[segmentedControl1 setTrackingMode:mode];
[segmentedControl2 setTrackingMode:mode];
}
@end
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff