diff --git a/enzevalos_iphoneTests/phishing/EmailStringExtensionTests.swift b/enzevalos_iphoneTests/phishing/EmailStringExtensionTests.swift
index bfe4779c689e28e83678bc8d4198f6ce9cc62158..e12f53778674ec1e14bdff10267b27cca5ce5661 100644
--- a/enzevalos_iphoneTests/phishing/EmailStringExtensionTests.swift
+++ b/enzevalos_iphoneTests/phishing/EmailStringExtensionTests.swift
@@ -1,141 +1,155 @@
-    //
-    //  EmailAdressTests.swift
-    //  enzevalos_iphoneTests
-    //
-    //  Created by Katharina Müller on 17.03.20.
-    //  Copyright © 2020 fu-berlin. All rights reserved.
-    //
-    import XCTest
-    @testable import enzevalos_iphone
+//
+//  EmailAdressTests.swift
+//  enzevalos_iphoneTests
+//
+//  Created by Katharina Müller on 17.03.20.
+//  Copyright © 2020 fu-berlin. All rights reserved.
+//
+import XCTest
+@testable import enzevalos_iphone
     
-    class EmailStringExtensionTests: XCTestCase {
+class EmailStringExtensionTests: XCTestCase {
         
-        override func setUp() {
-            // Put setup code here. This method is called before the invocation of each test method in the class.
-        }
+    override func setUp() {
+        // Put setup code here. This method is called before the invocation of each test method in the class.
+    }
         
-        override func tearDown() {
-            // Put teardown code here. This method is called after the invocation of each test method in the class.
-        }
-        //  General TestText for all (needs to simulate a body of text from which to extract specific Strings
-        var TestText = "blabla moep jkjlkj lkjkljknmbjks llhil k. jhkhkih. huhuhj! fsdf bob.alice@zedat.fu-berlin.de dfsf. jhjknjknjkh https://git.imp.fu-berlin.de/enzevalos/enzevalos_iphone/issues/240  hjkhjkhkhn www.google.de kljhl@hjkghgkhj.com nljbjkjk.de url tag html mail <a href='https://www.w3schools.com'>Visit W3Schools</a> hjhkhiuhziu kjhkl <a href=\"https://www.w2schools.com\">Visit W2Schools</a>. lknljnlk. kmm /n lmölmpöl < a href=\"https://www.w8schools.com\">Visit W8Schools</a> gfg fghfghnhg <a      href=\"https://www.w33schools.com\">Visit W33Schools</a> nkjhjkhkjn,mn jnmnklmj j <a href=\"https://www.w22schools.com\">Visit W22Schools</ a> hghjcfgh hfgchnvhj vgjcgj cjghcj <a href=\"https://www.w99schools.com\">Visit W99Schools</a    >    你好@yahoo.com eewfve  test@莎士比亚.org    你好@莎士比亚.org  Rδοκιμή@παράδειγμα.δοκιμή or 管理员@中国互联网络信息中心.中国 你好45@yahoo.com"
+    override func tearDown() {
+        // Put teardown code here. This method is called after the invocation of each test method in the class.
+    }
+    //  General TestText for all (needs to simulate a body of text from which to extract specific Strings
+    var TestText = "blabla moep jkjlkj lkjkljknmbjks llhil k. jhkhkih. huhuhj! fsdf bob.alice@zedat.fu-berlin.de dfsf. jhjknjknjkh https://git.imp.fu-berlin.de/enzevalos/enzevalos_iphone/issues/240  hjkhjkhkhn www.google.de kljhl@hjkghgkhj.com nljbjkjk.de url tag html mail <a href='https://www.w3schools.com'>Visit W3Schools</a> hjhkhiuhziu kjhkl <a href=\"https://www.w2schools.com\">Visit W2Schools</a>. lknljnlk. kmm /n lmölmpöl < a href=\"https://www.w8schools.com\">Visit W8Schools</a> gfg fghfghnhg <a      href=\"https://www.w33schools.com\">Visit W33Schools</a> nkjhjkhkjn,mn jnmnklmj j <a href=\"https://www.w22schools.com\">Visit W22Schools</ a> hghjcfgh hfgchnvhj vgjcgj cjghcj <a href=\"https://www.w99schools.com\">Visit W99Schools</a    >    你好@yahoo.com eewfve  test@莎士比亚.org    你好@莎士比亚.org  Rδοκιμή@παράδειγμα.δοκιμή or 管理员@中国互联网络信息中心.中国 你好45@yahoo.com"
         
-        //    setup for find mail address in text
-        var finalMailAddresses = ["bob.alice@zedat.fu-berlin.de",
-                                  "kljhl@hjkghgkhj.com",
-                                  "你好@yahoo.com",
-                                  "test@莎士比亚.org",
-                                  "你好@莎士比亚.org",
-                                  "Rδοκιμή@παράδειγμα.δοκιμή",
-                                  "管理员@中国互联网络信息中心.中国",
-                                  "你好45@yahoo.com"]
+    //    setup for find mail address in text
+    var finalMailAddresses = ["bob.alice@zedat.fu-berlin.de",
+                                "kljhl@hjkghgkhj.com",
+                                "你好@yahoo.com",
+                                "test@莎士比亚.org",
+                                "你好@莎士比亚.org",
+                                "Rδοκιμή@παράδειγμα.δοκιμή",
+                                "管理员@中国互联网络信息中心.中国",
+                                "你好45@yahoo.com"]
         
-        func testFindEmails(){
-            let arr = TestText.findEmails()
-            XCTAssertNotNil(arr)
-            XCTAssertEqual(arr[0], finalMailAddresses[0])
-            XCTAssertEqual(arr[1], finalMailAddresses[1])
-            XCTAssertEqual(arr[2], finalMailAddresses[2])
-            XCTAssertEqual(arr[3], finalMailAddresses[3])
-            XCTAssertEqual(arr[4], finalMailAddresses[4])
-            XCTAssertEqual(arr[5], finalMailAddresses[5])
-            XCTAssertEqual(arr[6], finalMailAddresses[6])
-            XCTAssertEqual(arr[7], finalMailAddresses[7])
-        }
-        
-        //    setup email validation
-        var validEmails = ["alice.bob@moep.blubb.de",
-                           "test@google.com",
-                           "test@google.co.uk",
-                           "你好@yahoo.com",
-                           "test@莎士比亚.org",
-                           "你好@莎士比亚.org",
-                           "Rδοκιμή@παράδειγμα.δοκιμή",
-                           "管理员@中国互联网络信息中心.中国",
-                           "你好45@yahoo.com"]
+    func testFindEmails(){
+        let arr = TestText.findEmails()
+        XCTAssertNotNil(arr)
+        XCTAssertEqual(arr[0], finalMailAddresses[0])
+        XCTAssertEqual(arr[1], finalMailAddresses[1])
+        XCTAssertEqual(arr[2], finalMailAddresses[2])
+        XCTAssertEqual(arr[3], finalMailAddresses[3])
+        XCTAssertEqual(arr[4], finalMailAddresses[4])
+        XCTAssertEqual(arr[5], finalMailAddresses[5])
+        XCTAssertEqual(arr[6], finalMailAddresses[6])
+        XCTAssertEqual(arr[7], finalMailAddresses[7])
+    }
+    
+    //    setup email validation
+    var validEmails = ["alice.bob@moep.blubb.de",
+                        "test@google.com",
+                        "test@google.co.uk",
+                        "你好@yahoo.com",
+                        "test@莎士比亚.org",
+                        "你好@莎士比亚.org",
+                        "Rδοκιμή@παράδειγμα.δοκιμή",
+                        "管理员@中国互联网络信息中心.中国",
+                        "你好45@yahoo.com"]
         
-        var notValidEmails = ["test@@google.com",
-                              "test@google",
-                              "Abc.example.com",
-                              "A@b@c@example.com",
-                              "this is\"not\\allowed@example.com",
-                              "this\\ still\\\"not\\\\allowed@example.com",
-                              "1234567890123456789012345678901234567890123456789012345678901234+x@example.com"]
-        ///Finding Email adresses etc.
-        func testIsValidEmail(){
-            for v in validEmails {
-                XCTAssertTrue(v.isValidEmail())
-            }
-            for n in notValidEmails{
-                XCTAssertFalse(n.isValidEmail())
-            }
+    var notValidEmails = ["test@@google.com",
+                            "test@google",
+                            "Abc.example.com",
+                            "A@b@c@example.com",
+                            "this is\"not\\allowed@example.com",
+                            "this\\ still\\\"not\\\\allowed@example.com",
+                            "1234567890123456789012345678901234567890123456789012345678901234+x@example.com"]
+    
+    //Finding Email adresses etc.
+    func testIsValidEmail(){
+        for v in validEmails {
+            XCTAssertTrue(v.isValidEmail())
         }
-        
-        //    setup for mail address splitting
-        var correctSplit_0 = ["alice.bob", "moep", "blubb", "de"]
-        var correctSplit_1 = ["test", "google", "com"]
-        var correctSplit_2 = ["test", "google", "co", "uk"]
-        var correctSplit_3 = ["你好", "yahoo", "com"]
-        var correctSplit_4 = ["test", "莎士比亚", "org"]
-        var correctSplit_5 = ["你好", "莎士比亚", "org"]
-        var correctSplit_6 = ["Rδοκιμή", "παράδειγμα", "δοκιμή"]
-        var correctSplit_7 = ["管理员", "中国互联网络信息中心", "中国"]
-        var correctSplit_8 = ["你好45", "yahoo", "com"]
-        var spliEmails:[Any] {
-            return [correctSplit_0, correctSplit_1, correctSplit_2, correctSplit_3, correctSplit_4, correctSplit_5, correctSplit_6, correctSplit_7, correctSplit_8]
+        for n in notValidEmails{
+            XCTAssertFalse(n.isValidEmail())
         }
+    }
+        
+    //    setup for mail address splitting
+    var correctSplit_0 = ["alice.bob", "moep", "blubb", "de"]
+    var correctSplit_1 = ["test", "google", "com"]
+    var correctSplit_2 = ["test", "google", "co", "uk"]
+    var correctSplit_3 = ["你好", "yahoo", "com"]
+    var correctSplit_4 = ["test", "莎士比亚", "org"]
+    var correctSplit_5 = ["你好", "莎士比亚", "org"]
+    var correctSplit_6 = ["Rδοκιμή", "παράδειγμα", "δοκιμή"]
+    var correctSplit_7 = ["管理员", "中国互联网络信息中心", "中国"]
+    var correctSplit_8 = ["你好45", "yahoo", "com"]
+    var spliEmails:[Any] {
+        return [correctSplit_0, correctSplit_1, correctSplit_2, correctSplit_3, correctSplit_4, correctSplit_5, correctSplit_6, correctSplit_7, correctSplit_8]
+    }
         
-        func testSplitMailAddress(){
-            for (i, email) in validEmails.enumerated(){
-                let arr = (email.splitAddress())
-                XCTAssertNotNil(arr)
-                for (j, _) in arr.enumerated()
-                {
-                    let array = spliEmails[i] as? [String]
-                    XCTAssertEqual(arr[j], array?[j])
-                }
+    func testSplitMailAddress(){
+        for (i, email) in validEmails.enumerated(){
+            let arr = (email.splitAddress())
+            XCTAssertNotNil(arr)
+            for (j, _) in arr.enumerated()
+            {
+                let array = spliEmails[i] as? [String]
+                XCTAssertEqual(arr[j], array?[j])
             }
         }
+    }
         
-        var finalTestEMailIdentity = ["alice.bob", "test", "test", "你好", "test", "你好", "Rδοκιμή", "管理员", "你好45"]
-        func testGetMailIdentity(){
-            for (i, email) in validEmails.enumerated(){
-                let arr = (email.getLocalMailIdentity())
-                XCTAssertNotNil(arr)
-                XCTAssertEqual(arr, finalTestEMailIdentity[i])
-            }
+    var finalTestEMailIdentity = ["alice.bob", "test", "test", "你好", "test", "你好", "Rδοκιμή", "管理员", "你好45"]
+    func testGetMailIdentity(){
+        for (i, email) in validEmails.enumerated(){
+            let arr = (email.getLocalMailIdentity())
+            XCTAssertNotNil(arr)
+            XCTAssertEqual(arr, finalTestEMailIdentity[i])
         }
+    }
         
-        var eMailSubDomain_0 = ["moep", "blubb"]
-        var eMailSubDomain_1 = ["παράδειγμα"]
-        var eMailSubDomain_2 = ["中国互联网络信息中心"]
-        var eMailSubDomain_3 = ["google", "co"]
-        func testGetSubdomains(){
-            let arr_0 = validEmails[0].getSubdomains()
-            XCTAssertNotNil(arr_0)
-            XCTAssertEqual(arr_0[0], eMailSubDomain_0[0])
-            XCTAssertEqual(arr_0[1], eMailSubDomain_0[1])
-            
-            let arr_1 = validEmails[6].getSubdomains()
-            XCTAssertNotNil(arr_1)
-            XCTAssertEqual(arr_1[0], eMailSubDomain_1[0])
-            
-            let arr_2 = validEmails[7].getSubdomains()
-            XCTAssertNotNil(arr_2)
-            XCTAssertEqual(arr_2[0], eMailSubDomain_2[0])
+    var eMailSubDomain_0 = ["moep", "blubb"]
+    var eMailSubDomain_1 = ["παράδειγμα"]
+    var eMailSubDomain_2 = ["中国互联网络信息中心"]
+    var eMailSubDomain_3 = ["google", "co"]
+    func testGetSubdomains(){
+        let arr_0 = validEmails[0].getSubdomains()
+        XCTAssertNotNil(arr_0)
+        XCTAssertEqual(arr_0[0], eMailSubDomain_0[0])
+        XCTAssertEqual(arr_0[1], eMailSubDomain_0[1])
+        
+        let arr_1 = validEmails[6].getSubdomains()
+        XCTAssertNotNil(arr_1)
+        XCTAssertEqual(arr_1[0], eMailSubDomain_1[0])
             
-            let arr_3 = validEmails[2].getSubdomains()
-            XCTAssertNotNil(arr_3)
-            XCTAssertEqual(arr_3[0], eMailSubDomain_3[0])
-            XCTAssertEqual(arr_3[1], eMailSubDomain_3[1])
-        }
+        let arr_2 = validEmails[7].getSubdomains()
+        XCTAssertNotNil(arr_2)
+        XCTAssertEqual(arr_2[0], eMailSubDomain_2[0])
         
-        var finalTestEMailDomain = ["de", "com", "uk", "com", "org", "org", "δοκιμή", "中国", "com"]
-        func testGetDomain(){
-            for (i, email) in validEmails.enumerated(){
-                let arr = (email.getDomain())
-                XCTAssertNotNil(arr)
-                XCTAssertEqual(arr, finalTestEMailDomain[i])
-            }
+        let arr_3 = validEmails[2].getSubdomains()
+        XCTAssertNotNil(arr_3)
+        XCTAssertEqual(arr_3[0], eMailSubDomain_3[0])
+        XCTAssertEqual(arr_3[1], eMailSubDomain_3[1])
+    }
+    
+    var finalTestEMailDomain = ["de", "com", "uk", "com", "org", "org", "δοκιμή", "中国", "com"]
+    func testGetDomain(){
+        for (i, email) in validEmails.enumerated(){
+            let arr = (email.getDomain())
+            XCTAssertNotNil(arr)
+            XCTAssertEqual(arr, finalTestEMailDomain[i])
         }
     }
+        
+    func testTextFindMailAddress() {
+        let arr = TestText.findMailAddress()
+        XCTAssertNotNil(arr)
+        XCTAssertEqual(arr[0], finalMailAddresses[0])
+        XCTAssertEqual(arr[1], finalMailAddresses[1])
+    }
+    
+    func testGetMailDomain() {
+        XCTAssertEqual("test@google.com".getMailDomains(), "google")
+        XCTAssertEqual("test@google.co.uk".getMailDomains(), "google.co")
+    }
+}
+
diff --git a/enzevalos_iphoneTests/phishing/MailComparisonTests.swift b/enzevalos_iphoneTests/phishing/MailComparisonTests.swift
index 5885406ca658a19e4a0e5fecdbffe00c3ef5e03c..e7b28cc4a614215211b09623a30c21f4fe4c20c0 100644
--- a/enzevalos_iphoneTests/phishing/MailComparisonTests.swift
+++ b/enzevalos_iphoneTests/phishing/MailComparisonTests.swift
@@ -54,41 +54,41 @@ class MailComparisonTests: XCTestCase {
      Code
      ******************/
     @NSManaged public var contact: EnzevalosContact
-       public func compareSenderToContacts(_ mail: PersistentMail? ) -> String {
-        let senderAddress = mail?.from.mailAddress
+    public func compareSenderToContacts(_ mail: PersistentMail? ) -> String {
+    let senderAddress = mail?.from.mailAddress
         
-        // 1. ich will wissen, ob der sender bekannt ist, deshalb erst einmal equal test mit sender und kontaktbuch durch cncontact
+    // 1. ich will wissen, ob der sender bekannt ist, deshalb erst einmal equal test mit sender und kontaktbuch durch cncontact
         
-        let contacts = datahandler.getContacts()
-        for cont in contacts{
-            let addr = mail?.from.contact?.cnContact
-            if addr != nil{
-                return "is a contact"
-            }
-            if cont.isAddress(mailadr: senderAddress!){
-                return "send mails before"
-            }
+    let contacts = datahandler.getContacts()
+    for cont in contacts{
+        let addr = mail?.from.contact?.cnContact
+        if addr != nil{
+            return "is a contact"
         }
-        
-        // 2. ich will wissen, ob der sender schon eine mail geschickt hat, wenn nicht im kontaktbuch, deshalb vergleich mit contact
-        let knownMailAddresses = contact.getMailAddresses()
-        for knownAddress in knownMailAddresses{
-            if knownAddress.mailAddress == senderAddress{
-                return "has alrady send an email"
-            }
-            
+        if cont.isAddress(mailadr: senderAddress!){
+            return "send mails before"
         }
-        /*
-        if mail?.from.contact?.getMailAddresses() == senderAddress{
+    }
+        
+    // 2. ich will wissen, ob der sender schon eine mail geschickt hat, wenn nicht im kontaktbuch, deshalb vergleich mit contact
+    let knownMailAddresses = contact.getMailAddresses()
+    for knownAddress in knownMailAddresses{
+        if knownAddress.mailAddress == senderAddress{
             return "has alrady send an email"
-        }*/
-        // 3. ich will wissen, ob wenn der sender unbekannt, eine ähnliche mailaddresse schon einmal ankam
+        }
         
-         return "false"
-       }
- /**************
+    }
+    /*
+    if mail?.from.contact?.getMailAddresses() == senderAddress{
+        return "has alrady send an email"
+    }*/
+    // 3. ich will wissen, ob wenn der sender unbekannt, eine ähnliche mailaddresse schon einmal ankam
+        return "false"
+    }
+/**************
      End Code
      ****************/
+    
     func createAddressBook(){
         let _ =  datahandler.getContactByMCOAddress(address: user)
     }
diff --git a/enzevalos_iphoneTests/phishing/UrlStringExtensionTests.swift b/enzevalos_iphoneTests/phishing/UrlStringExtensionTests.swift
index 8bcabf7dc73b30376b1c1a47ae5734baebccb684..d8003858130227ec51a84f248b3a93f0815fe968 100644
--- a/enzevalos_iphoneTests/phishing/UrlStringExtensionTests.swift
+++ b/enzevalos_iphoneTests/phishing/UrlStringExtensionTests.swift
@@ -10,13 +10,26 @@ import XCTest
 
 class UrlStringExtensionTests: XCTestCase {
     
+    // Setup for Critical Pattern of a Root Domain
+    var testMailText = "https://git.imp.fu-berlin.de/enzevalos/enzevalos_iphone/issues/240http:// www.google.de http://nljbjkjk.de https://www.w3schools.com https://www.w2schools.com https://www.w8schools.com  https://www.w33schools.com https://www.w22schools.com https://www.w99schools.eu.com https://git.imp.fu-ber_lin.de/enzevalos/enzevalos_iphone/issues/240 http://www.google-.de http://nljbj#kjk.de https://www.3schools.com https://www.w2sc..hools.com https://www.w8sch?ools.com https://www.w33sc_hools.com  https://www.w22schooIs.com  https://www.W99schools$.com"
+    var vaildRD = ["fu-berlin.de", "google.de", "nljbjkjk.de", "w3schools.com", "w2schools.com", "w8schools.com", "w33schools.com", "w22schools.com", "w99schools.eu.com", "3schools.com"]
+    // Setup for get second level doamin of URL
+    var finalSLD = ["fu-berlin", "google", "nljbjkjk", "w3schools", "w2schools", "w8schools", "w33schools", "w22schools", "w99schools"]
+    // Setup for get root domein of URL
+    var testmailURL = "https://git.imp.fu-ber_lin.de/enzevalos/enzevalos_iphone/issues/240 http://www.google-.de http://nljbj#kjk.de https://www.3schools.com https://www.w2sc..hools.com https://www.w8sch?ools.com https://www.w33sc_hools.com  https://www.w22schooIs.com  https://www.W99schools$.com https://git.imp.fu-berlin.de/enzevalos/enzevalos_iphone/issues/240 http://www.google.de http://nljbjkjk.de https://www.w3schools.com https://www.w2schools.com https://www.w8schools.com  https://www.w33schools.com https://www.w22schools.com https://www.w99schools.eu.com bob.alice@zedat.fu-berlin.de https://git.imp.fu-berlin.de/enzevalos/enzevalos_iphone/issues/240 www.google.de kljhl@hjkghgkhj.com nljbjkjk.de https://www.w3#schools.com/ https://www.w2schools.com/ https://www.w8schools.com/ https://www.w33schools.com/ https://www.w22schools.com/ https://www.w99schools.com/ 你好@yahoo.com test@莎士比亚.org 你好@莎士比亚.org Rδοκιμή@παράδειγμα.δοκιμή 管理员@中国互联网络信息中心.中国 你好@yahoo.com test@莎士比亚.org 你好@莎士比亚.org"
+    var finalRD = ["fu-berlin.de", "google.de", "nljbjkjk.de", "w3schools.com", "w2schools.com", "w8schools.com", "w33schools.com", "w22schools.com", "w99schools.com"]
+    
+    // Setup for critical pattern of a root domain
+    var testmail = "fu-ber_lin.de google-.de nljbj#kjk.de 3schools.com w2sc..hools.com w8sch?ools.com w33sc_hools.com w22schooIs.com W99schools$.com fu-berlin.de google.de nljbjkjk.de w3schools.com w2schools.com w8schools.com w33schools.com w22schools.com w99schools.eu.com bob.alice@zedat.fu-berlin.de git.imp.fu-berlin.de google.de kljhl@hjkghgkhj.com nljbjkjk.de w3#schools.com w2schools.com w8schools.com w33schools.com w22schools.com w99schools.com 你好@yahoo.com test@莎士比亚.org 你好@莎士比亚.org Rδοκιμή@παράδειγμα.δοκιμή 管理员@中国互联网络信息中心.中国 你好@yahoo.com test@莎士比亚.org 你好@莎士比亚.org"
+    var finalunciticalrd = ["3schools.com", "fu-berlin.de", "google.de", "nljbjkjk.de", "w3schools.com", "w2schools.com", "w8schools.com", "w33schools.com", "w22schools.com", "w99schools.eu.com", "git.imp.fu-berlin.de", "google.de", "w2schools.com", "w8schools.com", "w33schools.com", "w22schools.com", "w99schools.com"]
+    
     //  General TestText for all (needs to simulate a body of text from which to extract specific Strings
     var TestText = "blabla moep jkjlkj lkjkljknmbjks llhil k. jhkhkih. huhuhj! fsdf bob.alice@zedat.fu-berlin.de dfsf. jhjknjknjkh https://git.imp.fu-berlin.de/enzevalos/enzevalos_iphone/issues/240  hjkhjkhkhn www.google.de kljhl@hjkghgkhj.com nljbjkjk.de url tag html mail <a href='https://www.w3schools.com'>Visit W3Schools</a> hjhkhiuhziu kjhkl <a href=\"https://www.w2schools.com\">Visit W2Schools</a>. lknljnlk. kmm /n lmölmpöl < a href=\"https://www.w8schools.com\">Visit W8Schools</a> gfg fghfghnhg <a      href=\"https://www.w33schools.com\">Visit W33Schools</a> nkjhjkhkjn,mn jnmnklmj j <a href=\"https://www.w22schools.com\">Visit W22Schools</ a> hghjcfgh hfgchnvhj vgjcgj cjghcj <a href=\"https://www.w99schools.com\">Visit W99Schools</a    >    你好@yahoo.com eewfve  test@莎士比亚.org    你好@莎士比亚.org  Rδοκιμή@παράδειγμα.δοκιμή or 管理员@中国互联网络信息中心.中国 你好45@yahoo.com"
     
-    //       setup for find URLs in text
+    // Setup for find URLs in text
     var finalURLs = ["https://git.imp.fu-berlin.de/enzevalos/enzevalos_iphone/issues/240", "http://www.google.de", "http://nljbjkjk.de", "https://www.w3schools.com", "https://www.w2schools.com", "https://www.w8schools.com", "https://www.w33schools.com", "https://www.w22schools.com", "https://www.w99schools.com"]
     
-    //    setup for tag tests
+    // Setup for tag tests
     var finalTestTextFindHtmlTags = ["<a href=\'https://www.w3schools.com\'>Visit W3Schools</a>", "<a href=\"https://www.w2schools.com\">Visit W2Schools</a>", "< a href=\"https://www.w8schools.com\">Visit W8Schools</a>", "<a      href=\"https://www.w33schools.com\">Visit W33Schools</a>", "<a href=\"https://www.w22schools.com\">Visit W22Schools</ a>", "<a href=\"https://www.w99schools.com\">Visit W99Schools</a    >"]
     
     var finalTestTextHtmlTagURL = ["https://www.w3schools.com", "https://www.w2schools.com", "https://www.w8schools.com", "https://www.w33schools.com", "https://www.w22schools.com", "https://www.w99schools.com"]
@@ -24,6 +37,7 @@ class UrlStringExtensionTests: XCTestCase {
     var finalTestTexthttpTagLinkName = ["Visit W3Schools", "Visit W2Schools", "Visit W8Schools", "Visit W33Schools", "Visit W22Schools", "Visit W99Schools"]
     
     var testUrl = "www.google.de"
+    var testURL2 = "https://www.mycampus.imp.fu-berlin.de/portal"
     
     override func setUp() {
         super.setUp()
@@ -79,4 +93,87 @@ class UrlStringExtensionTests: XCTestCase {
         XCTAssertNotNil(testUrl.url2ip())
         //It changes often therefore a direct comparisson is not useful
     }
+    
+    // Test get Root Domain
+    func testGetRD() {
+        let rd = testMailText.getRD()
+        print(rd)
+    }
+        
+    // Test get Second Level Domain
+    func testGetSLD(){
+        let sld = TestText.getSLD()
+        XCTAssertNotNil(sld)
+        XCTAssertEqual(sld[0], finalSLD[0])
+        XCTAssertEqual(sld[1], finalSLD[1])
+        XCTAssertEqual(sld[2], finalSLD[2])
+        XCTAssertEqual(sld[3], finalSLD[3])
+    }
+        
+    func testIsValidRD(){
+        let pattern = testMailText.isValidRD()
+        XCTAssertNotNil(pattern)
+        XCTAssertEqual(pattern[0], vaildRD[0])
+        XCTAssertEqual(pattern[1], vaildRD[1])
+        XCTAssertEqual(pattern[2], vaildRD[2])
+        XCTAssertEqual(pattern[3], vaildRD[3])
+        XCTAssertEqual(pattern[4], vaildRD[4])
+        XCTAssertEqual(pattern[5], vaildRD[5])
+        XCTAssertEqual(pattern[6], vaildRD[6])
+        XCTAssertEqual(pattern[7], vaildRD[7])
+        XCTAssertEqual(pattern[8], vaildRD[8])
+        XCTAssertEqual(pattern[9], vaildRD[9])
+    }
+    
+    func testCompareURL() {
+        let url = "www.google.com"
+        let urls = ["www.googIe.com/klsdkhl", "https://www.google.com/maps?client=safari&sxsrf=", "www.gogle.com", "www.google.de", "www.outlook.com"]
+        XCTAssertFalse(url.compareURLs(urls: urls))
+    }
+    
+    func testcompareURLsDic(){
+        let url = "www.google.com"
+        let urls = ["www.googIe.com/klsdkhl", "https://www.google.com/maps?client=safari&sxsrf=", "www.gogle.com", "www.google.de", "www.outlook.com"]
+        print("resultlist:", url.compareURLsDic(urls: urls))
+    }
+    
+    func testCompareURLWithSLDList() {
+        let url = "www.google.com"
+        let domains = ["googIe", "google", "gogle", "gooGle", "gle", "glllll"]
+        XCTAssertFalse(url.compareURLWithSLDList(domains: domains))
+    }
+    
+    func testIsAllowedDistance() {
+        let str = "google"
+        // #distance:      0         1        2         3         4       <
+        let strArray = ["google", "googIe", "gogIe", "gooogIIe", "go", "amazon"]
+        XCTAssertTrue(str.isAllowedDistance(str: strArray[0], allowedEditDistance: 4))
+        XCTAssertFalse(str.isAllowedDistance(str: strArray[1], allowedEditDistance: 4))
+        XCTAssertFalse(str.isAllowedDistance(str: strArray[2], allowedEditDistance: 4))
+        XCTAssertFalse(str.isAllowedDistance(str: strArray[3], allowedEditDistance: 6))
+        XCTAssertTrue(str.isAllowedDistance(str: strArray[4], allowedEditDistance: 4))
+        XCTAssertTrue(str.isAllowedDistance(str: strArray[5], allowedEditDistance: 4))
+    }
+    
+    func testLevenshtein(){
+        let str1 = "hallo"
+        let str2 = "hlalo"
+        let str3 = "haloo"
+        let str4 = "halo"
+        let str5 = "halllo"
+        let str6 = "halol"
+        let edd1 = str1.levenshtein(str2)
+        let edd2 = str1.levenshtein(str3)
+        let edd3 = str1.levenshtein(str4)
+        let edd4 = str1.levenshtein(str5)
+        let edd5 = str1.levenshtein(str6)
+    
+        print("editdistance transposition:", edd1)
+        print("editdistance substitution:", edd2)
+        print("editdistance deletion:",edd3)
+        print("editdistance insertion:",edd4)
+        print("editdistance transposition at the end:", edd5)
+    }
+
 }
+