-
Notifications
You must be signed in to change notification settings - Fork 634
/
Copy pathGObjectiveCParser-BlockParsingTesting.m
84 lines (66 loc) · 3.76 KB
/
GObjectiveCParser-BlockParsingTesting.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
//
// GObjectiveCParser-BlockParsingTesting.m
// appledoc
//
// Created by Stéphane Prohaszka on 06/03/2015.
// Copyright (c) 2015 Gentle Bytes. All rights reserved.
//
#import "GBStore.h"
#import "GBDataObjects.h"
#import "GBObjectiveCParser.h"
// Note that we use class for invoking parsing of methods. Probably not the best option - i.e. we could isolate method parsing code altogether and only parse relevant stuff here, but it seemed not much would be gained by doing this. Separating unit tests does avoid repetition in top-level objects testing code - we only need to test specific data there.
@interface GObjectiveCParserBlockParsingTesting : GBObjectsAssertor
@end
@implementation GObjectiveCParserBlockParsingTesting
- (void)testParseObjectsFromString_shouldRegisterSimpleBlockComment {
// setup
GBObjectiveCParser *parser = [GBObjectiveCParser parserWithSettingsProvider:[GBTestObjectsRegistry mockSettingsProvider]];
GBStore *store = [[GBStore alloc] init];
// execute
[parser parseObjectsFromString:@"/// copyright\n/** Comment 1*/\ntypedef void(^anyBlock)(BOOL boolean);" sourceFile:@"filename.h" toStore:store];
// verify
GBTypedefBlockData *blockData = [store typedefBlockWithName:@"anyBlock"];
assertThat([blockData.comment stringValue], is(@"Comment 1"));
assertThat(blockData.parameters, notNilValue());
assertThatInteger(blockData.parameters.count, equalToInteger(1));
GBTypedefBlockArgument *blockArgument = [[blockData parameters] firstObject];
assertThat(blockArgument.className, equalTo(@"BOOL"));
assertThat(blockArgument.name, equalTo(@"boolean"));
}
- (void)testParseObjectsFromString_shouldRegisterBlockComment {
// setup
GBObjectiveCParser *parser = [GBObjectiveCParser parserWithSettingsProvider:[GBTestObjectsRegistry mockSettingsProvider]];
GBStore *store = [[GBStore alloc] init];
// execute
[parser parseObjectsFromString:@"/// copyright\n/** Comment 1 */\ntypedef void(^anyBlock)(BOOL boolean, NSString *string);" sourceFile:@"filename.h" toStore:store];
// verify
GBTypedefBlockData *blockData = [store typedefBlockWithName:@"anyBlock"];
assertThat([blockData.comment stringValue], is(@"Comment 1"));
assertThat(blockData.parameters, notNilValue());
assertThatInteger(blockData.parameters.count, equalToInteger(2));
GBTypedefBlockArgument *blockArgument = [[blockData parameters] firstObject];
assertThat(blockArgument.className, equalTo(@"BOOL"));
assertThat(blockArgument.name, equalTo(@"boolean"));
blockArgument = [blockData parameters][1];
assertThat(blockArgument.className, equalTo(@"NSString"));
assertThat(blockArgument.name, equalTo(@"*string"));
}
- (void)testParseObjectsFromString_shouldRegisterBlockCommentWithNoArgName {
// setup
GBObjectiveCParser *parser = [GBObjectiveCParser parserWithSettingsProvider:[GBTestObjectsRegistry mockSettingsProvider]];
GBStore *store = [[GBStore alloc] init];
// execute
[parser parseObjectsFromString:@"/// copyright\n/** Comment 1*/\ntypedef void(^anyBlock)(BOOL, NSString *);" sourceFile:@"filename.h" toStore:store];
// verify
GBTypedefBlockData *blockData = [store typedefBlockWithName:@"anyBlock"];
assertThat([[blockData comment] stringValue], is(@"Comment 1"));
assertThat([blockData parameters], notNilValue());
assertThatInteger([blockData parameters].count, equalToInteger(2));
GBTypedefBlockArgument *blockArgument = [[blockData parameters] firstObject];
assertThat(blockArgument.className, equalTo(@"BOOL"));
assertThat(blockArgument.name, equalTo(@""));
blockArgument = [blockData parameters][1];
assertThat(blockArgument.className, equalTo(@"NSString"));
assertThat(blockArgument.name, equalTo(@"*"));
}
@end