Example #1
0
        void GetDefaultTerminationSymbol(AlphabetsTypes option)
        {
            IAlphabet      alphabetInstance = null;
            byte           outputDefaultTerminationSymbol = 0;
            HashSet <byte> outputTerminationSymbol        = new HashSet <byte>();
            string         outputTerminationString        = "";

            switch (option)
            {
            case AlphabetsTypes.Protein:
                alphabetInstance = ProteinAlphabet.Instance;
                break;

            case AlphabetsTypes.Rna:
                alphabetInstance = RnaAlphabet.Instance;
                break;

            case AlphabetsTypes.Dna:
                alphabetInstance = DnaAlphabet.Instance;
                break;
            }

            if (option.Equals(AlphabetsTypes.Protein))
            {
                Assert.AreEqual(true, alphabetInstance.TryGetDefaultTerminationSymbol(out outputDefaultTerminationSymbol));
                Assert.AreEqual(true, alphabetInstance.TryGetTerminationSymbols(out outputTerminationSymbol));
                outputTerminationString = new string(outputTerminationSymbol.Select(a => (char)a).ToArray());
                Assert.AreEqual('*', (char)outputDefaultTerminationSymbol);
                Assert.AreEqual("*", outputTerminationString);
            }
            else
            {
                Assert.AreEqual(false, alphabetInstance.TryGetDefaultTerminationSymbol(out outputDefaultTerminationSymbol));
                Assert.AreEqual(false, alphabetInstance.TryGetTerminationSymbols(out outputTerminationSymbol));
            }

            ApplicationLog.WriteLine(string.Concat("Alphabets BVT: Validation of Get Default termination symbol for",
                                                   option, " completed successfully."));
        }
        /// <summary>
        /// This returns true/false if the given symbol value is considered a termination
        /// value in the alphabet.
        /// </summary>
        /// <param name="alphabet">Alphabet to test</param>
        /// <param name="value">Value to check</param>
        /// <returns>True if value is a termination symbol, false if terminations are not supported or value is not.</returns>
        public static bool CheckIsTermination(this IAlphabet alphabet, byte value)
        {
            if (alphabet == null)
            {
                throw new ArgumentNullException("alphabet", "Alphabet must be supplied.");
            }

            // Not supported?
            if (!alphabet.HasTerminations)
            {
                return(false);
            }

            // Get the termination set and return true/false on match.
            HashSet <byte> symbols;

            return(alphabet.TryGetTerminationSymbols(out symbols) &&
                   symbols.Contains(value));
        }