def __init__(self):
        """
        We do nothing more than calling the base constructor and setting the _calculation_process_type
        afterwards to the correct type (our own one).
        """
        Calculation.__init__(self)

        self._calculation_process_type = BasicCalculationProcess
    def test_default(self):
        calculation = Calculation()

        self.assertEqual(calculation._calculation_process_type, CalculationProcess)
        self.assertEqual(calculation.process_list, [])

        calculations = Calculation([1, 2, 3])
        self.assertEqual(calculations.process_list, [1, 2, 3])
    def test_iter(self):
        calculations = Calculation([0, 1, 2])

        for i, calc in enumerate(calculations):
            self.assertEqual(calc.process_list, [i])

        self.assertEqual(len(calculations), 3)
    def create_calculations(self):
        process1 = CalculationProcess(CalculationQueue(), None, None)
        process2 = CalculationProcess(CalculationQueue(), None, None)
        process3 = CalculationProcess(CalculationQueue(), None, None)

        calculations = Calculation([process1, process2, process3])

        return calculations, process2
    def __init__(self):
        Calculation.__init__(self)

        self._calculation_process_type = SimpleCalculationProcess
 def __init__(self):
     Calculation.__init__(self)
     self._calculation_process_type = DeriviedCalculationProcess
 def __init__(self):
     Calculation.__init__(self)
     self._calculation_process_type = DeriviedCalculationProcess