Esempio n. 1
0
    def test_derivation_6 (self):
        StringVariable = Variable.derive_type ('StringVariable',
                                               allowed_value_types = StringType,
                                               setter = lambda variable, value: None)

        variable = StringVariable ('')
        self.assertRaises (ValueError, lambda: variable.set (None))
Esempio n. 2
0
    def test_derivation_slots (self):
        DerivedVariable = AbstractVariable.derive_type ('DerivedVariable')
        self.assertRaises (AttributeError, self.non_existing_attribute_setter (DerivedVariable ()))

        DerivedVariable = AbstractValueTrackingVariable.derive_type ('DerivedVariable')
        self.assertRaises (AttributeError, self.non_existing_attribute_setter (DerivedVariable ()))

        DerivedVariable = Variable.derive_type ('DerivedVariable')
        self.assertRaises (AttributeError, self.non_existing_attribute_setter (DerivedVariable ()))
Esempio n. 3
0
    def test_multiple_derivation (self):
        # Derive two types and make sure they don't spoil each other's is_allowed_value()
        # method.

        IntVariable = Variable.derive_type ('IntVariable', allowed_value_types = int)
        StrVariable = Variable.derive_type ('StrVariable', allowed_value_types = str)

        integer = IntVariable (10)
        string  = StrVariable ('test')

        integer.value = 20
        self.assertEqual (integer.value, 20)

        string.value = 'string'
        self.assertEqual (string.value, 'string')

        self.assertRaises (ValueError, lambda: integer.set ('foo'))
        self.assertRaises (ValueError, lambda: string .set (-1000))
        self.assertRaises (ValueError, lambda: integer.set (''))
        self.assertRaises (ValueError, lambda: string .set (0))
Esempio n. 4
0
    def test_derivation_5 (self):
        IntVariable = Variable.derive_type ('IntVariable',
                                            allowed_value_types = int, default_value = 10)

        variable = IntVariable ()
        self.assertEqual (variable.value, 10)

        variable = IntVariable (30)
        self.assertEqual (variable.value, 30)

        self.assertRaises (ValueError, lambda: variable.set ('string'))
Esempio n. 5
0
    def test_derivation_2 (self):
        EnumVariable = Variable.derive_type ('EnumVariable',
                                             allowed_values = (None, 'a', 'b', 'c'))

        variable = EnumVariable ()
        self.assertEqual (variable.value, None)
        self.assertEqual (variable.mutable, True)

        variable.value = 'b'
        self.assertEqual (variable.value, 'b')

        self.assertRaises (ValueError, lambda: variable.set (15))
        self.assertRaises (ValueError, lambda: variable.set ('d'))
Esempio n. 6
0
    def test_derivation_1 (self):
        IntVariable = Variable.derive_type ('IntVariable', allowed_value_types = int)

        # Since None is not an allowed value, there must be no default constructor.
        self.assertRaises (TypeError, lambda: IntVariable ())

        count = IntVariable (10)
        self.assertEqual (count.value, 10)
        self.assertEqual (count.mutable, True)

        count.value = 30
        self.assertEqual (count.value, 30)

        self.assertRaises (ValueError, lambda: count.set ('invalid'))
Esempio n. 7
0
    def test_derivation_4 (self):
        NumericVariable = Variable.derive_type ('NumericVariable',
                                                allowed_value_types = (int, float, complex))

        self.assertRaises (TypeError, lambda: NumericVariable ())

        variable = NumericVariable (0)

        variable.value = 15
        self.assertEqual (variable.value, 15)

        variable.value = -2.5
        self.assertEqual (variable.value, -2.5)

        variable.value = 1j
        self.assertEqual (variable.value, 1j)

        self.assertRaises (ValueError, lambda: variable.set ('string'))
        self.assertRaises (ValueError, lambda: variable.set ([]))