public void NonNumber() { CharBuffer buffer = CharBuffer.FromString("H3"); Assert.AreEqual(buffer.GetNumber(), -1); Assert.AreEqual(buffer.NextChar, 'H'); }
public void NoHCount() { CharBuffer buffer = CharBuffer.FromString("-1"); Assert.AreEqual(Parser.ReadHydrogens(buffer), 0); Assert.IsTrue(buffer.NextIs('-')); }
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(':')); }
public void Read() { foreach (var config in Configuration.Values) { Assert.AreEqual(config, Configuration.Read(CharBuffer.FromString(config.Symbol))); } }
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'); }
public void EndOfBufferHasNoneRemaining() { CharBuffer buffer = CharBuffer.FromString("-"); Assert.IsTrue(buffer.HasRemaining()); buffer.Get(); Assert.IsFalse(buffer.HasRemaining()); }
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'); }
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'); }
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'); }
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'); }
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()); }
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); }
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()); }
/// <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()); }
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'); }
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(), ']'); }
public void GetThreeDigitNumber_2DigitsOnly() { Assert.AreEqual(CharBuffer.FromString("123").GetNumber(2), 12); }
/// <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) { }
/// <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()); }
/// <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()); }
private void Verify(string str, int atomClass) { Assert.AreEqual(Parser.ReadClass(CharBuffer.FromString(str)), atomClass); }
public void NonEmptyBufferHasRemaining() { CharBuffer buffer = CharBuffer.FromString("-"); Assert.IsTrue(buffer.HasRemaining()); }
public void EmptyBufferHasNoneRemaining() { CharBuffer buffer = CharBuffer.FromString(""); Assert.IsFalse(buffer.HasRemaining()); }
public void NextIsEmpty() { Assert.IsFalse(CharBuffer.FromString("").NextIs('?')); }
public void InvalidSPNumber() { Configuration.Read(CharBuffer.FromString("@SP4")); }
public void RingBondMismatch() { Parser.DecideBond(Bond.Single, Bond.Double, CharBuffer.FromString("")); }
public void InvalidTHNumber() { Configuration.Read(CharBuffer.FromString("@TH5")); }
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); }
public void NoSPNumber() { Configuration.Read(CharBuffer.FromString("@SP")); }