source: orange/Orange/testing/unit/tests/test_instance.py @ 11661:b05f82fd1660

Revision 11661:b05f82fd1660, 2.5 KB checked in by Ales Erjavec <ales.erjavec@…>, 8 months ago (diff)

Fixed comparison of Orange.data.Instance when the domain is empty.

Line 
1try:
2    import unittest2 as unittest
3except ImportError:
4    import unittest
5
6import Orange
7
8class TestInstance(unittest.TestCase):
9    def test_empty_domain(self):
10        domain = Orange.data.Domain([])
11        instance = Orange.data.Instance(domain)
12        instance = Orange.data.Instance(domain, [])
13
14    def test_constructors(self):
15        features = [Orange.feature.Continuous("a"),
16                    Orange.feature.Discrete("b", values=["1", "2"])
17                    ]
18        domain = Orange.data.Domain(features)
19        instance = Orange.data.Instance(domain)
20        self.assertTrue(all(v.is_special() for v in instance))
21
22        copy_instance = Orange.data.Instance(instance)
23        self.assertTrue(all(v1 == v2 for v1, v2 in zip(instance, copy_instance)))
24
25        instance = Orange.data.Instance(domain, ["?", "?"])
26        self.assertTrue(all(v.is_special() for v in instance))
27
28        copy_instance = Orange.data.Instance(instance)
29        self.assertTrue(all(v1 == v2 for v1, v2 in zip(instance, copy_instance)))
30
31        instance = Orange.data.Instance(domain, ["1.0", "1"])
32        self.assertTrue(all(not v.is_special() for v in instance))
33
34        copy_instance = Orange.data.Instance(instance)
35        self.assertTrue(all(v1 == v2 for v1, v2 in zip(instance, copy_instance)))
36
37        self.assertRaises(TypeError, Orange.data.Instance, (domain, ["?"]))
38       
39        class_vars = [Orange.feature.Discrete("C1", values=["1", "2"]),
40                      Orange.feature.Discrete("C2", values=["1", "2"])
41                      ]
42
43        domain = Orange.data.Domain(features, class_vars=class_vars)
44
45        instance = Orange.data.Instance(domain)
46
47        instance = Orange.data.Instance(domain, ["?", "?", "?", "?"])
48
49        self.assertRaises(TypeError, Orange.data.Instance, (domain, ["?", "?", "?"]))
50        self.assertRaises(TypeError, Orange.data.Instance, (domain, ["?", "?"]))
51
52    def test_compare(self):
53        # Empty domain/instance (compare equal)
54        domain = Orange.data.Domain([])
55        self.assertEqual(Orange.data.Instance(domain, []),
56                         Orange.data.Instance(domain, []))
57
58        lenses = Orange.data.Table("lenses")
59
60        inst1 = lenses[0]
61        inst2 = Orange.data.Instance(inst1)
62
63        self.assertEqual(inst1, inst2)
64
65        inst1[0] = "?"
66        self.assertNotEqual(inst1, inst2)
67
68        inst2[0] = "?"
69        self.assertEqual(inst1, inst2)
70
71        for f in lenses.domain:
72            inst1[f] = inst2[f] = "?"
73
74        self.assertEqual(inst1, inst2)
75
76
77if __name__ == "__main__":
78    unittest.main()
Note: See TracBrowser for help on using the repository browser.