Files
MonsterCards/iOS/MonsterCardsTests/Models/MonsterTests.m
Tom Hicks 2aaca29741 Adds alignment to monsters.
Adds tests for editing alignment on monsters.
Adds tests for monster meta text when alignment is set.
2020-09-12 17:39:07 -07:00

210 lines
6.1 KiB
Objective-C

//
// MonsterTests.m
// MonsterCardsTests
//
// Created by Tom Hicks on 9/5/20.
// Copyright © 2020 Tom Hicks. All rights reserved.
//
#import <XCTest/XCTest.h>
@import OCHamcrest;
@import OCMockito;
#import "Monster.h"
@interface MonsterTests : XCTestCase
@end
@implementation MonsterTests {
Monster *_monster;
NSManagedObjectContext *_context;
NSString *_jsonString;
NSData *_jsonData;
}
- (void)setUp {
_context = nil;
_monster = [[Monster alloc] initWithContext:_context];
_jsonString = @"{\"name\":\"Acolyte\",\"size\":\"medium\",\"type\":\"humanoid\",\"tag\":\"any race\",\"alignment\":\"any alignment\"}";
_jsonData = [_jsonString dataUsingEncoding:NSUTF8StringEncoding];
}
- (void)tearDown {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
- (void)testDefaultInitializer {
XCTAssertNotNil(_monster);
XCTAssertEqualObjects(@"", _monster.name);
XCTAssertEqualObjects(@"", _monster.size);
XCTAssertEqualObjects(@"", _monster.type);
XCTAssertEqualObjects(@"", _monster.subtype);
XCTAssertEqualObjects(@"", _monster.alignment);
}
- (void)testInitWithJSONString {
_monster = [[Monster alloc] initWithJSONString:_jsonString andContext:_context];
XCTAssertNotNil(_monster);
XCTAssertEqualObjects(@"Acolyte", _monster.name);
XCTAssertEqualObjects(@"medium", _monster.size);
XCTAssertEqualObjects(@"humanoid", _monster.type);
XCTAssertEqualObjects(@"any race", _monster.subtype);
XCTAssertEqualObjects(@"any alignment", _monster.alignment);
}
- (void)testInitWithEmptyJSONString {
_monster = [[Monster alloc] initWithJSONString:@"{}" andContext:_context];
XCTAssertNotNil(_monster);
XCTAssertEqualObjects(@"", _monster.name);
XCTAssertEqualObjects(@"", _monster.size);
XCTAssertEqualObjects(@"", _monster.type);
XCTAssertEqualObjects(@"", _monster.subtype);
XCTAssertEqualObjects(@"", _monster.alignment);
}
- (void)testInitWithJSONData {
_monster = [[Monster alloc] initWithJSONData:_jsonData andContext:_context];
XCTAssertNotNil(_monster);
XCTAssertEqualObjects(@"Acolyte", _monster.name);
XCTAssertEqualObjects(@"medium", _monster.size);
XCTAssertEqualObjects(@"humanoid", _monster.type);
XCTAssertEqualObjects(@"any race", _monster.subtype);
XCTAssertEqualObjects(@"any alignment", _monster.alignment);
}
- (void)testNameGetterAndSetter {
NSString *name = @"Pixie";
_monster.name = name;
XCTAssertEqualObjects(name, _monster.name);
}
- (void)testSizeGetterAndSetter {
NSString *size = @"huge";
_monster.size = size;
XCTAssertEqualObjects(size, _monster.size);
}
- (void)testTypeGetterAndSetter {
NSString *type = @"fey";
_monster.type = type;
XCTAssertEqualObjects(type, _monster.type);
}
- (void)testSubtypeGetterAndSetter {
NSString *subtype = @"elf";
_monster.subtype = subtype;
XCTAssertEqualObjects(subtype, _monster.subtype);
}
- (void)testAlignmentGetterAndSetter {
NSString *alignment = @"chaotic good";
_monster.alignment = alignment;
XCTAssertEqualObjects(alignment, _monster.alignment);
}
- (void)testCopyFromMonster {
Monster *otherMonster = [[Monster alloc] initWithJSONString:_jsonString andContext:_context];
[_monster copyFromMonster:otherMonster];
XCTAssertNotNil(_monster);
XCTAssertEqualObjects(@"Acolyte", _monster.name);
XCTAssertEqualObjects(@"medium", _monster.size);
XCTAssertEqualObjects(@"humanoid", _monster.type);
XCTAssertEqualObjects(@"any race", _monster.subtype);
XCTAssertEqualObjects(@"any alignment", _monster.alignment);
}
- (void)testMetaWithNoFieldsSet {
XCTAssertEqualObjects(@"", _monster.meta);
}
- (void)testMetaWithSize {
_monster.size = @"large";
XCTAssertEqualObjects(@"large", _monster.meta);
}
- (void)testMetaWithType {
_monster.type = @"humanoid";
XCTAssertEqualObjects(@"humanoid", _monster.meta);
}
- (void)testMetaWithSizeAndType {
_monster.size = @"large";
_monster.type = @"humanoid";
XCTAssertEqualObjects(@"large humanoid", _monster.meta);
}
- (void)testMetaWithSubtype {
_monster.subtype = @"elf";
XCTAssertEqualObjects(@"(elf)", _monster.meta);
}
- (void)testMetaWithSizeAndSubtype {
_monster.size = @"large";
_monster.subtype = @"elf";
XCTAssertEqualObjects(@"large (elf)", _monster.meta);
}
- (void)testMetaWithTypeAndSubtype {
_monster.type = @"humanoid";
_monster.subtype = @"elf";
XCTAssertEqualObjects(@"humanoid (elf)", _monster.meta);
}
- (void)testMetaWithSizeTypeAndSubtype {
_monster.size = @"large";
_monster.type = @"humanoid";
_monster.subtype = @"elf";
XCTAssertEqualObjects(@"large humanoid (elf)", _monster.meta);
}
- (void)testMetaWithAlignment {
_monster.alignment = @"chaotic good";
XCTAssertEqualObjects(@"chaotic good", _monster.meta);
}
- (void)testMetaWithSizeAndAlignment {
_monster.size = @"large";
_monster.alignment = @"chaotic good";
XCTAssertEqualObjects(@"large chaotic good", _monster.meta);
}
- (void)testMetaWithTypeAndAlignment {
_monster.type = @"humanoid";
_monster.alignment = @"chaotic good";
XCTAssertEqualObjects(@"humanoid chaotic good", _monster.meta);
}
- (void)testMetaWithSizeTypeAndAlignment {
_monster.size = @"large";
_monster.type = @"humanoid";
_monster.alignment = @"chaotic good";
XCTAssertEqualObjects(@"large humanoid chaotic good", _monster.meta);
}
- (void)testMetaWithSizeSubtypeAndAlignment {
_monster.size = @"large";
_monster.subtype = @"elf";
_monster.alignment = @"chaotic good";
XCTAssertEqualObjects(@"large (elf) chaotic good", _monster.meta);
}
- (void)testMetaWithTypeSubtypeAndAlignment {
_monster.type = @"humanoid";
_monster.subtype = @"elf";
_monster.alignment = @"chaotic good";
XCTAssertEqualObjects(@"humanoid (elf) chaotic good", _monster.meta);
}
- (void)testMetaWithSizeTypeSubtypeAndAlignment {
_monster.size = @"large";
_monster.type = @"humanoid";
_monster.subtype = @"elf";
_monster.alignment = @"chaotic good";
XCTAssertEqualObjects(@"large humanoid (elf) chaotic good", _monster.meta);
}
@end