From 57408d18ae32784b4b687ac0f04339e76a2ae723 Mon Sep 17 00:00:00 2001 From: cacaodev Date: Sat, 19 Apr 2014 09:05:14 +0200 Subject: [PATCH] New: ojunit tests for CPTableView -reloadData & -removeTableColumn: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -removeTableColumn: is failing with an « index out of bounds » error. --- Tests/AppKit/CPTableViewReloadDataTest.j | 63 +++++++++++++++++++++++ Tests/AppKit/CPTableViewTableColumnTest.j | 61 ++++++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 Tests/AppKit/CPTableViewReloadDataTest.j create mode 100644 Tests/AppKit/CPTableViewTableColumnTest.j diff --git a/Tests/AppKit/CPTableViewReloadDataTest.j b/Tests/AppKit/CPTableViewReloadDataTest.j new file mode 100644 index 000000000..5c8a6c63b --- /dev/null +++ b/Tests/AppKit/CPTableViewReloadDataTest.j @@ -0,0 +1,63 @@ +@import + +[CPApplication sharedApplication]; + +@implementation CPTableViewReloadDataTest : OJTestCase +{ + CPWindow theWindow; + CPTableView tableView; + CPArray tableContent; +} + +- (void)setUp +{ + tableContent = []; + // setup a reasonable table + theWindow = [[CPWindow alloc] initWithContentRect:CGRectMake(0.0, 0.0, 1024.0, 768.0) + styleMask:CPWindowNotSizable]; + + tableView = [[CPTableView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; + [tableView setDataSource:self]; + + var itemIndex = 0, + items = [@"Colonne1", @"Colonne2", @"Colonne3", @"Colonne4"]; + + for (itemIndex ; itemIndex < [items count]; itemIndex++) + { + var item = [items objectAtIndex:itemIndex], + column = [[CPTableColumn alloc] initWithIdentifier:item]; + [column setEditable:YES]; + [column setMinWidth:50]; + [[column headerView] setStringValue:item]; + [tableView addTableColumn:column]; + } + + [[theWindow contentView] addSubview:tableView]; +} + +- (void)testReloadDataAfterModelCountChangesFromZero +{ + tableContent = ["A", "B", "C"]; + + [tableView reloadData]; + + [tableView _enumerateViewsInRows:[CPIndexSet indexSetWithIndexesInRange:CPMakeRange(0, 3)] columns:[CPIndexSet indexSetWithIndexesInRange:CPMakeRange(0, 4)] usingBlock:function(view, row, column, stop) + { + var tableColumn = [[tableView tableColumns] objectAtIndex:column], + expected = [tableColumn identifier] + "_" + [tableContent objectAtIndex:row]; + + [self assertTrue:([view stringValue] == expected)]; + }]; +} + +- (int)numberOfRowsInTableView:(CPTableView)aTableView +{ + return [tableContent count]; +} + +- (id)tableView:(CPTableView)aTableView objectValueForTableColumn:(CPTableColumn)aColumn row:(int)aRowIndex +{ + return [aColumn identifier] + "_" + [tableContent objectAtIndex:aRowIndex]; +} + +@end \ No newline at end of file diff --git a/Tests/AppKit/CPTableViewTableColumnTest.j b/Tests/AppKit/CPTableViewTableColumnTest.j new file mode 100644 index 000000000..e07cdf43a --- /dev/null +++ b/Tests/AppKit/CPTableViewTableColumnTest.j @@ -0,0 +1,61 @@ +@import + +[CPApplication sharedApplication]; + +@implementation CPTableViewTableColumnTest : OJTestCase +{ + CPWindow theWindow; + CPTableView tableView; +} + +- (void)setUp +{ + // setup a reasonable table + theWindow = [[CPWindow alloc] initWithContentRect:CGRectMake(0.0, 0.0, 1024.0, 768.0) + styleMask:CPWindowNotSizable]; + + tableView = [[CPTableView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; + [tableView setDataSource:self]; + + var itemIndex = 0, + items = [@"Colonne1", @"Colonne2", @"Colonne3", @"Colonne4"]; + + for (itemIndex ; itemIndex < [items count]; itemIndex++) + { + var item = [items objectAtIndex:itemIndex], + column = [[CPTableColumn alloc] initWithIdentifier:item]; + [column setEditable:YES]; + [column setMinWidth:50]; + [[column headerView] setStringValue:item]; + [tableView addTableColumn:column]; + } + + [[theWindow contentView] addSubview:tableView]; + + [tableView reloadData]; +} + +- (void)testRemoveTableColumn +{ + [self assertTrue:([[tableView tableColumns] count] == 4)]; + + [tableView removeTableColumn:[[tableView tableColumns] firstObject]]; + + [self assertTrue:([[tableView tableColumns] count] == 3)]; + + [tableView removeTableColumn:[[tableView tableColumns] firstObject]]; + + [self assertTrue:([[tableView tableColumns] count] == 2)]; +} + +- (int)numberOfRowsInTableView:(CPTableView)aTableView +{ + return 15; +} + +- (id)tableView:(CPTableView)aTableView objectValueForTableColumn:(CPTableColumn)aColumn row:(int)aRowIndex +{ + return "COLUMN_" + [aColumn identifier] + "ROW_" + aRowIndex; +} + +@end \ No newline at end of file