Skip to content

Commit a96c8b9

Browse files
committed
[ResearchKit] Fix unit tests
- Fixes tests to reflect the new empty answer for a Choice Answer Format being ORKNullAnswerValue() instead of an empty array (introduced on the Review Step feature). - Fixes test for task step identifier uniqueness validation (it now takes place on task init).
1 parent 865275d commit a96c8b9

File tree

3 files changed

+42
-24
lines changed

3 files changed

+42
-24
lines changed

ResearchKitTests/ORKChoiceAnswerFormatHelperTests.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,11 +192,11 @@ - (void)testAnswerForSelectedIndexes {
192192

193193
id answer = [formatHelper answerForSelectedIndexes:@[@(0)]];
194194

195-
XCTAssert([answer isKindOfClass:[NSArray class]] && ((NSArray *)answer).count == 0, @"%@", answer);
195+
XCTAssert(answer == ORKNullAnswerValue(), @"%@", answer);
196196

197197
answer = [formatHelper answerForSelectedIndex:0];
198198

199-
XCTAssert([answer isKindOfClass:[NSArray class]] && ((NSArray *)answer).count == 0, @"%@", answer);
199+
XCTAssert(answer == ORKNullAnswerValue(), @"%@", answer);
200200

201201
[textChoices enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
202202

ResearchKitTests/ORKTaskTests.m

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -361,9 +361,8 @@ - (void)testOrderedTask {
361361
ORKStep *step = [[ORKInstructionStep alloc] initWithIdentifier:BlankStepIdentifier];
362362
[steps addObject:step];
363363

364-
ORKOrderedTask *orderedTask = [[ORKOrderedTask alloc] initWithIdentifier:OrderedTaskIdentifier
365-
steps:steps];
366-
XCTAssertThrows([orderedTask validateParameters]);
364+
XCTAssertThrows([[ORKOrderedTask alloc] initWithIdentifier:OrderedTaskIdentifier
365+
steps:steps]);
367366
}
368367

369368
#define getIndividualNavigableOrderedTaskSteps() \

ResearchKitTests/ORKTextChoiceCellGroupTests.m

Lines changed: 38 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -272,29 +272,47 @@ - (void)testMultiChoice {
272272

273273
[group didSelectCellAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0]];
274274
id answer = group.answer;
275-
XCTAssert([answer isKindOfClass:[NSArray class]]);
276-
NSArray *answerArray = answer;
277-
XCTAssertEqual(answerArray.count, group.size - index -1);
275+
if (index < group.size - 1) {
276+
XCTAssert([answer isKindOfClass:[NSArray class]]);
277+
NSArray *answerArray = answer;
278+
XCTAssertEqual(answerArray.count, group.size - index -1);
279+
} else {
280+
// Answer becomes NSNull when all cells are deselected
281+
XCTAssert(answer == ORKNullAnswerValue());
282+
}
278283

279284
ORKChoiceViewCell *cell = [group cellAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0] withReuseIdentifier:@"abc"];
280285
XCTAssertEqual( cell.selectedItem, NO);
281286
}
282287

283-
id answer = group.answer;
284-
XCTAssert([answer isKindOfClass:[NSArray class]]);
285-
NSArray *answerArray = answer;
286-
XCTAssertEqual(answerArray.count, 0);
288+
XCTAssert(group.answer == ORKNullAnswerValue());
289+
290+
// Select all cells again
291+
for ( index = 0 ; index < group.size; index++) {
292+
[group didSelectCellAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0]];
293+
}
294+
295+
NSArray *answerArray = group.answer;
296+
XCTAssertEqual(answerArray.count, group.size);
287297

288298
// Test set nil/null answer
289299
[group setAnswer:nil];
290-
XCTAssertEqual(answerArray.count, 0);
300+
XCTAssertNil(group.answer);
291301
for ( index = 0 ; index < group.size; index++) {
292302
ORKChoiceViewCell *cell = [group cellAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0] withReuseIdentifier:@"abc"];
293303
XCTAssert( cell.selectedItem == NO);
294304
}
295-
[group setAnswer:ORKNullAnswerValue()];
296-
XCTAssertEqual(answerArray.count, 0);
297305

306+
// Select all cells again
307+
for ( index = 0 ; index < group.size; index++) {
308+
[group didSelectCellAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0]];
309+
}
310+
311+
answerArray = group.answer;
312+
XCTAssertEqual(answerArray.count, group.size);
313+
314+
[group setAnswer:ORKNullAnswerValue()];
315+
XCTAssert(group.answer == ORKNullAnswerValue());
298316
for ( index = 0 ; index < group.size; index++) {
299317
ORKChoiceViewCell *cell = [group cellAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0] withReuseIdentifier:@"abc"];
300318
XCTAssertEqual(cell.selectedItem, NO);
@@ -423,9 +441,7 @@ - (void)testMultiChoiceWithExclusives:(NSArray *)choices {
423441
// Test cell deselection. First deselect the exclusive, and confirm no choices are selected
424442
[group didSelectCellAtIndexPath:[NSIndexPath indexPathForRow:exclusiveIndex inSection:0]];
425443
exclusiveAnswer = group.answer;
426-
XCTAssert([exclusiveAnswer isKindOfClass:[NSArray class]]);
427-
exclusiveAnswerArray = exclusiveAnswer;
428-
XCTAssertEqual(exclusiveAnswerArray.count, 0);
444+
XCTAssert(exclusiveAnswer == ORKNullAnswerValue());
429445
exclusiveCell = [group cellAtIndexPath:[NSIndexPath indexPathForRow:exclusiveIndex inSection:0] withReuseIdentifier:@"abc"];
430446
XCTAssertEqual(exclusiveCell.selectedItem, NO);
431447

@@ -495,18 +511,21 @@ - (void)testMultiChoiceWithExclusives:(NSArray *)choices {
495511
NSUInteger index = ((NSNumber *)nonExclusiveIndexes[nonExclusiveIndexI]).unsignedIntegerValue;
496512
[group didSelectCellAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0]];
497513
id answer = group.answer;
498-
XCTAssert([answer isKindOfClass:[NSArray class]]);
499-
NSArray *answerArray = answer;
500-
XCTAssertEqual(answerArray.count, nonExclusiveIndexes.count - nonExclusiveIndexI - 1);
514+
if (nonExclusiveIndexI < nonExclusiveIndexes.count - 1) {
515+
XCTAssert([answer isKindOfClass:[NSArray class]]);
516+
NSArray *answerArray = answer;
517+
XCTAssertEqual(answerArray.count, nonExclusiveIndexes.count - nonExclusiveIndexI - 1);
518+
} else {
519+
// Answer becomes NSNull when there are no selected cells
520+
XCTAssert(answer == ORKNullAnswerValue());
521+
}
501522

502523
ORKChoiceViewCell *cell = [group cellAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0] withReuseIdentifier:@"abc"];
503524
XCTAssertEqual( cell.selectedItem, NO);
504525
}
505526

506527
id answer = group.answer;
507-
XCTAssert([answer isKindOfClass:[NSArray class]]);
508-
NSArray *answerArray = answer;
509-
XCTAssertEqual(answerArray.count, 0);
528+
XCTAssert(answer == ORKNullAnswerValue());
510529
}
511530

512531
// Test set nil/null answer

0 commit comments

Comments
 (0)