Fixes default initializer of Skill model.
Adds tests for Skill model.
This commit is contained in:
@@ -23,6 +23,7 @@
|
||||
E25BD60125036BF8007B04EF /* Language.m in Sources */ = {isa = PBXBuildFile; fileRef = E25BD60025036BF8007B04EF /* Language.m */; };
|
||||
E25BD60425036CF0007B04EF /* Ability.m in Sources */ = {isa = PBXBuildFile; fileRef = E25BD60325036CF0007B04EF /* Ability.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 */; };
|
||||
E2F7247825005E89007D87ED /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E2F7247725005E89007D87ED /* SceneDelegate.m */; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
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; };
|
||||
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>"; };
|
||||
@@ -283,6 +285,7 @@
|
||||
E2FD91E72504832A00D5E935 /* DamageTypeTests.m */,
|
||||
E2FD91E9250493C000D5E935 /* LanguageTests.m */,
|
||||
E2FD91EB250496B000D5E935 /* SavingThrowTests.m */,
|
||||
E2ECA8F22504AC3300C1FFA5 /* SkillTests.m */,
|
||||
);
|
||||
path = Models;
|
||||
sourceTree = "<group>";
|
||||
@@ -553,6 +556,7 @@
|
||||
E2FD91E82504832A00D5E935 /* DamageTypeTests.m in Sources */,
|
||||
E2FD91EC250496B000D5E935 /* SavingThrowTests.m in Sources */,
|
||||
E2FD91E6250481F300D5E935 /* ActionTests.m in Sources */,
|
||||
E2ECA8F32504AC3300C1FFA5 /* SkillTests.m in Sources */,
|
||||
E2FD91E425047C4400D5E935 /* AbilityTests.m in Sources */,
|
||||
E2F7249625005E8A007D87ED /* MonsterCardsTests.m in Sources */,
|
||||
);
|
||||
|
||||
@@ -10,6 +10,16 @@
|
||||
|
||||
@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{
|
||||
self = [super init];
|
||||
|
||||
@@ -33,7 +43,8 @@
|
||||
-(NSString*)textForMonster: (Monster*)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
|
||||
|
||||
106
MonsterCardsTests/Models/SkillTests.m
Normal file
106
MonsterCardsTests/Models/SkillTests.m
Normal 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
|
||||
Reference in New Issue
Block a user