source: orange/Orange/testing/unit/tests/test_value.py @ 11723:5fe0c96ba93c

Revision 11723:5fe0c96ba93c, 2.7 KB checked in by Ales Erjavec <ales.erjavec@…>, 6 months ago (diff)

Added tests for 'Orange.data.Value'.

Line 
1try:
2    import unittest2 as unittest
3except ImportError:
4    import unittest
5
6import Orange
7
8
9class TestValue(unittest.TestCase):
10    def test_discrete(self):
11        var = Orange.feature.Discrete("A", values=["A", "B", "C"])
12        v = Orange.data.Value(var, 1)
13
14        self.assertEqual(v, var(1))
15        self.assertEqual(int(v), 1)
16        self.assertEqual(float(v), 1.0)
17        self.assertEqual(str(v), "B")
18
19        self.assertEqual(v, 1)
20
21        self.assertTrue(bool(v))
22
23        # From the docs: "A value is considered true if it is not undefined."
24        self.assertTrue(bool(Orange.data.Value(var, 0)))
25        self.assertFalse(bool(Orange.data.Value(var, "?")))
26
27        v = Orange.data.Value(var, "?")
28        self.assertTrue(v.is_special())
29
30        with self.assertRaises(TypeError):
31            int(v)
32
33        with self.assertRaises(TypeError):
34            float(v)
35
36        self.assertEquals(str(v), "?")
37
38    def test_ordinal_cmp(self):
39        deg1 = Orange.feature.Discrete(
40            "deg1", values=["little", "medium", "big"]
41        )
42        deg2 = Orange.feature.Discrete(
43            "deg2", values=["tiny", "little", "big", "huge"]
44        )
45        val1 = Orange.data.Value(deg1, "medium")
46        val2 = Orange.data.Value(deg2, "little")
47
48        self.assertGreater(val1, val2)
49        self.assertLess(val2, val1)
50
51        val3 = Orange.data.Value(deg1, "medium")
52        val4 = Orange.data.Value(deg2, "huge")
53
54        with self.assertRaises(TypeError):
55            _ = val3 > val4
56
57        with self.assertRaises(TypeError):
58            _ = val3 < val4
59
60        val5 = Orange.data.Value(deg1, "big")
61        val6 = Orange.data.Value(deg2, "big")
62
63        self.assertEqual(val5, val6)
64        self.assertEqual(val6, val5)
65
66        # Unknowns always compare greater
67        val7 = Orange.data.Value(deg1, "?")
68        self.assertGreater(val7, val5)
69        self.assertGreater(val7, val6)
70        self.assertLess(val5, val7)
71        self.assertLess(val6, val7)
72
73        self.assertEqual(val7, deg1("?"))
74        self.assertEqual(val7, deg2("?"))
75
76    def test_continuous(self):
77        var = Orange.feature.Continuous("X")
78        v = Orange.data.Value(var, 0.0)
79
80        self.assertEqual(v, var(0.0))
81        self.assertEqual(int(v), 0)
82        self.assertEqual(float(v), 0.0)
83
84        self.assertEqual(v, 0.0)
85
86        # From the docs: "A value is considered true if it is not undefined."
87        self.assertTrue(bool(Orange.data.Value(var, 0)))
88
89        v = Orange.data.Value(var, "?")
90        self.assertTrue(v.is_special())
91
92        with self.assertRaises(TypeError):
93            int(v)
94
95        with self.assertRaises(TypeError):
96            float(v)
97
98        self.assertEquals(str(v), "?")
Note: See TracBrowser for help on using the repository browser.