public void Match_AdvancedExistingKey_ReturnValue() { var statusLookup = new StatusLookup(); statusLookup.Load(); var status = statusLookup.Match(0); Assert.That(status, Is.EqualTo("Currently waiting that you do something")); }
public static async Task <DBlocalContact> didScanBarcode(string barcode_, string symbology, StatusLookup callback) { if (callback == null) { throw new ArgumentNullException("Callback must not be null to handle result"); } var barcode = barcode_.Trim(); DBlocalContact temporaryContact = null; if (symbology == "QR") { if (!OfflineLogic.isBarcodeValid(barcode)) { throw new InvalidOperationException("The QR code cannot be used by BoaBee because it is not a contact or an ID."); } else if (barcode.Contains("BEGIN:VCARD")) { //VCard temporaryContact = OfflineLogic.parseAsVCard(barcode); } else if (barcode.StartsWith("[[") && barcode.EndsWith("]]")) { //Artexis temporaryContact = OfflineLogic.parseAsArtexis(barcode); } else { //unknown format temporaryContact = new DBlocalContact(); temporaryContact.uid = barcode; } } else { //unknown format temporaryContact = new DBlocalContact(); temporaryContact.uid = barcode; } DBAppSettings appSettings = DBLocalDataStore.GetInstance().GetAppSettings(); if (appSettings == null) { appSettings = new DBAppSettings(); appSettings.instantContactCheck = true; DBLocalDataStore.GetInstance().SetAppSettings(appSettings); } string message = string.Empty; if (appSettings.instantContactCheck) { var localContact = DBLocalDataStore.GetInstance().GetLocalContactsByUID(temporaryContact.uid); if (localContact != null) { temporaryContact &= localContact; temporaryContact.Id = localContact.Id; } if (await Reachability.isConnected()) { try { int timeout = 10000; var timeoutCancellationTokenSource = new CancellationTokenSource(); var timeoutTask = Task.Delay(timeout, timeoutCancellationTokenSource.Token); var task = NetworkRequests.contactLookup(temporaryContact.uid); DBlocalContact serverContact = null; if (await Task.WhenAny(task, timeoutTask) == task) { // Task completed within timeout. // Consider that the task may have faulted or been canceled. // We re-await the task so that any exceptions/cancellation is rethrown. timeoutCancellationTokenSource.Cancel(); serverContact = await task; if (serverContact != null) { if (serverContact.hasOnlyUID() || serverContact.hasOnlyUIDAndName()) { message = "Check for additional contact details can't be executed at this moment. More details will be added to your report if available."; } else { message = "These are the details we have found for you. Feel free to complete the rest below."; } } else { message = "Check for additional contact details can't be executed at this moment. More details will be added to your report if available."; } Console.Error.WriteLine("Server has contact: {0}", serverContact != null); } else { // timeout/cancellation logic message = "Check for additional contact details can't be executed at this moment. More details will be added to your report if available."; Console.Error.WriteLine("Timed out"); } temporaryContact *= serverContact; } catch (Exception e) { message = "Check for additional contact details can't be executed at this moment. More details will be added to your report if available."; Console.Error.WriteLine("contactLookup exception: {0}", e.Message); } } else { message = "Check for additional contact details can't be executed at this moment. More details will be added to your report if available."; } } else { message = "Instant contact checking is turned off"; } callback(message); return(temporaryContact); }