@@ -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