@@ -71,7 +71,44 @@ class SwiftGraphTests: XCTestCase {
71
71
XCTAssertEqual ( g. vertexCount, 2 , " 2 total vertices " )
72
72
XCTAssertEqual ( g. edgeCount, 1 , " 1 total edges " )
73
73
}
74
-
74
+
75
+ func testIndegreeAndOutdegree( ) {
76
+ var g = UnweightedGraph < String > ( )
77
+ let atlantaIndex = g. addVertex ( " Atlanta " )
78
+ let nyIndex = g. addVertex ( " New York " )
79
+ let miamiIndex = g. addVertex ( " Miami " )
80
+ let sfIndex = g. addVertex ( " San Francisco " )
81
+ let arezzoIndex = g. addVertex ( " Arezzo " )
82
+ g. addEdge ( from: " Atlanta " , to: " New York " , directed: true )
83
+ let nyAtlantaEdge = UnweightedEdge ( u: nyIndex, v: atlantaIndex, directed: true )
84
+ g. addEdge ( nyAtlantaEdge, directed: true )
85
+ g. addEdge ( from: " Miami " , to: " Atlanta " , directed: true )
86
+ g. addEdge ( from: " New York " , to: " Miami " , directed: false )
87
+ g. addEdge ( from: " Atlanta " , to: " Miami " , directed: true )
88
+ g. addEdge ( from: " San Francisco " , to: " Miami " , directed: false )
89
+ XCTAssertEqual ( g. indegreeOfVertex ( at: atlantaIndex) , 2 , " 2 edges end at Atlanta " )
90
+ XCTAssertEqual ( g. indegreeOfVertex ( at: miamiIndex) , 3 , " 3 edges end at Miami " )
91
+ XCTAssertEqual ( g. indegreeOfVertex ( at: sfIndex) , 1 , " 1 edge ends at San Francisco " )
92
+ XCTAssertEqual ( g. indegreeOfVertex ( at: nyIndex) , 2 , " 2 edges end at New York " )
93
+ XCTAssertEqual ( g. indegreeOfVertex ( at: arezzoIndex) , 0 , " 0 edges end at Arezzo " )
94
+ XCTAssertEqual ( g. outdegreeOfVertex ( at: atlantaIndex) , 2 , " 2 edges start from Atlanta " )
95
+ XCTAssertEqual ( g. outdegreeOfVertex ( at: miamiIndex) , 3 , " 3 edges start from Miami " )
96
+ XCTAssertEqual ( g. outdegreeOfVertex ( at: sfIndex) , 1 , " 1 edge starts from San Francisco " )
97
+ XCTAssertEqual ( g. outdegreeOfVertex ( at: nyIndex) , 2 , " 2 edges start from New York " )
98
+ XCTAssertEqual ( g. outdegreeOfVertex ( at: arezzoIndex) , 0 , " 0 edges start from Arezzo " )
99
+ g. removeEdge ( nyAtlantaEdge)
100
+ XCTAssertEqual ( g. indegreeOfVertex ( at: atlantaIndex) , 1 , " 1 edgee ends at Atlanta " )
101
+ XCTAssertEqual ( g. indegreeOfVertex ( at: miamiIndex) , 3 , " 3 edges end at Miami " )
102
+ XCTAssertEqual ( g. indegreeOfVertex ( at: sfIndex) , 1 , " 1 edge ends at San Francisco " )
103
+ XCTAssertEqual ( g. indegreeOfVertex ( at: nyIndex) , 2 , " 2 edges end at New York " )
104
+ XCTAssertEqual ( g. indegreeOfVertex ( at: arezzoIndex) , 0 , " 0 edges end at Arezzo " )
105
+ XCTAssertEqual ( g. outdegreeOfVertex ( at: atlantaIndex) , 2 , " 2 edges start from Atlanta " )
106
+ XCTAssertEqual ( g. outdegreeOfVertex ( at: miamiIndex) , 3 , " 3 edges start from Miami " )
107
+ XCTAssertEqual ( g. outdegreeOfVertex ( at: sfIndex) , 1 , " 1 edge starts from San Francisco " )
108
+ XCTAssertEqual ( g. outdegreeOfVertex ( at: nyIndex) , 1 , " 1 edge starts from New York " )
109
+ XCTAssertEqual ( g. outdegreeOfVertex ( at: arezzoIndex) , 0 , " 0 edges start from Arezzo " )
110
+ }
111
+
75
112
func testSubscript( ) {
76
113
let g : UnweightedGraph < String > = UnweightedGraph < String > ( )
77
114
_ = g. addVertex ( " Atlanta " )
0 commit comments