mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-08-25 04:57:03 +00:00
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:
@@ -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
Reference in New Issue
Block a user