source: orange/Orange/testing/unit/tests/test_table.py @ 10461:8f21fb15db6e

Revision 10461:8f21fb15db6e, 4.3 KB checked in by Ales Erjavec <ales.erjavec@…>, 2 years ago (diff)

Added tests for unicode filename arguments to Table.

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)
84
85
86@testing.datasets_driven
87class TestUnicodeFilenames(unittest.TestCase):
88   
89    @testing.test_on_data
90    def test_tab_on(self, name):
91        """ Test the loading and saving to/from unicode (utf-8) filenames.
92        """
93        table = Orange.data.Table(name)
94        with tempfile.NamedTemporaryFile(suffix=u"ü-š-ç.tab") as f:
95            table.save(f.name)
96            f.flush()
97            table1 = Orange.data.Table(f.name)
98       
99    @testing.test_on_datasets(datasets=testing.CLASSIFICATION_DATASETS + \
100                              testing.REGRESSION_DATASETS)
101    def test_txt_on(self, name):
102        """ Test the loading and saving to/from unicode (utf-8) filenames.
103        """
104        table = Orange.data.Table(name)
105        with tempfile.NamedTemporaryFile(suffix=u"ü-š-ç.txt") as f:
106            table.save(f.name)
107            f.flush()
108            table1 = Orange.data.Table(f.name)
109           
110    @testing.test_on_datasets(datasets=testing.CLASSIFICATION_DATASETS + \
111                              testing.REGRESSION_DATASETS)
112    def test_arff_on(self, name):
113        """ Test the loading and saving to/from unicode (utf-8) filenames.
114        """
115        table = Orange.data.Table(name)
116        with tempfile.NamedTemporaryFile(suffix=u"ü-š-ç.arff") as f:
117            table.save(f.name)
118            f.flush()
119            table1 = Orange.data.Table(f.name)
120           
121    def test_basket(self):
122        """ Test the loading and saving to/from unicode (utf-8) filenames.
123        """
124        table = Orange.data.Table("inquisition.basket")
125        with tempfile.NamedTemporaryFile(suffix=u"ü-š-ç.basket") as f:
126            table.save(f.name)
127            f.flush()
128            table1 = Orange.data.Table(f.name)
129       
130
131
132if __name__ == "__main__":
133    unittest.main()
Note: See TracBrowser for help on using the repository browser.