Fixes default initializer of Skill model.

Adds tests for Skill model.
This commit is contained in:
2020-09-05 23:25:40 -07:00
parent c3031fbc39
commit 555ba4c007
3 changed files with 122 additions and 1 deletions

View File

@@ -23,6 +23,7 @@
E25BD60125036BF8007B04EF /* Language.m in Sources */ = {isa = PBXBuildFile; fileRef = E25BD60025036BF8007B04EF /* Language.m */; }; E25BD60125036BF8007B04EF /* Language.m in Sources */ = {isa = PBXBuildFile; fileRef = E25BD60025036BF8007B04EF /* Language.m */; };
E25BD60425036CF0007B04EF /* Ability.m in Sources */ = {isa = PBXBuildFile; fileRef = E25BD60325036CF0007B04EF /* Ability.m */; }; E25BD60425036CF0007B04EF /* Ability.m in Sources */ = {isa = PBXBuildFile; fileRef = E25BD60325036CF0007B04EF /* Ability.m */; };
E25BD60725036CFA007B04EF /* Action.m in Sources */ = {isa = PBXBuildFile; fileRef = E25BD60625036CFA007B04EF /* Action.m */; }; E25BD60725036CFA007B04EF /* Action.m in Sources */ = {isa = PBXBuildFile; fileRef = E25BD60625036CFA007B04EF /* Action.m */; };
E2ECA8F32504AC3300C1FFA5 /* SkillTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E2ECA8F22504AC3300C1FFA5 /* SkillTests.m */; };
E2F7247525005E89007D87ED /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E2F7247425005E89007D87ED /* AppDelegate.m */; }; E2F7247525005E89007D87ED /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E2F7247425005E89007D87ED /* AppDelegate.m */; };
E2F7247825005E89007D87ED /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E2F7247725005E89007D87ED /* SceneDelegate.m */; }; E2F7247825005E89007D87ED /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E2F7247725005E89007D87ED /* SceneDelegate.m */; };
E2F7248125005E89007D87ED /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E2F7247F25005E89007D87ED /* Main.storyboard */; }; E2F7248125005E89007D87ED /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E2F7247F25005E89007D87ED /* Main.storyboard */; };
@@ -91,6 +92,7 @@
E25BD60525036CFA007B04EF /* Action.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Action.h; sourceTree = "<group>"; }; E25BD60525036CFA007B04EF /* Action.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Action.h; sourceTree = "<group>"; };
E25BD60625036CFA007B04EF /* Action.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Action.m; sourceTree = "<group>"; }; E25BD60625036CFA007B04EF /* Action.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Action.m; sourceTree = "<group>"; };
E265EE24B2C8E81E1B559306 /* Pods-MonsterCards-MonsterCardsUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MonsterCards-MonsterCardsUITests.debug.xcconfig"; path = "Target Support Files/Pods-MonsterCards-MonsterCardsUITests/Pods-MonsterCards-MonsterCardsUITests.debug.xcconfig"; sourceTree = "<group>"; }; E265EE24B2C8E81E1B559306 /* Pods-MonsterCards-MonsterCardsUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MonsterCards-MonsterCardsUITests.debug.xcconfig"; path = "Target Support Files/Pods-MonsterCards-MonsterCardsUITests/Pods-MonsterCards-MonsterCardsUITests.debug.xcconfig"; sourceTree = "<group>"; };
E2ECA8F22504AC3300C1FFA5 /* SkillTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SkillTests.m; sourceTree = "<group>"; };
E2F7247025005E89007D87ED /* Monster Cards.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Monster Cards.app"; sourceTree = BUILT_PRODUCTS_DIR; }; E2F7247025005E89007D87ED /* Monster Cards.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Monster Cards.app"; sourceTree = BUILT_PRODUCTS_DIR; };
E2F7247325005E89007D87ED /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; }; E2F7247325005E89007D87ED /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
E2F7247425005E89007D87ED /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; }; E2F7247425005E89007D87ED /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
@@ -283,6 +285,7 @@
E2FD91E72504832A00D5E935 /* DamageTypeTests.m */, E2FD91E72504832A00D5E935 /* DamageTypeTests.m */,
E2FD91E9250493C000D5E935 /* LanguageTests.m */, E2FD91E9250493C000D5E935 /* LanguageTests.m */,
E2FD91EB250496B000D5E935 /* SavingThrowTests.m */, E2FD91EB250496B000D5E935 /* SavingThrowTests.m */,
E2ECA8F22504AC3300C1FFA5 /* SkillTests.m */,
); );
path = Models; path = Models;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -553,6 +556,7 @@
E2FD91E82504832A00D5E935 /* DamageTypeTests.m in Sources */, E2FD91E82504832A00D5E935 /* DamageTypeTests.m in Sources */,
E2FD91EC250496B000D5E935 /* SavingThrowTests.m in Sources */, E2FD91EC250496B000D5E935 /* SavingThrowTests.m in Sources */,
E2FD91E6250481F300D5E935 /* ActionTests.m in Sources */, E2FD91E6250481F300D5E935 /* ActionTests.m in Sources */,
E2ECA8F32504AC3300C1FFA5 /* SkillTests.m in Sources */,
E2FD91E425047C4400D5E935 /* AbilityTests.m in Sources */, E2FD91E425047C4400D5E935 /* AbilityTests.m in Sources */,
E2F7249625005E8A007D87ED /* MonsterCardsTests.m in Sources */, E2F7249625005E8A007D87ED /* MonsterCardsTests.m in Sources */,
); );

View File

@@ -10,6 +10,16 @@
@implementation Skill @implementation Skill
-(id)init {
self = [super init];
self.name = @"";
self.abilityScoreName = @"";
self.notes = @"";
return self;
}
-(id)initWithName: (NSString*)name abilityScoreName:(NSString*)abilityScoreName andNotes:(NSString*)notes{ -(id)initWithName: (NSString*)name abilityScoreName:(NSString*)abilityScoreName andNotes:(NSString*)notes{
self = [super init]; self = [super init];
@@ -33,7 +43,8 @@
-(NSString*)textForMonster: (Monster*)monster { -(NSString*)textForMonster: (Monster*)monster {
int bonus = [self skillBonusForMonster:monster]; int bonus = [self skillBonusForMonster:monster];
return [NSString stringWithFormat:@"%@%@ %d", [self.name substringToIndex:1], [self.name substringFromIndex:1], bonus]; // [self.name localizedUppercaseString]
return [NSString stringWithFormat:@"%@%@ %d", [[self.name substringToIndex:1] localizedUppercaseString], [self.name substringFromIndex:1], bonus];
} }
@end @end

View File

@@ -0,0 +1,106 @@
//
// SkillTests.m
// MonsterCardsTests
//
// Created by Tom Hicks on 9/5/20.
// Copyright © 2020 Tom Hicks. All rights reserved.
//
#import <XCTest/XCTest.h>
@import OCMockito;
@import OCHamcrest;
#import "Skill.h"
@interface SkillTests : XCTestCase
@end
@implementation SkillTests {
Skill *_skill;
NSString *_name;
NSString *_abilityScoreName;
NSString *_notes;
}
- (void)setUp {
_skill = [[Skill alloc] init];
_name = @"pranking";
_abilityScoreName = @"str";
_notes = @"some notes";
}
- (void)tearDown {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
- (void)testDefaultInitializer {
XCTAssertNotNil(_skill);
XCTAssertEqualObjects(@"", _skill.name);
XCTAssertEqualObjects(@"", _skill.abilityScoreName);
XCTAssertEqualObjects(@"", _skill.notes);
}
- (void)testInitWithNameAbilityScoreNameAndNotes {
_skill = [[Skill alloc] initWithName:_name abilityScoreName:_abilityScoreName andNotes:_notes];
XCTAssertNotNil(_skill);
XCTAssertEqualObjects(_name, _skill.name);
XCTAssertEqualObjects(_abilityScoreName, _skill.abilityScoreName);
XCTAssertEqualObjects(_notes, _skill.notes);
}
- (void)testNameGetterAndSetter {
_skill.name = _name;
XCTAssertEqualObjects(_name, _skill.name);
}
- (void)testAbilityScoreNameGetterAndSetter {
_skill.abilityScoreName = _abilityScoreName;
XCTAssertEqualObjects(_abilityScoreName, _skill.abilityScoreName);
}
- (void)testNotesGetterAndSetter {
_skill.notes = _notes;
XCTAssertEqualObjects(_notes, _skill.notes);
}
- (void)testSkillBonusForMonster {
Monster *monster = mock([Monster class]);
[given([monster abilityModifierForAbilityScoreName:_abilityScoreName]) willReturnInt:1];
stubProperty(monster, proficiencyBonus, @2);
_skill = [[Skill alloc] initWithName:_name abilityScoreName:_abilityScoreName andNotes:_notes];
XCTAssertEqual(3, [_skill skillBonusForMonster:monster]);
}
- (void)testSkillBonusForMonsterWithExpertise {
Monster *monster = mock([Monster class]);
[given([monster abilityModifierForAbilityScoreName:_abilityScoreName]) willReturnInt:1];
stubProperty(monster, proficiencyBonus, @2);
_skill = [[Skill alloc] initWithName:_name abilityScoreName:_abilityScoreName andNotes:@" (ex)"];
XCTAssertEqual(5, [_skill skillBonusForMonster:monster]);
}
- (void)testTextForMonster {
Monster *monster = mock([Monster class]);
[given([monster abilityModifierForAbilityScoreName:_abilityScoreName]) willReturnInt:1];
stubProperty(monster, proficiencyBonus, @2);
_skill = [[Skill alloc] initWithName:_name abilityScoreName:_abilityScoreName andNotes:_notes];
XCTAssertEqualObjects(@"Pranking 3", [_skill textForMonster:monster]);
}
- (void)testTextForMonsterWithExpertise {
Monster *monster = mock([Monster class]);
[given([monster abilityModifierForAbilityScoreName:_abilityScoreName]) willReturnInt:1];
stubProperty(monster, proficiencyBonus, @2);
_skill = [[Skill alloc] initWithName:_name abilityScoreName:_abilityScoreName andNotes:@" (ex)"];
XCTAssertEqualObjects(@"Pranking 5", [_skill textForMonster:monster]);
}
@end