1try:
2    import unittest2 as unittest
3except ImportError:
4    import unittest
5
6from mfront.umatxx import Behaviour
7
8class Asterxx(unittest.TestCase):
9
10    def test_pass(self):
11        Np=30
12        Nss=12
13
14        b = Behaviour("Tridimensional","@MFrontAsterBehavioursBuildPath@",
15		      "asterpolycrystals")
16        mpnames=b.getMaterialPropertiesNames()
17        ivnames=b.getInternalStateVariablesNames()
18        ivtypes=b.getInternalStateVariablesTypes()
19        evnames=b.getExternalStateVariablesNames()
20
21        self.assertEqual(mpnames,
22                         ['m', 'K', 'C', 'R0',
23                          'Q', 'b', 'H', 'd1', 'Mu'])
24        self.assertEqual(len(ivnames),3+Np+3*Nss*Np)
25        self.assertEqual(ivnames[0],'ElasticStrain')
26        self.assertEqual(ivtypes[0],'Stensor')
27        self.assertEqual(ivnames[1],'epsp')
28        self.assertEqual(ivtypes[1],'Stensor')
29        for i in range(0,Np):
30            self.assertEqual(ivnames[2+i],'epsg[{0}]'.format(i))
31            self.assertEqual(ivtypes[2+i],'Stensor')
32        for i in range(0,Nss*Np):
33            self.assertEqual(ivnames[2+Np+i],'g[{0}]'.format(i))
34            self.assertEqual(ivtypes[2+Np+i],'Scalar')
35        for i in range(0,Nss*Np):
36            self.assertEqual(ivnames[2+Np+i+Nss*Np],'a[{0}]'.format(i))
37            self.assertEqual(ivtypes[2+Np+i],'Scalar')
38        for i in range(0,Nss*Np):
39            self.assertEqual(ivnames[2+Np+i+2*Nss*Np],'p[{0}]'.format(i))
40            self.assertEqual(ivtypes[2+Np+i+2*Nss*Np],'Scalar')
41        self.assertEqual(ivnames[2+Np+3*Nss*Np],'pg')
42        self.assertEqual(ivtypes[2+Np+3*Nss*Np],'Scalar')
43        self.assertEqual(len(evnames),0)
44        self.assertFalse(b.isIsotropic())
45        self.assertTrue(b.isOrthotropic())
46
47        b.setParameter("epsilon",1.e-12)
48
49        self.assertEqual(10, 7 + 3)
50
51if __name__ == '__main__':
52    unittest.main()
53