forked from diffpy/diffpy.pdfgui
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_pdfstructure.py
114 lines (95 loc) · 3.82 KB
/
test_pdfstructure.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/usr/bin/env python
"""Unit tests for class PDFStructure
"""
import unittest
from diffpy.pdfgui.control.controlerrors import ControlFileError, ControlKeyError
from diffpy.pdfgui.control.pdfstructure import PDFStructure
from diffpy.pdfgui.tests.testutils import datafile
# ----------------------------------------------------------------------------
class TestPDFStructure(unittest.TestCase):
def setUp(self):
self.stru = PDFStructure("noname")
return
def tearDown(self):
return
def test___init__(self):
"""check PDFStructure.__init__()"""
self.assertEqual("noname", self.stru.name)
return
def test_read(self):
"""check PDFStructure.read()"""
stru = self.stru
notastructurefile = datafile("300K.gr")
self.assertRaises(ControlFileError, stru.read, notastructurefile, format="pdffit")
return
def test_copy(self):
"""check PDFStructure.copy()"""
stru2 = self.stru.copy()
self.assertEqual("noname", stru2.name)
self.assertEqual(self.stru.pdffit, stru2.pdffit)
self.assertIsNot(self.stru.pdffit["ncell"], stru2.pdffit["ncell"])
return
def test_setvar(self):
"""check PDFStructure.setvar()"""
stru = self.stru
stru.addNewAtom("C", [0, 0, 0], anisotropy=True)
stru.setvar("pscale", 1.5)
self.assertEqual(1.5, stru.pdffit["scale"])
stru.setvar("lat(1)", 4)
stru.setvar("lat(2)", 5)
stru.setvar("lat(3)", 7)
self.assertEqual(4, stru.lattice.a)
self.assertEqual(5, stru.lattice.b)
self.assertEqual(7, stru.lattice.c)
stru.setvar("lat(4)", 91)
stru.setvar("lat(5)", 92)
stru.setvar("lat(6)", 93)
self.assertEqual(91, stru.lattice.alpha)
self.assertEqual(92, stru.lattice.beta)
self.assertEqual(93, stru.lattice.gamma)
stru.setvar("spdiameter", 17)
self.assertEqual(17, stru.pdffit["spdiameter"])
stru.setvar("stepcut", 19)
self.assertEqual(19, stru.pdffit["stepcut"])
self.assertRaises(ControlKeyError, stru.setvar, "sstepcut", 6)
stru.setvar("x(1)", 0.1)
stru.setvar("y(1)", 0.2)
stru.setvar("z(1)", 0.3)
stru.setvar("occ(1)", 0.9)
stru.setvar("u23(1)", 0.004)
self.assertEqual([0.1, 0.2, 0.3], stru[0].xyz.tolist())
self.assertEqual(0.9, stru[0].occupancy)
self.assertEqual(0.004, stru[0].U[1, 2])
self.assertRaises(ControlKeyError, stru.setvar, "invalid(1)", 7)
return
def test_getvar(self):
"""check PDFStructure.getvar()"""
from diffpy.structure import Atom
stru = self.stru
abcABG = (3.0, 4.0, 5.0, 81, 82, 83)
stru.lattice.setLatPar(*abcABG)
for i in range(6):
self.assertEqual(abcABG[i], stru.getvar("lat(%i)" % (i + 1)))
stru.append(Atom("Ni", [0.1, 0.2, 0.3]))
self.assertEqual(0.1, stru.getvar("x(1)"))
self.assertEqual(0.2, stru.getvar("y(1)"))
self.assertEqual(0.3, stru.getvar("z(1)"))
self.assertEqual(1.0, stru.getvar("occ(1)"))
# pscale
self.assertEqual(1.0, stru.getvar("pscale"))
# spdiameter
self.assertEqual(0.0, stru.getvar("spdiameter"))
stru.pdffit["spdiameter"] = 37.7
self.assertEqual(37.7, stru.getvar("spdiameter"))
# stepcut
self.assertEqual(0.0, stru.getvar("stepcut"))
stru.pdffit["stepcut"] = 17.7
self.assertEqual(17.7, stru.getvar("stepcut"))
self.assertRaises(ControlKeyError, stru.getvar, "invalid(1)")
self.assertRaises(ControlKeyError, stru.getvar, "invalid")
return
# End of class TestPDFStructure
# ----------------------------------------------------------------------------
if __name__ == "__main__":
unittest.main()
# End of file