Ejemplo n.º 1
0
 def test_regime_aliases(self):
     a = Dynamics(
         name='a',
         aliases=[Alias('A', '4/t')],
         regimes=[
             Regime('dX/dt=1/t + A',
                    name='r1',
                    transitions=On('X>X1', do=['X=X0'], to='r2')),
             Regime('dX/dt=1/t + A',
                    name='r2',
                    transitions=On('X>X1', do=['X=X0'],
                                   to='r1'),
                    aliases=[Alias('A', '8 / t')])])
     self.assertEqual(a.regime('r2').alias('A'), Alias('A', '8 / t'))
     self.assertRaises(
         NineMLUsageError,
         Dynamics,
         name='a',
         regimes=[
             Regime('dX/dt=1/t + A',
                    name='r1',
                    transitions=On('X>X1', do=['X=X0'], to='r2')),
             Regime('dX/dt=1/t + A',
                    name='r2',
                    transitions=On('X>X1', do=['X=X0'],
                                   to='r1'),
                    aliases=[Alias('A', '8 / t')])])
     document = Document()
     a_xml = a.serialize(format='xml', version=1, document=document)
     b = Dynamics.unserialize(a_xml, format='xml', version=1,
                              document=Document(un.dimensionless.clone()))
     self.assertEqual(a, b,
                      "Dynamics with regime-specific alias failed xml "
                      "roundtrip:\n{}".format(a.find_mismatch(b)))