Ejemplo n.º 1
0
class TestRefinablePar(unittest.TestCase):
    def setUp(self):
        self.rpt = RefParType("test")
        self.testpar = RefinablePar("test", 3.0, 0, 10, self.rpt)
        return

    def testToFromPython(self):
        """See if refinable parameters can be created from within python and
        within c++."""
        c = makeCrystal(*makeScatterer())

        # Get a parameter created from c++
        par = c.GetPar("a")
        self.assertAlmostEqual(3.52, par.GetValue())

        # pass a parameter and pass it into c++
        c.AddPar(self.testpar)

        # get it back
        testpar2 = c.GetPar("test")

        self.assertAlmostEqual(self.testpar.GetValue(), testpar2.GetValue())

        testpar2.SetValue(2.17)
        self.assertAlmostEqual(2.17, testpar2.GetValue(), places=6)
        self.assertAlmostEqual(self.testpar.GetValue(), testpar2.GetValue())
        return

    def testGetType(self):
        """See if we can get the proper RefParType from a RefinablePar."""
        rpt2 = self.testpar.GetType()
        self.assertEqual(rpt2, self.rpt)
        return
Ejemplo n.º 2
0
 def setUp(self):
     """Make a RefinableObj and add some RefinablePars."""
     self.r = RefinableObj()
     self.r.SetName("test1")
     # Add some parameters
     self.rpt = RefParType("test")
     p1 = RefinablePar("p1", 3, 0, 10, self.rpt)
     p2 = RefinablePar("p2", -3, -10, 0, self.rpt)
     self.r.AddPar(p1)
     self.r.AddPar(p2)
     return
Ejemplo n.º 3
0
 def testAddPar(self):
     """See if we crash if we add a parameter and delete the molecule."""
     c = makeC60()
     m = self.c.GetScatterer("c60")
     rpt = RefParType("test")
     par = RefinablePar("testpar", 3, 0, 10, rpt)
     m.AddPar(par)
     self.assertAlmostEqual(3, par.GetValue())
     del m
     self.assertAlmostEqual(3, par.GetValue())
     del c
     self.assertAlmostEqual(3, par.GetValue())
     return
Ejemplo n.º 4
0
    def testAddParRefinableObj(self):
        """Test adding another object."""
        r2 = RefinableObj()
        r2.SetName("test2")
        # Add some parameters
        p3 = RefinablePar("p3", 3, 0, 10, self.rpt)
        p4 = RefinablePar("p4", -3, -10, 0, self.rpt)
        r2.AddPar(p3)
        r2.AddPar(p4)

        self.r.AddPar(r2)
        self.assertEqual(4, self.r.GetNbPar())
        return
Ejemplo n.º 5
0
    def testAddParTwice(self):
        """Try to add the same parameter twice.

        We could stop this in the bindings, but since RefinableObj doesn't
        delete its parameters in the destructor, it shouldn't lead to trouble.
        """
        p3 = RefinablePar("p3", 3, 0, 10, self.rpt)
        self.r.AddPar(p3)
        self.r.AddPar(p3)
        return
Ejemplo n.º 6
0
def parTest():
    rpt = RefParType("default")
    testpar = RefinablePar("test", 3.0, 0, 10, rpt)
    print(testpar.__class__, testpar)
    sp, atom = makeScatterer()
    c = makeCrystal(sp, atom)
    par = c.GetPar(0)
    print(par.__class__, par)

    c.AddPar(testpar);
    testpar2 = c.GetPar("test")
    print(testpar2.__class__, testpar2)

    del sp, atom, c

    testpar2.SetValue(2.17)
    print(testpar.__class__, testpar)
    return
Ejemplo n.º 7
0
 def setUp(self):
     self.rpt = RefParType("test")
     self.testpar = RefinablePar("test", 3.0, 0, 10, self.rpt)
     return