Changeset 4640

Show
Ignore:
Timestamp:
04/30/09 02:33:39 (4 years ago)
Author:
getxsick
Message:

Fix for #318. Now value passed to constructor is validate by calling set() method.

Location:
branch/UMPA
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • branch/UMPA/tests/unit/test_protocols/test__fields.py

    r4601 r4640  
    6666    cls_field = IntField 
    6767 
    68     def test_raw_value(self): 
    69         f = self.cls_field('foobar', 10) 
    70         assert f._raw_value() == 10 
     68    def test_get(self): 
     69        f = self.cls_field('foobar', 10, 8) 
     70        assert f.get() == 10 
     71         
     72        f = self.cls_field('foobar') 
     73        assert f.get() is None 
    7174 
    7275    def test_set(self): #_is_valid() tests included 
     
    8588        py.test.raises(UMPAAttributeException, f.set, 10) 
    8689 
     90    def test_clear(self): 
     91        f = self.cls_field('foobar', 10, 8) 
     92        f.clear() 
     93        assert f.get() is None 
     94 
     95    def test_raw_value(self): 
     96        f = self.cls_field('foobar', 10, 8) 
     97        assert f._raw_value() == 10 
     98 
    8799    def test_fillout(self): 
    88100        f = self.cls_field('foobar') 
    89101        py.test.raises(UMPAException, f.fillout) 
    90102 
    91         f = self.cls_field('foobar', 10) 
     103        f = self.cls_field('foobar', 10, 8) 
    92104        assert f.fillout() == 10 
    93105 
     
    146158class TestIPAddrField(TestAddrField): 
    147159    cls_field = IPAddrField 
     160 
     161    def test_get(self): 
     162        self.cls_field.pieces_amount = 4 
     163        self.cls_field.separator = "." 
     164        self.cls_field.piece_size = 8 
     165        self.cls_field.base = 10 
     166 
     167        f = self.cls_field('foobar', "127.0.0.1") 
     168        assert f.get() == "127.0.0.1" 
     169         
     170        f = self.cls_field('foobar') 
     171        assert f.get() is None 
     172 
     173        self.cls_field.separator = "" 
     174        self.cls_field.base = 0 
     175        self.cls_field.piece_size = 0 
     176        self.cls_field.pieces_amount = 0 
     177        self.cls_field.bits = 0 
    148178 
    149179    def test_set(self): 
     
    202232        py.test.raises(UMPAAttributeException, f.set, "0xG.0xFF.0xFF.0xFF") 
    203233 
     234    def test_clear(self): 
     235        self.cls_field.pieces_amount = 4 
     236        self.cls_field.separator = "." 
     237        self.cls_field.piece_size = 8 
     238        self.cls_field.base = 10 
     239 
     240        f = self.cls_field('foobar', "127.0.0.1") 
     241        assert f.get() == "127.0.0.1" 
     242        f.clear() 
     243        assert f.get() is None 
     244 
     245        self.cls_field.separator = "" 
     246        self.cls_field.base = 0 
     247        self.cls_field.piece_size = 0 
     248        self.cls_field.pieces_amount = 0 
     249        self.cls_field.bits = 0 
     250 
    204251    def test_raw_value(self): 
    205252        f = self.cls_field('foobar') 
     
    234281class TestIPv4AddrField(TestIPAddrField): 
    235282    cls_field = IPv4AddrField 
     283 
     284    def setup_method(self, method): 
     285        self.cls_field.pieces_amount = 4 
     286        self.cls_field.separator = "." 
     287        self.cls_field.piece_size = 8 
     288        self.cls_field.base = 10 
    236289 
    237290    def test_set(self): 
     
    264317class TestIPv6AddrField(TestIPAddrField): 
    265318    cls_field = IPv6AddrField 
     319 
     320    def setup_method(self, method): 
     321        self.cls_field.pieces_amount = 8 
     322        self.cls_field.separator = ":" 
     323        self.cls_field.piece_size = 16 
     324        self.cls_field.base = 16 
    266325 
    267326    def test_set(self): 
  • branch/UMPA/tests/unit/test_protocols/test_payload.py

    r4631 r4640  
    3636        assert f.get() == 'xxx' 
    3737 
     38    def test_get(self): 
    3839        f = self.cls_field('foobar', 10) 
    3940        assert f.get() == '10' 
     41         
     42        f = self.cls_field('foobar') 
     43        assert f.get() is None 
    4044 
    4145    def test_set(self): 
  • branch/UMPA/umpa/protocols/_fields.py

    r4639 r4640  
    7474        if bits is not None: 
    7575            self.bits = bits 
    76         self._value = value 
     76        if value is None: 
     77            self._value = None 
     78        # XXX hack for unitttests, normally Field is only super-class for others 
     79        elif self.__class__ is Field: 
     80            self._value = value 
     81        else: 
     82            self.set(value) 
    7783 
    7884    def __str__(self):