//
// XTHtmlCharEntityParserTests.m
// XTads
//
// Created by Rune Berg on 07/10/16.
// Copyright © 2016 Rune Berg. All rights reserved.
//
#import
#import "XTHtmlCharEntityParser.h"
@interface XTHtmlCharEntityParserTests : XCTestCase
@property XTHtmlCharEntityParser *parser;
@end
@implementation XTHtmlCharEntityParserTests
- (void)setUp {
[super setUp];
self.parser = [XTHtmlCharEntityParser new];
}
- (void)tearDown {
[super tearDown];
}
//-----------
- (void)test_reset1
{
[self.parser reset];
XCTAssertEqualObjects(@"", [self.parser parse:@""]);
}
- (void)test_reset2
{
[self.parser reset];
XCTAssertEqualObjects(@"a", [self.parser parse:@"a"]);
}
- (void)test_reset3
{
XCTAssertEqualObjects(@"a", [self.parser parse:@"a"]);
[self.parser reset];
XCTAssertEqualObjects(@"b", [self.parser parse:@"b"]);
}
- (void)test_reset4
{
XCTAssertEqualObjects(@"a", [self.parser parse:@"a<"]);
[self.parser reset];
XCTAssertEqualObjects(@";", [self.parser parse:@";"]);
}
- (void)test_reset5
{
XCTAssertEqualObjects(@"a", [self.parser parse:@"a<"]);
[self.parser reset];
XCTAssertEqualObjects(@"b", [self.parser parse:@"b"]);
}
- (void)test_reset6
{
XCTAssertEqualObjects(@"", [self.parser parse:@"<"]);
[self.parser reset];
XCTAssertEqualObjects(@"", [self.parser parse:@""]);
XCTAssertEqualObjects(@";b", [self.parser parse:@";b"]);
}
- (void)test_reset6b
{
XCTAssertEqualObjects(@"", [self.parser parse:@"<"]);
// NOT: [self.parser reset];
XCTAssertEqualObjects(@"", [self.parser parse:@""]);
XCTAssertEqualObjects(@"&", [self.parser parse:@"<>&"]);
XCTAssertEqualObjects(@"cc", [self.parser parse:@"cc"]);
}
//-----------
- (void)testOneChar1 {
XCTAssertEqualObjects(@"a", [self.parser parse:@"a"]);
XCTAssertEqualObjects(@"", [self.parser parse:@""]);
}
- (void)testOneChar2 {
XCTAssertEqualObjects(@"a", [self.parser parse:@"a"]);
XCTAssertEqualObjects(@"b", [self.parser parse:@"b"]);
XCTAssertEqualObjects(@"c", [self.parser parse:@"c"]);
XCTAssertEqualObjects(@"", [self.parser parse:@""]);
}
- (void)testSeveralChars1 {
XCTAssertEqualObjects(@"abc", [self.parser parse:@"abc"]);
XCTAssertEqualObjects(@"", [self.parser parse:@""]);
}
- (void)testSeveralChars2 {
XCTAssertEqualObjects(@"ab", [self.parser parse:@"ab"]);
XCTAssertEqualObjects(@"cde", [self.parser parse:@"cde"]);
XCTAssertEqualObjects(@"", [self.parser parse:@""]);
}
//-----------
- (void)testTextNamedEntity1 {
XCTAssertEqualObjects(@"a<", [self.parser parse:@"a<"]);
XCTAssertEqualObjects(@"", [self.parser parse:@""]);
}
- (void)testTextNamedEntity2 {
XCTAssertEqualObjects(@"a", [self.parser parse:@"a&"]);
XCTAssertEqualObjects(@"<", [self.parser parse:@"lt;"]);
XCTAssertEqualObjects(@"", [self.parser parse:@""]);
}
- (void)testNamedEntityText1 {
XCTAssertEqualObjects(@"", [self.parser parse:@">&"]);
XCTAssertEqualObjects(@"&.", [self.parser parse:@"."]);
}
- (void)test_parse_missingSemicolonAfterNamedCharEntity8
{
XCTAssertEqualObjects(@"", [self.parser parse:@">c"]);
XCTAssertEqualObjects(@">c.", [self.parser parse:@"."]);
}
- (void)test_parse_missingSemicolonAfterNamedCharEntity9
{
XCTAssertEqualObjects(@"", [self.parser parse:@">cast"]);
XCTAssertEqualObjects(@">cast..", [self.parser parse:@".."]);
}
- (void)test_parse_missingSemicolonAfterNamedCharEntity10
{
XCTAssertEqualObjects(@">cast fireball", [self.parser parse:@">cast fireball"]);
}
- (void)test_parse_missingSemicolonAfterNamedCharEntity11
{
XCTAssertEqualObjects(@"a>cast fireball", [self.parser parse:@"a>cast fireball"]);
}
- (void)test_parse_missingSemicolonAfterNamedCharEntity12
{
XCTAssertEqualObjects(@"<> fireball", [self.parser parse:@"<> fireball"]);
}
- (void)test_parse_missingSemicolonAfterNamedCharEntity12b
{
XCTAssertEqualObjects(@"<> fireball", [self.parser parse:@"<> fireball"]);
}
- (void)test_parse_missingSemicolonAfterNamedCharEntity13
{
XCTAssertEqualObjects(@"<>cast F", [self.parser parse:@"<>cast F"]);
}
- (void)test_parse_missingSemicolonAfterNamedCharEntity14
{
XCTAssertEqualObjects(@"\x15>cast fireball", [self.parser parse:@">cast fireball"]);
}
- (void)test_parse_missingSemicolonAfterNamedCharEntity15
{
XCTAssertEqualObjects(@"\x15\x15\x15>cast fireball at goblin mage", [self.parser parse:@">cast fireball at goblin mage"]);
}
- (void)test_parse_missingSemicolonAfterNamedCharEntity16
{
XCTAssertEqualObjects(@"a", [self.parser parse:@"a>cast"]);
XCTAssertEqualObjects(@">cast.", [self.parser parse:@"."]);
}
- (void)test_parse_missingSemicolonAfterNamedCharEntity16b
{
XCTAssertEqualObjects(@"a>cast;", [self.parser parse:@"a>cast;"]);
}
- (void)test_parse_missingSemicolonAfterNamedCharEntity17
{
XCTAssertEqualObjects(@"<", [self.parser parse:@"<>cast"]);
XCTAssertEqualObjects(@">cast.", [self.parser parse:@"."]);
}
- (void)test_parse_missingSemicolonAfterNamedCharEntity18
{
XCTAssertEqualObjects(@"\x15", [self.parser parse:@">cast"]);
XCTAssertEqualObjects(@">cast.", [self.parser parse:@"."]);
}
- (void)test_parse_missingSemicolonAfterNamedCharEntity19
{
XCTAssertEqualObjects(@"\x15\x15\x15", [self.parser parse:@">cast"]);
XCTAssertEqualObjects(@">cast.", [self.parser parse:@"."]);
}
//-----------
- (void)test_parse_mixOfNamedCharEntitiesAndText1
{
NSString *string = @"abc>de<f";
XCTAssertEqualObjects(@"abc>dedea