@@ -29,18 +29,58 @@ final class URLBuilderTests: XCTestCase {
2929 Scheme ( . custom( " custom " ) )
3030 }
3131 }
32-
33- guard let httpUrlString = httpUrlRequest. urlRequest? . url? . absoluteString else { return }
34- guard let httpsUrlString = httpsUrlRequest. urlRequest? . url? . absoluteString else { return }
35- guard let mqttUrlString = mqttUrlRequest. urlRequest? . url? . absoluteString else { return }
36- guard let mqttsUrlString = mqttsUrlRequest. urlRequest? . url? . absoluteString else { return }
37- guard let customUrlString = customUrlRequest. urlRequest? . url? . absoluteString else { return }
38-
39- XCTAssertEqual ( httpUrlString, " http: " )
40- XCTAssertEqual ( httpsUrlString, " https: " )
41- XCTAssertEqual ( mqttUrlString, " mqtt: " )
42- XCTAssertEqual ( mqttsUrlString, " mqtts: " )
43- XCTAssertEqual ( customUrlString, " custom: " )
32+
33+ if let httpUrlString = httpUrlRequest. urlRequest? . url? . absoluteString,
34+ let httpsUrlString = httpsUrlRequest. urlRequest? . url? . absoluteString,
35+ let mqttUrlString = mqttUrlRequest. urlRequest? . url? . absoluteString,
36+ let mqttsUrlString = mqttsUrlRequest. urlRequest? . url? . absoluteString,
37+ let customUrlString = customUrlRequest. urlRequest? . url? . absoluteString {
38+ XCTAssertEqual ( httpUrlString, " http: " )
39+ XCTAssertEqual ( httpsUrlString, " https: " )
40+ XCTAssertEqual ( mqttUrlString, " mqtt: " )
41+ XCTAssertEqual ( mqttsUrlString, " mqtts: " )
42+ XCTAssertEqual ( customUrlString, " custom: " )
43+ }
44+ }
45+
46+ func testGeneratedUrlSchemeWithStaticParameterAndFunctionOfUrlBuilder( ) {
47+ let httpUrlRequest = Request {
48+ URL {
49+ Scheme . http
50+ }
51+ }
52+ let httpsUrlRequest = Request {
53+ URL {
54+ Scheme . https
55+ }
56+ }
57+ let mqttUrlRequest = Request {
58+ URL {
59+ Scheme . mqtt
60+ }
61+ }
62+ let mqttsUrlRequest = Request {
63+ URL {
64+ Scheme . mqtts
65+ }
66+ }
67+ let customUrlRequest = Request {
68+ URL {
69+ Scheme . custom ( " custom " )
70+ }
71+ }
72+
73+ if let httpUrlString = httpUrlRequest. urlRequest? . url? . absoluteString,
74+ let httpsUrlString = httpsUrlRequest. urlRequest? . url? . absoluteString,
75+ let mqttUrlString = mqttUrlRequest. urlRequest? . url? . absoluteString,
76+ let mqttsUrlString = mqttsUrlRequest. urlRequest? . url? . absoluteString,
77+ let customUrlString = customUrlRequest. urlRequest? . url? . absoluteString {
78+ XCTAssertEqual ( httpUrlString, " http: " )
79+ XCTAssertEqual ( httpsUrlString, " https: " )
80+ XCTAssertEqual ( mqttUrlString, " mqtt: " )
81+ XCTAssertEqual ( mqttsUrlString, " mqtts: " )
82+ XCTAssertEqual ( customUrlString, " custom: " )
83+ }
4484 }
4585
4686 func testGeneratedUrlHostWithURLBuilder( ) {
@@ -49,10 +89,10 @@ final class URLBuilderTests: XCTestCase {
4989 Host ( " host.com " )
5090 }
5191 }
52-
53- guard let urlString = request. urlRequest? . url? . absoluteString else { return }
54-
55- XCTAssertEqual ( urlString , " //host.com " )
92+
93+ if let urlString = request. urlRequest? . url? . absoluteString {
94+ XCTAssertEqual ( urlString , " //host.com " )
95+ }
5696 }
5797
5898 func testGeneratedUrlPathWithURLBuilder( ) {
@@ -61,10 +101,10 @@ final class URLBuilderTests: XCTestCase {
61101 Path ( " test/path " )
62102 }
63103 }
64-
65- guard let pathString = request. urlRequest? . url? . absoluteString else { return }
66-
67- XCTAssertEqual ( pathString , " /test/path " )
104+
105+ if let pathString = request. urlRequest? . url? . absoluteString {
106+ XCTAssertEqual ( pathString , " /test/path " )
107+ }
68108 }
69109
70110 func testGeneratedUrlQueryWithURLBuilder( ) {
@@ -73,10 +113,10 @@ final class URLBuilderTests: XCTestCase {
73113 Query ( " test " , value: " query " )
74114 }
75115 }
76-
77- guard let queryString = request. urlRequest? . url? . absoluteString else { return }
78-
79- XCTAssertEqual ( queryString , " ?test=query " )
116+
117+ if let queryString = request. urlRequest? . url? . absoluteString {
118+ XCTAssertEqual ( queryString , " ?test=query " )
119+ }
80120 }
81121
82122 func testGeneratedMultyUrlQueryWithURLBuilder( ) {
@@ -90,13 +130,13 @@ final class URLBuilderTests: XCTestCase {
90130 )
91131 }
92132 }
93-
94- guard let queryString = request. urlRequest? . url? . absoluteString else { return }
95-
96- XCTAssertEqual ( queryString. first, " ? " )
97- XCTAssertEqual ( queryString. contains ( " first=firstQuery " ) , true )
98- XCTAssertEqual ( queryString. contains ( " second=secondQuery " ) , true )
99- XCTAssertEqual ( queryString . split ( separator : " & " ) . count , 2 )
133+
134+ if let queryString = request. urlRequest? . url? . absoluteString {
135+ XCTAssertEqual ( queryString . first , " ? " )
136+ XCTAssertEqual ( queryString. contains ( " first=firstQuery " ) , true )
137+ XCTAssertEqual ( queryString. contains ( " second=secondQuery " ) , true )
138+ XCTAssertEqual ( queryString. split ( separator : " & " ) . count , 2 )
139+ }
100140 }
101141
102142 func testGeneratedURLWithURLBuilder( ) {
@@ -108,64 +148,75 @@ final class URLBuilderTests: XCTestCase {
108148 Query ( " test " , value: " query " )
109149 }
110150 }
111-
112- guard let url = request. urlRequest? . url? . absoluteString else { return }
113151
114- XCTAssertEqual ( url, " https://www.urltest.com/test/path?test=query " )
152+ if let url = request. urlRequest? . url? . absoluteString {
153+ XCTAssertEqual ( url, " https://www.urltest.com/test/path?test=query " )
154+ }
115155 }
116156
117157 func testSwitchConditionalStatementWorkingForBuildEitherInUrlBuilder( ) {
118158 enum SchemeOptions {
119159 case https
120160 case http
121- }
122-
123- let options : SchemeOptions = . http
124-
125- let request = Request {
126- URL {
127- switch options {
128- case . https :
129- Scheme ( . https )
130- case . http :
131- Scheme ( . http )
132- }
133- Host ( " www.urltest.com " )
161+
162+ var request : Request {
163+ Request {
164+ URL {
165+ switch self {
166+ case . https :
167+ Scheme ( . https )
168+ case . http :
169+ Scheme ( . http )
170+ }
171+ Host ( " www.urltest.com " )
172+ }
173+ }
134174 }
135175 }
136176
137- guard let url = request. urlRequest? . url? . absoluteString else { return }
138-
139- XCTAssertEqual ( url, " http://www.urltest.com " )
177+ if let httpUrl = SchemeOptions . http. request. urlRequest? . url? . absoluteString {
178+ XCTAssertEqual ( httpUrl, " http://www.urltest.com " )
179+ }
180+ if let httpsUrl = SchemeOptions . https. request. urlRequest? . url? . absoluteString {
181+ XCTAssertEqual ( httpsUrl, " https://www.urltest.com " )
182+ }
140183 }
141184
142185 func testIfConditionalStatementWorkingForBuildEitherInUrlBuilder( ) {
143- let conditional = true
144-
145- let request = Request {
146- URL {
147- if conditional == true {
148- Scheme ( . http)
149- } else {
150- Scheme ( . https)
151- }
152- Host ( " www.urltest.com " )
186+ enum SchemeOptions {
187+ case https
188+ case http
189+
190+ var request : Request {
191+ Request {
192+ URL {
193+ if self == . http {
194+ Scheme ( . http)
195+ } else {
196+ Scheme ( . https)
197+ }
198+ Host ( " www.urltest.com " )
199+ }
200+ }
153201 }
154202 }
155203
156- guard let url = request. urlRequest? . url? . absoluteString else { return }
157-
158- XCTAssertEqual ( url, " http://www.urltest.com " )
204+ if let httpUrl = SchemeOptions . http. request. urlRequest? . url? . absoluteString {
205+ XCTAssertEqual ( httpUrl, " http://www.urltest.com " )
206+ }
207+ if let httpsUrl = SchemeOptions . https. request. urlRequest? . url? . absoluteString {
208+ XCTAssertEqual ( httpsUrl, " https://www.urltest.com " )
209+ }
159210 }
160211
161212 /// #1: https://github.com/devyhan/APIRouter/issues/1
162213 #warning("#1 change after issue resolution.")
163214 func testForLoopStatementWorkingForBuildEitherInUrlBuilder( ) {
164215 let queries = [
165216 " query1 " : " value1 " //,
166- // "query2": "value2",
167- // "query3": "value3",
168- // "query4": "value4",
217+ // "query2": "value2",
218+ // "query3": "value3",
219+ // "query4": "value4",
169220 ]
170221
171222 let request = Request {
@@ -179,8 +230,8 @@ final class URLBuilderTests: XCTestCase {
179230 }
180231 }
181232
182- guard let url = request. urlRequest? . url? . absoluteString else { return }
183-
184- XCTAssertEqual ( url , " https://www.urltest.com?query1=value1 " )
233+ if let url = request. urlRequest? . url? . absoluteString {
234+ XCTAssertEqual ( url , " https://www.urltest.com?query1=value1 " )
235+ }
185236 }
186237}
0 commit comments