source: orange/Orange/testing/unit/tests/test_table.py @ 10551:4b7e42228f69

Revision 10551:4b7e42228f69, 4.4 KB checked in by Ales Erjavec <ales.erjavec@…>, 2 years ago (diff)

Fixed load/save csv tests.

Line 
1# -*- coding: utf-8 -*-
2""" Orange.data.Table related unit-tests
3"""
4
5
6try:
7    import unittest2 as unittest
8except:
9    import unittest
10from Orange.misc import testing
11import Orange
12import cPickle
13
14def native(table):
15    table = table.native()
16    for i in range(len(table)):
17        table[i] = [v.native() for v in table[i].native()]
18    return table
19
20def names_iter():
21    for name in testing.ALL_DATASETS:
22        yield name.replace(" ", "_").replace("-", "_"), (name,)
23
24@testing.data_driven(data_iter=names_iter())
25class TestLoading(unittest.TestCase):
26
27    @testing.test_on_data
28    def test_load_on(self, name):
29        """ Test the loading of the data set
30        """
31        table = Orange.data.Table(name)
32        self.assertIsNotNone(getattr(table, "attributeLoadStatus"), "No attributeLoadStatus")
33
34    @testing.test_on_data
35    def test_pickling_on(self, name):
36        """ Test data table pickling.
37        """
38        table = Orange.data.Table(name)
39        s = cPickle.dumps(table)
40        table_clone = cPickle.loads(s)
41#        self.assertEqual(table.domain, table_clone.domain)
42#        self.assertEqual(table.domain.class_var, table_clone.domain.class_var)
43        self.assertEqual(native(table), native(table_clone), "Native representation is not equal!")
44       
45   
46
47
48import tempfile
49
50@testing.datasets_driven
51class TestSaving(unittest.TestCase):
52    @testing.test_on_data
53    def test_R_on(self, name):
54        data = Orange.data.Table(name)
55        with tempfile.NamedTemporaryFile(suffix=".R") as f:
56            data.save(f.name)
57
58#    @testing.test_on_data
59#    def test_toC50(self, name):
60#        data = Orange.data.Table(name)
61
62    @testing.test_on_datasets(datasets=testing.CLASSIFICATION_DATASETS + \
63                              testing.REGRESSION_DATASETS)
64    def test_arff_on(self, data):
65        with tempfile.NamedTemporaryFile(suffix=".arff") as f:
66            data.save(f.name)
67            f.flush()
68            data_arff = Orange.data.Table(f.name)
69    @testing.test_on_datasets(datasets=testing.CLASSIFICATION_DATASETS + \
70                              testing.REGRESSION_DATASETS)
71    def test_svm_on(self, data):
72        with tempfile.NamedTemporaryFile(suffix=".svm") as f:
73            data.save(f.name)
74            f.flush()
75            data_svm = Orange.data.Table(f.name)
76
77    @testing.test_on_datasets
78    def test_csv_on(self, data):
79        with tempfile.NamedTemporaryFile(suffix=".csv") as f:
80            Orange.data.io.save_csv(f, data, dialect="excel-tab")
81            f.flush()
82            f.seek(0)
83            Orange.data.io.load_csv(f, has_header=True,
84                                    has_types=True, has_annotations=True)
85
86
87@testing.datasets_driven
88class TestUnicodeFilenames(unittest.TestCase):
89   
90    @testing.test_on_data
91    def test_tab_on(self, name):
92        """ Test the loading and saving to/from unicode (utf-8) filenames.
93        """
94        table = Orange.data.Table(name)
95        with tempfile.NamedTemporaryFile(suffix=u"ü-š-ç.tab") as f:
96            table.save(f.name)
97            f.flush()
98            table1 = Orange.data.Table(f.name)
99       
100    @testing.test_on_datasets(datasets=testing.CLASSIFICATION_DATASETS + \
101                              testing.REGRESSION_DATASETS)
102    def test_txt_on(self, name):
103        """ Test the loading and saving to/from unicode (utf-8) filenames.
104        """
105        table = Orange.data.Table(name)
106        with tempfile.NamedTemporaryFile(suffix=u"ü-š-ç.txt") as f:
107            table.save(f.name)
108            f.flush()
109            table1 = Orange.data.Table(f.name)
110           
111    @testing.test_on_datasets(datasets=testing.CLASSIFICATION_DATASETS + \
112                              testing.REGRESSION_DATASETS)
113    def test_arff_on(self, name):
114        """ Test the loading and saving to/from unicode (utf-8) filenames.
115        """
116        table = Orange.data.Table(name)
117        with tempfile.NamedTemporaryFile(suffix=u"ü-š-ç.arff") as f:
118            table.save(f.name)
119            f.flush()
120            table1 = Orange.data.Table(f.name)
121           
122    def test_basket(self):
123        """ Test the loading and saving to/from unicode (utf-8) filenames.
124        """
125        table = Orange.data.Table("inquisition.basket")
126        with tempfile.NamedTemporaryFile(suffix=u"ü-š-ç.basket") as f:
127            table.save(f.name)
128            f.flush()
129            table1 = Orange.data.Table(f.name)
130       
131
132
133if __name__ == "__main__":
134    unittest.main()
Note: See TracBrowser for help on using the repository browser.