Changeset 11699:6643b6da98d4 in orange


Ignore:
Timestamp:
09/13/13 12:57:15 (7 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Added tests for Orange.data.Table constructors.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/testing/unit/tests/test_table.py

    r11048 r11699  
    4646        s = cPickle.dumps(table) 
    4747        table_clone = cPickle.loads(s) 
    48 #        self.assertEqual(table.domain, table_clone.domain) 
    49 #        self.assertEqual(table.domain.class_var, table_clone.domain.class_var) 
     48 
     49        self.assertSequenceEqual(list(table.domain), 
     50                                 list(table_clone.domain)) 
    5051        self.assertEqual(native(table), native(table_clone), 
    5152                         "Native representation is not equal!") 
     
    204205 
    205206 
     207class TestConstructor(unittest.TestCase): 
     208    def test_from_list(self): 
     209        A = [[0., 1., 2.], 
     210             [3., 4., 5.], 
     211             [6., 7., 8.]] 
     212 
     213        domain = Orange.data.Domain( 
     214            [Orange.feature.Continuous("F%i" % i) 
     215             for i in range(1, 4)], 
     216            None 
     217        ) 
     218 
     219        data = Orange.data.Table(domain, A) 
     220 
     221        self.assertEqual(native(data), A) 
     222 
     223        lenses = Orange.data.Table("lenses") 
     224        domain = lenses.domain 
     225 
     226        A = [[0, 1, 0, 1, 0], 
     227             [2, 0, 1, 0, 2]] 
     228 
     229        data = Orange.data.Table(domain, A) 
     230 
     231        self.assertEqual( 
     232            A, 
     233            [[int(v) for v in row] for row in data] 
     234        ) 
     235 
     236        A[0][0] = 4 
     237        with self.assertRaises(ValueError): 
     238            data = Orange.data.Table(domain, A) 
     239 
     240        A[0][0] = -1 
     241        with self.assertRaises(ValueError): 
     242            data = Orange.data.Table(domain, A) 
     243 
     244    def test_from_array(self): 
     245        """Test Table construction from numpy arrays. 
     246        """ 
     247        from numpy import array, arange 
     248 
     249        A = arange(9).reshape(3, 3) 
     250        data = Orange.data.Table(A) 
     251 
     252        self.assertTrue(all(isinstance(f, Orange.feature.Continuous) 
     253                            for f in data.domain)) 
     254        self.assertEqual(data.domain.class_var, None) 
     255 
     256        self.assertEqual(native(data), A.tolist()) 
     257 
     258        lenses = Orange.data.Table("lenses") 
     259        domain = lenses.domain 
     260 
     261        A = [[0, 1, 0, 1, 0], 
     262             [2, 0, 1, 0, 2]] 
     263 
     264        data = Orange.data.Table(domain, array(A)) 
     265 
     266        self.assertEqual( 
     267            A, 
     268            [[int(v) for v in row] for row in data] 
     269        ) 
     270 
     271        A[0][0] = 4 
     272        with self.assertRaises(ValueError): 
     273            data = Orange.data.Table(domain, array(A)) 
     274 
     275        A[0][0] = -1 
     276        with self.assertRaises(ValueError): 
     277            data = Orange.data.Table(domain, array(A)) 
     278 
     279    def test_from_masked_array(self): 
     280        """Test Table construction from numpy masked arrays. 
     281        """ 
     282        from numpy.ma import masked_array, masked, arange 
     283 
     284        A = arange(9).reshape(3, 3) 
     285        A[1, 1] = masked 
     286 
     287        data = Orange.data.Table(A) 
     288 
     289        self.assertTrue(all(isinstance(f, Orange.feature.Continuous) 
     290                            for f in data.domain)) 
     291        self.assertEqual(data.domain.class_var, None) 
     292 
     293        self.assertTrue(data[1][1].isSpecial()) 
     294 
     295        lenses = Orange.data.Table("lenses") 
     296        domain = lenses.domain 
     297 
     298        A = masked_array([[0, 1, 0, 1, 0], 
     299                          [2, 0, 1, 0, 2]]) 
     300 
     301        data = Orange.data.Table(domain, A) 
     302 
     303        self.assertEqual( 
     304            A.tolist(), 
     305            [[int(v) for v in row] for row in data] 
     306        ) 
     307 
     308        A[0, 0] = 4 
     309        with self.assertRaises(ValueError): 
     310            data = Orange.data.Table(domain, A) 
     311 
     312        A[0, 0] = -1 
     313        with self.assertRaises(ValueError): 
     314            data = Orange.data.Table(domain, A) 
     315 
     316        A[0, 0] = masked 
     317        data = Orange.data.Table(domain, A) 
     318 
     319        self.assertTrue(data[0][0].isSpecial()) 
     320 
     321 
    206322if __name__ == "__main__": 
    207323    unittest.main() 
Note: See TracChangeset for help on using the changeset viewer.