· 7 years ago · May 09, 2019, 09:58 AM
1import UIKit
2import XCTest
3
4extension String {
5 public subscript(integerRange: Range<Int>) -> String {
6 let start = index(startIndex, offsetBy: integerRange.lowerBound)
7 let end = index(startIndex, offsetBy: integerRange.upperBound)
8 return String(self[start..<end])
9 }
10}
11
12var allowedDomainNames = ["gmail.com", "ya.ru"]
13
14func checkDomainName(email: String) -> Bool {
15 if let index = email.range(of: "@")?.upperBound.encodedOffset {
16 let userDomain = String(email[index ..< email.count])
17 return allowedDomainNames.contains(userDomain.lowercased())
18 }
19 return false
20}
21
22func checkDomainName1(email: String) -> Bool {
23 guard let index = email.range(of: "@")?.upperBound else {
24 return false
25 }
26 let userDomain = email[index...]
27 return allowedDomainNames.contains(userDomain.lowercased())
28}
29
30func checkDomainName2(email: String) -> Bool {
31 return allowedDomainNames.contains {
32 email.lowercased().hasSuffix("@\($0)")
33 }
34}
35
36class MyTestOne: XCTestCase {
37
38 func testOne() {
39 XCTAssertTrue(checkDomainName(email: "qweqwe@gmail.com"))
40 XCTAssertTrue(checkDomainName(email: "qweqwe@ya.ru"))
41 XCTAssertFalse(checkDomainName(email: "qweqwe@1gmail.com"))
42 XCTAssertFalse(checkDomainName(email: "qweqwe@qeqrwer"))
43 XCTAssertFalse(checkDomainName(email: "qweqwe@"))
44 XCTAssertFalse(checkDomainName(email: "qweqwe"))
45 }
46}
47
48class MyTestTwo: XCTestCase {
49 func testTwo() {
50
51 XCTAssertTrue(checkDomainName1(email: "qweqwe@gmail.com"))
52 XCTAssertTrue(checkDomainName1(email: "qweqwe@ya.ru"))
53 XCTAssertFalse(checkDomainName1(email: "qweqwe@1gmail.com"))
54 XCTAssertFalse(checkDomainName1(email: "qweqwe@qeqrwer"))
55 XCTAssertFalse(checkDomainName1(email: "qweqwe@"))
56 XCTAssertFalse(checkDomainName1(email: "qweqwe"))
57 }
58}
59
60class MyTestThree: XCTestCase {
61 func testThree() {
62 XCTAssertTrue(checkDomainName2(email: "qweqwe@gmail.com"))
63 XCTAssertTrue(checkDomainName2(email: "qweqwe@ya.ru"))
64 XCTAssertFalse(checkDomainName2(email: "qweqwe@1gmail.com"))
65 XCTAssertFalse(checkDomainName2(email: "qweqwe@qeqrwer"))
66 XCTAssertFalse(checkDomainName2(email: "qweqwe@"))
67 XCTAssertFalse(checkDomainName2(email: "qweqwe"))
68 }
69}
70
71MyTestOne().run()
72MyTestTwo().run()
73MyTestThree().run()