diff --git a/enzevalos_iphone/DataHandler.swift b/enzevalos_iphone/DataHandler.swift
index c0556cbda925d11c84f388d911eca264e2f30cc7..8fce96f5da78a9ab42f6e41bb3dd00ed356fa5ba 100644
--- a/enzevalos_iphone/DataHandler.swift
+++ b/enzevalos_iphone/DataHandler.swift
@@ -301,7 +301,7 @@ class DataHandler {
         self.deleteNum("PersistentMail", type: "uid", search: uid)
     }
 
-    private func removeAll(entity: String) {
+    func removeAll(entity: String) {
         let DelAllReqVar = NSBatchDeleteRequest(fetchRequest: NSFetchRequest<NSFetchRequestResult>(entityName: entity))
         do {
             try managedObjectContext.execute(DelAllReqVar)
diff --git a/enzevalos_iphoneTests/GeneratedMocks.swift b/enzevalos_iphoneTests/GeneratedMocks.swift
index 7de07e547a9b233c1457df8580e49d97259214e3..0aa73f37563bb6ee16129097fb081ca9360e91eb 100644
--- a/enzevalos_iphoneTests/GeneratedMocks.swift
+++ b/enzevalos_iphoneTests/GeneratedMocks.swift
@@ -1,4 +1,4 @@
-// MARK: - Mocks generated from file: enzevalos_iphone/AuthenticationModel.swift at 2020-03-26 15:41:47 +0000
+// MARK: - Mocks generated from file: enzevalos_iphone/AuthenticationModel.swift at 2020-03-30 07:41:15 +0000
 
 //
 //  AuthenticationModel.swift
@@ -653,7 +653,7 @@ import Foundation
 }
 
 
-// MARK: - Mocks generated from file: enzevalos_iphone/AuthenticationViewModel.swift at 2020-03-26 15:41:47 +0000
+// MARK: - Mocks generated from file: enzevalos_iphone/AuthenticationViewModel.swift at 2020-03-30 07:41:15 +0000
 
 //
 //  AuthenticationViewModel.swift
diff --git a/enzevalos_iphoneTests/phishing/MailComparisonTests.swift b/enzevalos_iphoneTests/phishing/MailComparisonTests.swift
index 8edc149b2de6c245df171bb8610b791a64f61982..aef183e87dc81cae3ed88359460b9b38a5b75eda 100644
--- a/enzevalos_iphoneTests/phishing/MailComparisonTests.swift
+++ b/enzevalos_iphoneTests/phishing/MailComparisonTests.swift
@@ -2,19 +2,20 @@
 //
 import XCTest
 import Contacts
+//import Contacts
 @testable import enzevalos_iphone
 class MailComparisonTests: XCTestCase {
     let datahandler = DataHandler.handler
     let userAdr = "alice@example.com"
     let userName = "alice"
-    var user: MCOAddress = MCOAddress.init(mailbox: "alice@example.com")
+    var user: MCOAddress = MCOAddress.init(displayName: "alice", mailbox: "alice@example.com")
     let userAdr_1 = "bob@enzevalos.de"
     let userName_1 = "bob"
-    var user_1: MCOAddress =  MCOAddress.init(mailbox: "bob@enzevalos.de")
+    var user_1: MCOAddress =  MCOAddress.init(displayName: "bob", mailbox: "bob@enzevalos.de")
     let userAdr_2 = "carl@test.com"
     let userName_2 = "carl"
     var user_2: MCOAddress = MCOAddress.init(displayName: "Carl", mailbox: "carl@test.com")
-   
+
     override func setUp() {
         super.setUp()
         datahandler.reset()
@@ -46,71 +47,106 @@ class MailComparisonTests: XCTestCase {
      Code
      ******************/
     @NSManaged public var eContact: EnzevalosContact
-       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
-        
-        let enzContacts = datahandler.getContacts()
-        for contact in enzContacts {
-        if  contact.isAddress(mailadr: senderAddress!){
-            return "is a contact"
+    func countMatches(_ mailAddr: String, _ inboxMails: [PersistentMail]) -> Int {
+        var senders: [String] = []
+        for sender in inboxMails{
+            let sender: String = sender.from.mailAddress
+            senders.append(sender)
         }
-    
-        
-        
-        /*
-        for cont in contacts{
-            let addr = mail?.from.contact?.cnContact?.getMailAddresses()
-            if addr != nil{
-                return "is a contact"
-            }
-            if cont.isAddress(mailadr: senderAddress!){
-                return "send mails before"
+        var numberOfFoundMatches = 0
+        for addr in senders{
+            if addr == mailAddr{
+                numberOfFoundMatches += 1
+                if numberOfFoundMatches == 2{
+                    return numberOfFoundMatches
+                }
             }
         }
-         
-        
-        // 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"
+        return numberOfFoundMatches
+    }
+    public func compareSenderToContacts(_ mail: PersistentMail? ) -> String {
+        let senderAddress = mail?.from.mailAddress
+        // Case 1: Is the address of the sender in the address book?
+        let enzContacts = datahandler.getContacts()
+        for contact in enzContacts {
+            let contMailAddr = contact.cnContact?.getMailAddresses()
+            if contMailAddr != nil{
+                for mAddr in contMailAddr!{
+                    if mAddr.mailAddress == senderAddress {
+                        
+                        return "is a contact"
+                    }
+                }
             }
-            */
         }
-        /*
-        if mail?.from.contact?.getMailAddresses() == senderAddress{
+        // Case 2: Is the address of the sender known through previous mails?
+        let inboxMails = datahandler.getAllPersistentMails()
+        if countMatches(senderAddress!, inboxMails) > 1{
             return "has alrady send an email"
-        }*/
-        // 3. ich will wissen, ob wenn der sender unbekannt, eine ähnliche mailaddresse schon einmal ankam
+        }
+        // Case 3: The identity of an mail address is known, but not the (sub-)domain
         
-         return "false"
+         return "not known"
        }
  /**************
      End Code
      ****************/
-    func createAddressBook(){
-        datahandler.reset()
-        _ = datahandler.getContactByMCOAddress(address: user)
-        datahandler.save(during: "createAddressBook")
+    @NSManaged public var addresses: NSSet
+    
+    private func createAddressBook(_ senders: [MCOAddress]) {
+        for sender in senders {
+            let con = CNMutableContact()
+            let value = sender.mailbox! as AnyObject
+            
+            let name = sender.displayName
+            let nameArray = name!.split(separator: " ").map(String.init)
+            con.givenName = nameArray.first!
+            con.emailAddresses.append(CNLabeledValue(label: CNLabelOther, value: value as! NSString))
+            // Saving the newly created contact
+            let store = CNContactStore()
+            let saveRequest = CNSaveRequest()
+            saveRequest.add(con, toContainerWithIdentifier:nil)
+            try! store.execute(saveRequest)
+        }
+        
+    }
+    private func resetAddressBook(_ senders: [MCOAddress]) {
+        for sender in senders {
+            do {
+                let name = sender.displayName!
+                let predicate = CNContact.predicateForContacts(matchingName: name)
+                let store = CNContactStore()
+                let contacts = try store.unifiedContacts(matching: predicate,keysToFetch: [CNContactGivenNameKey as CNKeyDescriptor, CNContactFamilyNameKey as CNKeyDescriptor, CNContactImageDataKey as CNKeyDescriptor])
+                guard contacts.count > 0, let selectedContact = contacts.first  else { throw Error.self as! Error }
+             
+                let request = CNSaveRequest()
+                let mutableContact = selectedContact.mutableCopy() as! CNMutableContact
+                request.delete(mutableContact)
+                try store.execute(request)
+
+            } catch { }
+            
+        }
+        
     }
     
     func testCompareSenderToContacts () {
-        createAddressBook()
         let mail_1 = testMail(from: user, to: [], cc: [], bcc: [])
         let mail_2 = testMail(from: user_1, to: [], cc: [], bcc: [])
         let mail_3 = testMail(from: user_2, to: [], cc: [], bcc: [])
         let mail_4 = testMail(from: user_2, to: [], cc: [], bcc: [])
+        
         let mailsInInbox: [PersistentMail] = [mail_1!, mail_2!, mail_3!, mail_4!]
+        
+        
+        createAddressBook([user])
+        
         XCTAssertEqual("is a contact", compareSenderToContacts(mailsInInbox[0]))
-        XCTAssertEqual("false", compareSenderToContacts(mailsInInbox[1]))
-//        XCTAssertEqual("has alrady send an email", compareSenderToContacts(mailsInInbox[2]))
-//        XCTAssertEqual("false", compareSenderToContacts(mail_2))
-
-        XCTAssertNotEqual(testMail(from: user, to: [], cc: [], bcc: [])?.from.contact?.cnContact?.getMailAddresses().count, 0 )
-        XCTAssertTrue((testMail(from: user, to: [], cc: [], bcc: [])?.from.contact?.isAddress(mailadr: userAdr))!)
-        XCTAssertTrue((testMail(from: user_1, to: [], cc: [], bcc: [])?.from.contact?.isAddress(mailadr: userAdr_1))!)
+        XCTAssertEqual("not known", compareSenderToContacts(mailsInInbox[1]))
+        XCTAssertEqual("has alrady send an email", compareSenderToContacts(mailsInInbox[2]))
         
+        // The created user has to be deleted after the test
+        resetAddressBook([user])
+
     }
 }