Skip to content

Commit c69b6ce

Browse files
author
hhaensel
committed
add tests for cdxml
1 parent 6b23759 commit c69b6ce

File tree

2 files changed

+91
-0
lines changed

2 files changed

+91
-0
lines changed

test/cdxml.jl

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
2+
@testset "cdxmlreader" begin
3+
4+
@testset "aromatic ring" begin
5+
# cdxml codes aromaticity via bond order 1.5
6+
cdxml_string = """
7+
<?xml version="1.0" encoding="UTF-8"?>
8+
<CDXML>
9+
<page>
10+
<fragment id="1">
11+
<n id="2" Element="6" p="100 100"/>
12+
<n id="3" Element="6" p="120 110"/>
13+
<n id="4" Element="6" p="120 130"/>
14+
<n id="5" Element="6" p="100 140"/>
15+
<n id="6" Element="6" p="80 130"/>
16+
<n id="7" Element="6" p="80 110"/>
17+
<b id="8" B="2" E="3" Order="1.5"/>
18+
<b id="9" B="3" E="4" Order="1.5"/>
19+
<b id="10" B="4" E="5" Order="1.5"/>
20+
<b id="11" B="5" E="6" Order="1.5"/>
21+
<b id="12" B="6" E="7" Order="1.5"/>
22+
<b id="13" B="7" E="2" Order="1.5"/>
23+
</fragment>
24+
</page>
25+
</CDXML>
26+
"""
27+
28+
mol = cdxmltomol(IOBuffer(cdxml_string))
29+
@test atom_symbol(mol) == fill(:C, 6)
30+
@test sum(bond_order(mol)) == 6 * 1.5
31+
@test mol[1].coords == [100, 100, 0]
32+
33+
benzene_cdxml_aromatic = mol
34+
cdxml_string = """
35+
<?xml version="1.0" encoding="UTF-8"?>
36+
<CDXML>
37+
<page>
38+
<fragment id="1">
39+
<n id="2" Element="6" p="100 100"/>
40+
<n id="3" Element="6" p="120 110"/>
41+
<n id="4" Element="6" p="120 130"/>
42+
<n id="5" Element="6" p="100 140"/>
43+
<n id="6" Element="6" p="80 130"/>
44+
<n id="7" Element="6" p="80 110"/>
45+
<b id="8" B="2" E="3" Order="1"/>
46+
<b id="9" B="3" E="4" Order="2"/>
47+
<b id="10" B="4" E="5" Order="1"/>
48+
<b id="11" B="5" E="6" Order="2"/>
49+
<b id="12" B="6" E="7" Order="1"/>
50+
<b id="13" B="7" E="2" Order="2"/>
51+
</fragment>
52+
</page>
53+
</CDXML>
54+
"""
55+
benzene_cdxml_classic = cdxmltomol(IOBuffer(cdxml_string))
56+
@test has_exact_match(benzene_cdxml_aromatic, benzene_cdxml_classic)
57+
58+
benzene_smiles = smilestomol("c1ccccc1")
59+
@test has_exact_match(benzene_cdxml_aromatic, benzene_smiles)
60+
end
61+
62+
63+
@testset "stereo bond" begin
64+
cdxml_string = """
65+
<?xml version="1.0" encoding="UTF-8"?>
66+
<CDXML>
67+
<page>
68+
<fragment id="1">
69+
<n id="2" Element="6" p="100 100"/>
70+
<n id="3" Element="17" p="110 95"/>
71+
<n id="4" Element="35" p="110 105"/>
72+
<n id="5" Element="1" p="90 95"/>
73+
<n id="6" Element="1" p="90 105"/>
74+
<b id="7" B="2" E="3" Display="WedgeBegin"/>
75+
<b id="8" B="2" E="4" Display="Hash"/>
76+
<b id="9" B="2" E="5"/>
77+
<b id="10" B="2" E="6"/>
78+
</fragment>
79+
</page>
80+
</CDXML>
81+
"""
82+
83+
mol = cdxmltomol(IOBuffer(cdxml_string))
84+
@test [b.notation for (_, b) in mol.eprops] == [1, 6, 0, 0]
85+
@test bond_order(mol) == fill(1, 4)
86+
@test atom_symbol(mol) == [:C, :Cl, :Br, :H, :H]
87+
@test mol[2].coords == [110, 95, 0]
88+
end
89+
90+
end # cdxmlreader

test/runtests.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ include("./smarts/smarts.jl")
8787
include("sdfilereader.jl")
8888
include("sdfilewriter.jl")
8989
include("json.jl")
90+
include("cdxml.jl")
9091

9192
include("stereo.jl")
9293
include("preprocess.jl")

0 commit comments

Comments
 (0)