Added TestResult

This commit is contained in:
Abel Fokkinga
2013-01-08 15:02:31 -02:00
parent 3013ee52c4
commit 357b7299e8
6 changed files with 127 additions and 24 deletions

View File

@@ -8,6 +8,7 @@
#import "EspagramTestViewController.h"
#import "NSMutableArray_Shuffling.h"
#import "TestResult+Create.h"
@interface EspagramTestViewController ()
@@ -124,6 +125,11 @@
- (void) nextVerb {
NSMutableArray * answers;
// Add test result
if ( self.currentVerb) {
[TestResult addTestableVerbResult:self.currentVerb withTestType:@"Multiple Choice"];
}
if ( self.currentVerb && self.currentVerb.failed) {
// Last test failed.. so we won't remove it
// instead we shuffle the test set.

View File

@@ -0,0 +1,17 @@
//
// TestResult+Create.h
// Espagram
//
// Created by Abel Fokkinga on 1/7/13.
// Copyright (c) 2013 Abel Fokkinga. All rights reserved.
//
#import "TestResult.h"
#import "Verb.h"
#import "TestableVerb.h"
@interface TestResult (Create)
+ (void) addTestableVerbResult:(TestableVerb *)verb withTestType:(NSString *)testType;
@end

View File

@@ -0,0 +1,48 @@
//
// TestResult+Create.m
// Espagram
//
// Created by Abel Fokkinga on 1/7/13.
// Copyright (c) 2013 Abel Fokkinga. All rights reserved.
//
#import "TestResult+Create.h"
#import "Lesson.h"
@implementation TestResult (Create)
+ (void) addTestableVerbResult:(TestableVerb *)verb withTestType:(NSString *)testType
{
// Check first if this verb already contains a result
for ( TestResult * tr in verb.verb.testResults) {
if ( [tr.conjugatedPerson isEqualToString:verb.person] &&
[tr.testType isEqualToString:testType] ) {
if ( !verb.failed ) {
tr.passedCounter = [NSNumber numberWithInt:[tr.passedCounter intValue] + 1];
} else {
tr.failedCounter = [NSNumber numberWithInt:[tr.failedCounter intValue] +1];
}
[[verb.verb.lesson managedObjectContext] save:nil];
return;
}
}
// No result yet exists
TestResult * result = [NSEntityDescription insertNewObjectForEntityForName:@"TestResult" inManagedObjectContext:verb.verb.lesson.managedObjectContext];
result.conjugatedPerson = verb.person;
result.testType = testType;
if ( !verb.failed ) {
result.passedCounter = [NSNumber numberWithInt:1];
} else {
result.failedCounter = [NSNumber numberWithInt:1];
}
[verb.verb addTestResultsObject:result];
[[verb.verb.lesson managedObjectContext] save:nil];
}
@end