public async Task ReadMultipleFromFileAsync_ShouldRejectNullPath()
 {
     _ = await SequenceFileReader.ReadMultipleFromFileAsync(null);
 }
Ejemplo n.º 2
0
        private void OpenCommandExecuted(object sender, ExecutedRoutedEventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Title       = "Load sequence files";
            ofd.Multiselect = true;
            bool?success = ofd.ShowDialog();

            if (success.Value)
            {
                //x.Start();
                Alignment   currentAlignment = (Alignment)DataContext;
                ReturnCodes returnCode       = ReturnCodes.OK;
                List <Tuple <string, int, ReturnCodes> > fileErrors;
                bool append = false;
                //x.Stop(); MessageBox.Show("Time to initialize varaibles was " + x.ElapsedMilliseconds + " ms."); Environment.Exit(1);

                if (currentAlignment.NumberMacromolecules > 0)
                {
                    MessageBoxResult appendChoice = MessageBox.Show("Do you want to append these sequences to the current alignment?", "", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);

                    switch (appendChoice)
                    {
                    case MessageBoxResult.Yes:
                        // User wants to append.
                        append = true;
                        break;

                    case MessageBoxResult.No:
                        // User doesn't want to append.
                        append = false;

                        bool cancelAction;
                        CheckToSaveChanges(out cancelAction);
                        if (cancelAction)
                        {
                            // User wants to cancel opening the file
                            return;
                        }
                        break;

                    case MessageBoxResult.Cancel:
                        // User wants to cancel opening the file.
                        return;
                    }
                }

                returnCode = SequenceFileReader.LoadSequencesFromFiles(ref currentAlignment, append, ofd.FileNames, out fileErrors);

                if (returnCode == ReturnCodes.FileErrors)
                {
                    StringBuilder errorMessage = new StringBuilder();

                    errorMessage.AppendLine("The program encountered an error loading your sequence(s):");

                    foreach (Tuple <string, int, ReturnCodes> fileError in fileErrors)
                    {
                        string      fileName  = fileError.Item1;
                        int         numSeq    = fileError.Item2;
                        ReturnCodes errorCode = fileError.Item3;
                        errorMessage.Append(' ', 4);
                        errorMessage.Append(fileName);

                        switch (errorCode)
                        {
                        case ReturnCodes.EmptySequencesRemoved:
                            errorMessage.Append(" had empty sequences removed; ");
                            errorMessage.AppendFormat("{0} loaded.", numSeq);
                            break;

                        case ReturnCodes.FileNotFound:
                            errorMessage.Append(" could not be found or was inaccessible.");
                            break;

                        case ReturnCodes.NoNonEmptySequencesInFile:
                            errorMessage.Append(" contained only empty sequences.");
                            break;

                        case ReturnCodes.NoSequencesInFile:
                            errorMessage.Append(" was a recognized type, but contained no sequences.");
                            break;

                        case ReturnCodes.UnrecognizedFileType:
                            errorMessage.Append(" was not a recognized file type.");
                            break;

                        case ReturnCodes.IOException:
                            errorMessage.Append(" threw an unspecified IO error.");
                            break;

                        case ReturnCodes.MixedToNA:
                            errorMessage.Append("Some sequences were detected as protein, but since most loaded were detected as NA, they were forced to be NA; ");
                            errorMessage.AppendFormat("{0} sequences were affected.", numSeq);
                            break;

                        case ReturnCodes.MixedToProtein:
                            errorMessage.Append("Some sequences were detected as NA, but since most loaded were detected as protein, they were forced to be protein; ");
                            errorMessage.AppendFormat("{0} sequences were affected.", numSeq);
                            break;
                        }
                        errorMessage.AppendLine();
                    }
                    ErrorWindow error = new ErrorWindow();
                    error.DataContext = errorMessage.ToString();
                    error.Owner       = this;
                    error.ShowDialog();
                }
            }
        }
 public void ReadMultipleFromFile_ShouldRejectNullPath()
 {
     _ = SequenceFileReader.ReadMultipleFromFile(null);
 }