@@ -21,16 +21,84 @@ class CardAnimationTests: XCTestCase {
21
21
super. tearDown ( )
22
22
}
23
23
24
- func testExample( ) {
25
- // This is an example of a functional test case.
26
- // Use XCTAssert and related functions to verify your tests produce the correct results.
24
+ func testCallsToTheDelegate( ) {
25
+ let cardComponent = AnimatedCardsView ( frame: CGRectMake ( 0 , 0 , 800 , 800 ) )
26
+ let dataSourceMock = DataSourceDelegateMock ( )
27
+
28
+ cardComponent. dataSourceDelegate = dataSourceMock
29
+
30
+ let visibleCount = dataSourceMock. numberOfVisibleCardsCallCount
31
+ let cardCount = dataSourceMock. numberOfCardsCallCount
32
+ XCTAssert ( cardCount > 0 , " numberOfCards delegate not called " )
33
+ XCTAssert ( visibleCount > 0 , " numberOfVisibleCards delegate not called " )
27
34
}
28
35
29
- func testPerformanceExample( ) {
30
- // This is an example of a performance test case.
31
- self . measureBlock {
32
- // Put the code you want to measure the time of here.
33
- }
36
+ func testComponentAsksForTheCorrectAmountOfData( ) {
37
+ let numberOfCards = 10 , numberOfVisibleCards = 5
38
+
39
+ let cardComponent = AnimatedCardsView ( frame: CGRectMake ( 0 , 0 , 800 , 800 ) )
40
+ let dataSourceMock = DataSourceDelegateMock ( )
41
+ dataSourceMock. numberOfCardsValue = numberOfCards
42
+ dataSourceMock. numberOfVisibleCardsValue = numberOfVisibleCards
43
+
44
+ cardComponent. dataSourceDelegate = dataSourceMock
45
+
46
+ let visibleCount = dataSourceMock. numberOfVisibleCardsCallCount
47
+ let cardCount = dataSourceMock. numberOfCardsCallCount
48
+ XCTAssert ( cardCount == 1 , " wrong number of calls to numberOfCards delegate " )
49
+ XCTAssert ( visibleCount == 1 , " wrong number of calls to numberOfVisibleCards delegate " )
50
+ XCTAssert ( numberOfVisibleCards == dataSourceMock. cardNumberCallCount, " wrong number of calls to cardNumber delegate " )
34
51
}
35
52
53
+ func testReloadDataAsksAgainForAllTheData( ) {
54
+ let cardComponent = AnimatedCardsView ( frame: CGRectMake ( 0 , 0 , 800 , 800 ) )
55
+ let dataSourceMock = DataSourceDelegateMock ( )
56
+
57
+ cardComponent. dataSourceDelegate = dataSourceMock
58
+
59
+ let visibleCount = dataSourceMock. numberOfVisibleCardsCallCount
60
+ let cardCount = dataSourceMock. numberOfCardsCallCount
61
+
62
+ cardComponent. reloadData ( )
63
+
64
+ XCTAssert ( cardCount == dataSourceMock. numberOfCardsCallCount/ 2 , " not the same number of calls to the numberOfCards delegate " )
65
+ XCTAssert ( visibleCount == dataSourceMock. numberOfVisibleCardsCallCount/ 2 , " not the same number of calls to the numberOfVisibleCards delegate " )
66
+ }
67
+
68
+ func testChangeOfSizeReloadsData( ) {
69
+ let cardComponent = AnimatedCardsView ( frame: CGRectMake ( 0 , 0 , 800 , 800 ) )
70
+ let dataSourceMock = DataSourceDelegateMock ( )
71
+
72
+ cardComponent. dataSourceDelegate = dataSourceMock
73
+
74
+ let visibleCount = dataSourceMock. numberOfVisibleCardsCallCount
75
+ let cardCount = dataSourceMock. numberOfCardsCallCount
76
+
77
+ cardComponent. cardSize = ( 100 , 100 )
78
+
79
+ XCTAssert ( cardCount == dataSourceMock. numberOfCardsCallCount/ 2 , " not the same number of calls to the numberOfCards delegate " )
80
+ XCTAssert ( visibleCount == dataSourceMock. numberOfVisibleCardsCallCount/ 2 , " not the same number of calls to the numberOfVisibleCards delegate " )
81
+ }
82
+
83
+ }
84
+
85
+ class DataSourceDelegateMock : AnimatedCardsViewDataSource {
86
+ var numberOfVisibleCardsValue = 10 , numberOfVisibleCardsCallCount = 0
87
+ func numberOfVisibleCards( ) -> Int {
88
+ numberOfVisibleCardsCallCount++
89
+ return numberOfVisibleCardsValue
90
+ }
91
+
92
+ var numberOfCardsValue = 5 , numberOfCardsCallCount = 0
93
+ func numberOfCards( ) -> Int {
94
+ numberOfCardsCallCount++
95
+ return numberOfCardsValue
96
+ }
97
+
98
+ var cardNumberCallCount = 0 , cacheMiss = 0 , cacheHit = 0
99
+ func cardNumber( number: Int , view: BaseCardView ? ) -> BaseCardView {
100
+ cardNumberCallCount++
101
+ view != nil ? cacheHit++ : cacheMiss++
102
+ return BaseCardView ( frame: CGRectMake ( 0 , 0 , 10 , 10 ) )
103
+ }
36
104
}
0 commit comments