File: test_value.py

package info (click to toggle)
orange3 3.40.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 15,908 kB
  • sloc: python: 162,745; ansic: 622; makefile: 322; sh: 93; cpp: 77
file content (76 lines) | stat: -rw-r--r-- 2,632 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# Test methods with long descriptive names can omit docstrings
# pylint: disable=missing-docstring

import pickle
import unittest
import numpy as np

from Orange.data import Table, Domain, Value,\
    DiscreteVariable, ContinuousVariable, StringVariable, TimeVariable


class TestValue(unittest.TestCase):
    def test_pickling_discrete_values(self):
        iris = Table('iris')

        a = iris[0]['iris']
        b = pickle.loads(pickle.dumps(a))

        self.assertEqual(float(a), float(b))
        self.assertEqual(a.value, b.value)

    def test_pickling_string_values(self):
        zoo = Table('zoo')

        a = zoo[0]['name']
        b = pickle.loads(pickle.dumps(a))

        self.assertEqual(float(a), float(b))
        self.assertEqual(a.value, b.value)

    def test_compare_continuous(self):
        auto = Table('housing')
        acc1 = auto[0]['MEDV']  # 24.0
        acc2 = auto[1]['MEDV']  # 21.6
        self.assertTrue(acc1 > acc2)
        self.assertTrue(acc1 >= 24.0)
        self.assertFalse(acc1 != acc1)

    def test_compare_discrete(self):
        data = Table(Domain([DiscreteVariable(name="G", values=("M", "F"))]),
                     np.array([[0], [1]]))
        self.assertTrue(data[0]['G'] < data[1]['G'])
        self.assertTrue(data[0]['G'] >= data[0]['G'])
        self.assertTrue(data[0]['G'] < 1)
        self.assertTrue(data[0]['G'] < "F")
        self.assertFalse(data[1]['G'] < "F")

    def test_compare_string(self):
        zoo = Table('zoo')
        zoo1 = zoo[0]['name']  # aardvark
        zoo2 = zoo[1]['name']  # antelope
        self.assertTrue(zoo1 < zoo2)
        self.assertTrue(zoo1 >= "aardvark")

    def test_hash(self):
        v = 1234.5
        val = Value(ContinuousVariable("var"), v)
        self.assertTrue(val == v and hash(val) == hash(v))
        v = "test"
        val = Value(StringVariable("var"), v)
        self.assertTrue(val == v and hash(val) == hash(v))
        v = 1234.5
        val = Value(TimeVariable("var"), v)
        self.assertTrue(val == v and hash(val) == hash(v))
        val = Value(DiscreteVariable("var", ["red", "green", "blue"]), 1)
        self.assertRaises(TypeError, hash, val)

    def test_as_values(self):
        x = ContinuousVariable("x")
        values = Value._as_values(x, [0., 1., 2.])  # pylint: disable=protected-access
        self.assertIsInstance(values[0], Value)
        self.assertEqual(values[0], 0)
        s = StringVariable("s")
        values = Value._as_values(s, ["a", "b", ""])  # pylint: disable=protected-access
        self.assertIsInstance(values[0], Value)
        self.assertEqual(values[0], "a")