mirror of
https://github.com/rdkit/rdkit.git
synced 2026-06-04 21:54:27 +08:00
* Fist pass at CDX support * Enable CDX support for reading (also) in the CDXMLParser API * Add cdxml test files * Update swig wrappers for CDXMLFormat and Parameters * Add constructor to ChemDrawParserParams * Add Java SWIG support for ChemDraw * Add chemdraw define to rdconfig * Add missing chemdraw deps * Remove direct expat link * Fix Java linkages for ChemDraw * Remove bad merge code * Remove bad merge code * Fix csharp builds * Add sniffer for the ChemDraw DataStream * Include filesystem * Fix test on windows * Add more CDX tests * Ensure streams are open in binary mode to support CDX on windows * Fix text to show that a Block is the text input, not a file * Fix CSharp test * Disable CDX tests when not building chemdraw * Turn back on chemdraw * Response to review * Turn off chemdraw support for the limited external test --------- Co-authored-by: Brian Kelley <bkelley@glysade.com>
75 lines
2.4 KiB
C#
75 lines
2.4 KiB
C#
// Linux:
|
|
// compile with
|
|
// mcs -platform:x64 -r:../RDKit2DotNet.dll -out:MolToFromByteArray.exe MolToFromByteArray.cs
|
|
// and run with
|
|
// LD_LIBRARY_PATH=..:$RDBASE/lib:$LD_LIBRARY_PATH MONO_PATH=.. mono MolToFromByteArray.exe
|
|
|
|
using System.IO;
|
|
using System.Diagnostics;
|
|
using GraphMolWrap;
|
|
using Xunit;
|
|
|
|
namespace RdkitTests
|
|
{
|
|
public class MolToFromByteArrayTest
|
|
{
|
|
[Fact]
|
|
public void TestMolToFromByteArray()
|
|
{
|
|
string smi = "CN(C)c1ccc2c(=O)cc[nH]c2c1";
|
|
string pklFileName = "quinolone.pkl";
|
|
{
|
|
ROMol mol = RWMol.MolFromSmiles(smi);
|
|
byte[] pkl = mol.ToByteArray();
|
|
File.WriteAllBytes(pklFileName, pkl);
|
|
mol.Dispose();
|
|
}
|
|
{
|
|
byte[] pkl = File.ReadAllBytes(pklFileName);
|
|
ROMol mol = ROMol.FromByteArray(pkl);
|
|
Assert.Equal(smi, mol.MolToSmiles());
|
|
mol.Dispose();
|
|
File.Delete(pklFileName);
|
|
}
|
|
}
|
|
[Fact]
|
|
public void TestPickleOptions()
|
|
{
|
|
string smi = "c1ccccc1[C@](F)(Cl)Br";
|
|
ROMol mol = RWMol.MolFromSmiles(smi);
|
|
mol.setProp("_MolFileChiralFlag", "1");
|
|
{
|
|
byte[] pkl = mol.ToByteArray();
|
|
ROMol mol2 = ROMol.FromByteArray(pkl);
|
|
Assert.False(mol2.hasProp("_MolFileChiralFlag"));
|
|
}
|
|
{
|
|
byte[] pkl = mol.ToByteArray((int)PropertyPickleOptions.AllProps);
|
|
ROMol mol2 = ROMol.FromByteArray(pkl);
|
|
Assert.True(mol2.hasProp("_MolFileChiralFlag"));
|
|
}
|
|
|
|
{
|
|
uint val = RDKFuncs.getDefaultPickleProperties();
|
|
RDKFuncs.setDefaultPickleProperties((int)PropertyPickleOptions.AllProps);
|
|
byte[] pkl = mol.ToByteArray();
|
|
RDKFuncs.setDefaultPickleProperties(val);
|
|
ROMol mol2 = ROMol.FromByteArray(pkl);
|
|
Assert.True(mol2.hasProp("_MolFileChiralFlag"));
|
|
}
|
|
|
|
}
|
|
[Fact]
|
|
public void MolFromCDX() {
|
|
var fileName =
|
|
Path.Combine(Environment.GetEnvironmentVariable("RDBASE"),
|
|
"Code", "GraphMol", "test_data", "CDX", "structure_1.cdx");
|
|
|
|
byte[] pkl = File.ReadAllBytes(fileName);
|
|
var mols = RWMol.MolsFromCDXMLByteArray(pkl);
|
|
Assert.True(mols.Count >= 1);
|
|
|
|
}
|
|
}
|
|
}
|