Beispiel #1
0
        public void NonNumber()
        {
            CharBuffer buffer = CharBuffer.FromString("H3");

            Assert.AreEqual(buffer.GetNumber(), -1);
            Assert.AreEqual(buffer.NextChar, 'H');
        }
Beispiel #2
0
        public void NoHCount()
        {
            CharBuffer buffer = CharBuffer.FromString("-1");

            Assert.AreEqual(Parser.ReadHydrogens(buffer), 0);
            Assert.IsTrue(buffer.NextIs('-'));
        }
Beispiel #3
0
 public void Length()
 {
     Assert.AreEqual(CharBuffer.FromString("").Length, 0);
     Assert.AreEqual(CharBuffer.FromString(".").Length, 1);
     Assert.AreEqual(CharBuffer.FromString("..").Length, 2);
     Assert.AreEqual(CharBuffer.FromString("...").Length, 3);
 }
        public void NoCharge()
        {
            CharBuffer buffer = CharBuffer.FromString(":");

            Assert.AreEqual(Parser.ReadCharge(buffer), 0);
            Assert.IsTrue(buffer.NextIs(':'));
        }
Beispiel #5
0
 public void Read()
 {
     foreach (var config in Configuration.Values)
     {
         Assert.AreEqual(config,
                         Configuration.Read(CharBuffer.FromString(config.Symbol)));
     }
 }
Beispiel #6
0
        public void GetSingleDigitNumber()
        {
            Assert.AreEqual(CharBuffer.FromString("1").GetNumber(), 1);
            CharBuffer buffer = CharBuffer.FromString("2C");

            Assert.AreEqual(buffer.GetNumber(), 2);
            Assert.AreEqual(buffer.NextChar, 'C');
        }
Beispiel #7
0
        public void EndOfBufferHasNoneRemaining()
        {
            CharBuffer buffer = CharBuffer.FromString("-");

            Assert.IsTrue(buffer.HasRemaining());
            buffer.Get();
            Assert.IsFalse(buffer.HasRemaining());
        }
Beispiel #8
0
        public void GetNumberWithLeadingZeros()
        {
            Assert.AreEqual(CharBuffer.FromString("0002").GetNumber(), 2);
            CharBuffer buffer = CharBuffer.FromString("002H");

            Assert.AreEqual(buffer.GetNumber(), 2);
            Assert.AreEqual(buffer.NextChar, 'H');
        }
Beispiel #9
0
        public void GetTwoDigitNumber()
        {
            Assert.AreEqual(CharBuffer.FromString("12").GetNumber(), 12);
            CharBuffer buffer = CharBuffer.FromString("20C");

            Assert.AreEqual(buffer.GetNumber(), 20);
            Assert.AreEqual(buffer.NextChar, 'C');
        }
Beispiel #10
0
        public void GetThreeDigitNumber()
        {
            Assert.AreEqual(CharBuffer.FromString("123").GetNumber(), 123);
            CharBuffer buffer = CharBuffer.FromString("212C");

            Assert.AreEqual(buffer.GetNumber(), 212);
            Assert.AreEqual(buffer.NextChar, 'C');
        }
Beispiel #11
0
        public void GetProgressesPosition()
        {
            CharBuffer buffer = CharBuffer.FromString("abcd");

            Assert.AreEqual(buffer.Get(), 'a');
            Assert.AreEqual(buffer.Get(), 'b');
            Assert.AreEqual(buffer.Get(), 'c');
            Assert.AreEqual(buffer.Get(), 'd');
        }
Beispiel #12
0
        public void GetAsDigit()
        {
            CharBuffer buffer = CharBuffer.FromString("c1");

            Assert.IsFalse(buffer.NextIsDigit());
            Assert.AreEqual(buffer.Get(), 'c');
            Assert.IsTrue(buffer.NextIsDigit());
            Assert.AreEqual(buffer.GetAsDigit(), 1);
            Assert.IsFalse(buffer.NextIsDigit());
        }
Beispiel #13
0
        public void Position()
        {
            Assert.AreEqual(CharBuffer.FromString("").Position, 0);
            CharBuffer buffer = CharBuffer.FromString("...");

            Assert.AreEqual(buffer.Position, 0);
            Assert.AreEqual(buffer.Get(), '.');
            Assert.AreEqual(buffer.Position, 1);
            Assert.AreEqual(buffer.Get(), '.');
            Assert.AreEqual(buffer.Position, 2);
            Assert.AreEqual(buffer.Get(), '.');
            Assert.AreEqual(buffer.Position, 3);
        }
Beispiel #14
0
        public static Graph Parse(string smi, bool strict, ISet <string> warnings)
        {
            if (smi == null)
            {
                throw new ArgumentNullException("no SMILES provided");
            }
            var parser = new Parser(CharBuffer.FromString(smi), strict);

            foreach (var warning in parser.Warnings())
            {
                warnings.Add(warning);
            }
            return(parser.Molecule());
        }
Beispiel #15
0
        /// <summary>
        /// Convenience method to create a graph from a provided SMILES string.
        /// </summary>
        /// <param name="smi">string containing SMILES line notation</param>.
        /// <returns>graph instance from the SMILES</returns>
        /// <exception cref="InvalidSmilesException">if there was a syntax error while parsing the SMILES.</exception>
        public static Graph FromSmiles(string smi)
        {
            if (smi == null)
            {
                throw new ArgumentNullException(nameof(smi), "no SMILES provided");
            }
            var parser = new Parser(CharBuffer.FromString(smi), false);

            foreach (var warn in parser.Warnings())
            {
                foreach (var line in warn.Split('\n'))
                {
                    Console.Error.WriteLine($"SMILES Warning: {line}");
                }
            }
            return(parser.Molecule());
        }
Beispiel #16
0
        public void NextDoesNotProgressPosition()
        {
            CharBuffer buffer = CharBuffer.FromString("abcd");

            Assert.AreEqual(buffer.NextChar, 'a');
            Assert.AreEqual(buffer.Position, 0);
            Assert.AreEqual(buffer.NextChar, 'a');
            Assert.AreEqual(buffer.Position, 0);
            Assert.AreEqual(buffer.NextChar, 'a');
            Assert.AreEqual(buffer.Position, 0);
            Assert.AreEqual(buffer.NextChar, 'a');
            Assert.AreEqual(buffer.Position, 0);
            buffer.Get();
            Assert.AreEqual(buffer.Position, 1);
            Assert.AreEqual(buffer.NextChar, 'b');
            Assert.AreEqual(buffer.Position, 1);
            Assert.AreEqual(buffer.NextChar, 'b');
        }
Beispiel #17
0
        public void NextIs()
        {
            CharBuffer buffer = CharBuffer.FromString("[C@H]");

            Assert.IsFalse(buffer.NextIs('C'));
            Assert.IsFalse(buffer.NextIs('@'));
            Assert.IsFalse(buffer.NextIs('H'));
            Assert.IsFalse(buffer.NextIs(']'));
            Assert.IsTrue(buffer.NextIs('['));
            Assert.AreEqual(buffer.Get(), '[');

            Assert.IsFalse(buffer.NextIs('['));
            Assert.IsFalse(buffer.NextIs('@'));
            Assert.IsFalse(buffer.NextIs('H'));
            Assert.IsFalse(buffer.NextIs(']'));
            Assert.IsTrue(buffer.NextIs('C'));
            Assert.AreEqual(buffer.Get(), 'C');

            Assert.IsFalse(buffer.NextIs('['));
            Assert.IsFalse(buffer.NextIs('C'));
            Assert.IsFalse(buffer.NextIs('H'));
            Assert.IsFalse(buffer.NextIs(']'));
            Assert.IsTrue(buffer.NextIs('@'));
            Assert.AreEqual(buffer.Get(), '@');

            Assert.IsFalse(buffer.NextIs('['));
            Assert.IsFalse(buffer.NextIs('C'));
            Assert.IsFalse(buffer.NextIs('@'));
            Assert.IsFalse(buffer.NextIs(']'));
            Assert.IsTrue(buffer.NextIs('H'));
            Assert.AreEqual(buffer.Get(), 'H');

            Assert.IsFalse(buffer.NextIs('['));
            Assert.IsFalse(buffer.NextIs('C'));
            Assert.IsFalse(buffer.NextIs('@'));
            Assert.IsFalse(buffer.NextIs('H'));
            Assert.IsTrue(buffer.NextIs(']'));
            Assert.AreEqual(buffer.Get(), ']');
        }
Beispiel #18
0
 public void GetThreeDigitNumber_2DigitsOnly()
 {
     Assert.AreEqual(CharBuffer.FromString("123").GetNumber(2), 12);
 }
Beispiel #19
0
 /// <summary>
 /// Create a new (loose) parser for the specified string.
 /// </summary>
 /// <param name="str">SMILES string</param>
 /// <exception cref="InvalidSmilesException">thrown if the SMILES could not be parsed</exception>
 public Parser(string str)
     : this(CharBuffer.FromString(str), false)
 {
 }
Beispiel #20
0
 /// <summary>
 /// Strict parsing of the provided SMILES string. The strict parser will
 /// throw more exceptions for unusual input.
 /// </summary>
 /// <param name="str">the SMILES string to process</param>
 /// <returns>a graph created with the strict parser</returns>
 public static Graph GetStrict(string str)
 {
     return(new Parser(CharBuffer.FromString(str), true).Molecule());
 }
Beispiel #21
0
 /// <summary>
 /// Loose parsing of the provided SMILES string. The loose parser is more
 /// relaxed and will allow abnormal aromatic elements (e.g. 'te') as well as
 /// bare 'H', 'D' and 'T' for hydrogen and it's isotopes. Note the hydrogen
 /// and isotopes are replaced with their correct bracket equivalent.
 /// </summary>
 /// <param name="str">the SMILES string to process</param>
 /// <returns>a graph created with the loose parser</returns>
 public static Graph Losse(string str)
 {
     return(new Parser(CharBuffer.FromString(str), false).Molecule());
 }
Beispiel #22
0
 private void Verify(string str, int atomClass)
 {
     Assert.AreEqual(Parser.ReadClass(CharBuffer.FromString(str)), atomClass);
 }
Beispiel #23
0
        public void NonEmptyBufferHasRemaining()
        {
            CharBuffer buffer = CharBuffer.FromString("-");

            Assert.IsTrue(buffer.HasRemaining());
        }
Beispiel #24
0
        public void EmptyBufferHasNoneRemaining()
        {
            CharBuffer buffer = CharBuffer.FromString("");

            Assert.IsFalse(buffer.HasRemaining());
        }
Beispiel #25
0
 public void NextIsEmpty()
 {
     Assert.IsFalse(CharBuffer.FromString("").NextIs('?'));
 }
Beispiel #26
0
 public void InvalidSPNumber()
 {
     Configuration.Read(CharBuffer.FromString("@SP4"));
 }
Beispiel #27
0
 public void RingBondMismatch()
 {
     Parser.DecideBond(Bond.Single, Bond.Double, CharBuffer.FromString(""));
 }
Beispiel #28
0
 public void InvalidTHNumber()
 {
     Configuration.Read(CharBuffer.FromString("@TH5"));
 }
Beispiel #29
0
 public void RingBondDecision()
 {
     Assert.AreEqual(Parser.DecideBond(Bond.Double, Bond.Double, CharBuffer.FromString("")), Bond.Double);
     Assert.AreEqual(Parser.DecideBond(Bond.Double, Bond.Implicit, CharBuffer.FromString("")), Bond.Double);
     Assert.AreEqual(Parser.DecideBond(Bond.Implicit, Bond.Double, CharBuffer.FromString("")), Bond.Double);
 }
Beispiel #30
0
 public void NoSPNumber()
 {
     Configuration.Read(CharBuffer.FromString("@SP"));
 }