def testConstructionAndQuery(self):
        """ Test the construction of the control parametes object """
        # Default construction.
        control_params = KMCControlParameters()

        # Check the default values.
        self.assertEqual(control_params.numberOfSteps(), 0)
        self.assertEqual(control_params.dumpInterval(), 1)
        self.assertEqual(control_params.seed(), 1)
        self.assertTrue(control_params.timeSeed())
        self.assertEqual(control_params.rngType(), Backend.MT)

        # Non-default construction.
        control_params = KMCControlParameters(number_of_steps=2000000,
                                              dump_interval=1000,
                                              analysis_interval=888,
                                              seed=2013,
                                              rng_type='DEVICE')

        # Check the values.
        self.assertEqual(control_params.numberOfSteps(), 2000000)
        self.assertEqual(control_params.dumpInterval(), 1000)
        self.assertEqual(control_params.analysisInterval(), 888)
        self.assertEqual(control_params.seed(), 2013)
        self.assertFalse(control_params.timeSeed())
        self.assertEqual(control_params.rngType(), Backend.DEVICE)
    def testConstructionAndQuery(self):
        """ Test the construction of the control parametes object """
        # Default construction.
        control_params = KMCControlParameters()

        # Check the default values.
        self.assertEqual(control_params.numberOfSteps(), 0)
        self.assertEqual(control_params.dumpInterval(), 1)
        self.assertEqual(control_params.seed(), 1)
        self.assertTrue(control_params.timeSeed())
        self.assertEqual(control_params.rngType(), Backend.MT)

        # Non-default construction.
        control_params = KMCControlParameters(number_of_steps=2000000,
                                              dump_interval=1000,
                                              analysis_interval=888,
                                              seed=2013,
                                              rng_type='DEVICE')

        # Check the values.
        self.assertEqual(control_params.numberOfSteps(), 2000000)
        self.assertEqual(control_params.dumpInterval(), 1000)
        self.assertEqual(control_params.analysisInterval(), 888)
        self.assertEqual(control_params.seed(), 2013)
        self.assertFalse(control_params.timeSeed())
        self.assertEqual(control_params.rngType(), Backend.DEVICE)
    def testRngTypeInput(self):
        """ Test all valid values of the rng_type parameter. """
        control_params = KMCControlParameters()
        self.assertEqual(control_params.rngType(), Backend.MT)

        control_params = KMCControlParameters(rng_type='MT')
        self.assertEqual(control_params.rngType(), Backend.MT)

        control_params = KMCControlParameters(rng_type='RANLUX24')
        self.assertEqual(control_params.rngType(), Backend.RANLUX24)

        control_params = KMCControlParameters(rng_type='RANLUX48')
        self.assertEqual(control_params.rngType(), Backend.RANLUX48)

        control_params = KMCControlParameters(rng_type='MINSTD')
        self.assertEqual(control_params.rngType(), Backend.MINSTD)

        control_params = KMCControlParameters(rng_type='DEVICE')
        self.assertEqual(control_params.rngType(), Backend.DEVICE)

        # Wrong value.
        self.assertRaises(Error, lambda: KMCControlParameters(rng_type='ABC'))

        # Wrong type.
        self.assertRaises(Error, lambda: KMCControlParameters(rng_type=123))
    def testRngTypeInput(self):
        """ Test all valid values of the rng_type parameter. """
        control_params = KMCControlParameters()
        self.assertEqual(control_params.rngType(), Backend.MT)

        control_params = KMCControlParameters(rng_type='MT')
        self.assertEqual(control_params.rngType(), Backend.MT)

        control_params = KMCControlParameters(rng_type='RANLUX24')
        self.assertEqual(control_params.rngType(), Backend.RANLUX24)

        control_params = KMCControlParameters(rng_type='RANLUX48')
        self.assertEqual(control_params.rngType(), Backend.RANLUX48)

        control_params = KMCControlParameters(rng_type='MINSTD')
        self.assertEqual(control_params.rngType(), Backend.MINSTD)

        control_params = KMCControlParameters(rng_type='DEVICE')
        self.assertEqual(control_params.rngType(), Backend.DEVICE)

        # Wrong value.
        self.assertRaises( Error,
                           lambda : KMCControlParameters(rng_type='ABC'))

        # Wrong type.
        self.assertRaises( Error,
                           lambda : KMCControlParameters(rng_type=123))