From d3dd60fb2c31bcf61ba85f417c0eb6dc26f22b64 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Sun, 13 Sep 2020 03:26:23 -0700 Subject: [PATCH] Adds dexterityScore and dexterityModifier to Monster. Adds tests for dexterityScore and dexterityModifier. --- MonsterCards/Models/Monster.m | 8 ++++++-- MonsterCardsTests/Models/MonsterTests.m | 23 ++++++++++++++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/MonsterCards/Models/Monster.m b/MonsterCards/Models/Monster.m index de885cd..1985458 100644 --- a/MonsterCards/Models/Monster.m +++ b/MonsterCards/Models/Monster.m @@ -81,7 +81,10 @@ if (tempNumber != nil && [tempNumber isKindOfClass:[NSNumber class]]) { self.strengthScore = tempNumber.intValue; } - + tempNumber = [jsonRoot objectForKey:@"dexPoints"]; + if (tempNumber != nil && [tempNumber isKindOfClass:[NSNumber class]]) { + self.dexterityScore = tempNumber.intValue; + } return self; } @@ -129,7 +132,7 @@ } -(int)dexterityModifier { - @throw [[NSException alloc] initWithName:@"unimplemented" reason:@"Method not implemented." userInfo:nil]; + return [Monster abilityModifierForScore:self.dexterityScore]; } -(int)constitutionModifier { @@ -346,6 +349,7 @@ self.subtype = monster.subtype; self.alignment = monster.alignment; self.strengthScore = monster.strengthScore; + self.dexterityScore = monster.dexterityScore; } @end diff --git a/MonsterCardsTests/Models/MonsterTests.m b/MonsterCardsTests/Models/MonsterTests.m index 9e6de72..440b046 100644 --- a/MonsterCardsTests/Models/MonsterTests.m +++ b/MonsterCardsTests/Models/MonsterTests.m @@ -25,7 +25,7 @@ - (void)setUp { _context = nil; _monster = [[Monster alloc] initWithContext:_context]; - _jsonString = @"{\"name\":\"Acolyte\",\"size\":\"medium\",\"type\":\"humanoid\",\"tag\":\"any race\",\"alignment\":\"any alignment\",\"strPoints\":8}"; + _jsonString = @"{\"name\":\"Acolyte\",\"size\":\"medium\",\"type\":\"humanoid\",\"tag\":\"any race\",\"alignment\":\"any alignment\",\"strPoints\":8,\"dexPoints\":10}"; _jsonData = [_jsonString dataUsingEncoding:NSUTF8StringEncoding]; } @@ -41,6 +41,7 @@ XCTAssertEqualObjects(@"", _monster.subtype); XCTAssertEqualObjects(@"", _monster.alignment); XCTAssertEqual(0, _monster.strengthScore); + XCTAssertEqual(0, _monster.dexterityScore); } - (void)testInitWithJSONString { @@ -53,6 +54,7 @@ XCTAssertEqualObjects(@"any race", _monster.subtype); XCTAssertEqualObjects(@"any alignment", _monster.alignment); XCTAssertEqual(8, _monster.strengthScore); + XCTAssertEqual(10, _monster.dexterityScore); } - (void)testInitWithEmptyJSONString { @@ -65,6 +67,7 @@ XCTAssertEqualObjects(@"", _monster.subtype); XCTAssertEqualObjects(@"", _monster.alignment); XCTAssertEqual(0, _monster.strengthScore); + XCTAssertEqual(0, _monster.dexterityScore); } - (void)testInitWithJSONData { _monster = [[Monster alloc] initWithJSONData:_jsonData andContext:_context]; @@ -76,6 +79,7 @@ XCTAssertEqualObjects(@"any race", _monster.subtype); XCTAssertEqualObjects(@"any alignment", _monster.alignment); XCTAssertEqual(8, _monster.strengthScore); + XCTAssertEqual(10, _monster.dexterityScore); } - (void)testNameGetterAndSetter { @@ -118,6 +122,7 @@ XCTAssertEqualObjects(@"any race", _monster.subtype); XCTAssertEqualObjects(@"any alignment", _monster.alignment); XCTAssertEqual(8, _monster.strengthScore); + XCTAssertEqual(10, _monster.dexterityScore); } - (void)testMetaWithNoFieldsSet { @@ -252,4 +257,20 @@ XCTAssertEqual(1, _monster.strengthModifier); } +- (void)testDexterityScoreGetterAndSetter { + _monster.dexterityScore = 11; + XCTAssertEqual(11, _monster.dexterityScore); +} + +- (void)testDexterityModifier { + _monster.dexterityScore = 9; + XCTAssertEqual(-1, _monster.dexterityModifier); + + _monster.dexterityScore = 10; + XCTAssertEqual(0, _monster.dexterityModifier); + + _monster.dexterityScore = 12; + XCTAssertEqual(1, _monster.dexterityModifier); +} + @end