~ubuntu-branches/ubuntu/precise/python-chaco/precise

« back to all changes in this revision

Viewing changes to enthought/chaco2/tests/datarange_1d_test_case.py

  • Committer: Bazaar Package Importer
  • Author(s): Varun Hiremath
  • Date: 2008-12-29 02:34:05 UTC
  • Revision ID: james.westby@ubuntu.com-20081229023405-x7i4kp9mdxzmdnvu
Tags: upstream-3.0.1
ImportĀ upstreamĀ versionĀ 3.0.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
import unittest
 
3
 
 
4
from numpy import arange, array, zeros, inf
 
5
from numpy.testing import assert_equal
 
6
 
 
7
from enthought.chaco2.api import DataRange1D, ArrayDataSource
 
8
 
 
9
 
 
10
class DataRangeTestCase(unittest.TestCase):
 
11
    
 
12
    def test_empty_range(self):
 
13
        r = DataRange1D()
 
14
        self.assert_(r.low == -inf)
 
15
        self.assert_(r.high == inf)
 
16
        self.assert_(r.low_setting == "auto")
 
17
        self.assert_(r.high_setting == "auto")
 
18
        r.low = 5.0
 
19
        r.high = 10.0
 
20
        self.assert_(r.low_setting == 5.0)
 
21
        self.assert_(r.high_setting == 10.0)
 
22
        self.assert_(r.low == 5.0)
 
23
        self.assert_(r.high == 10.0)
 
24
        return
 
25
    
 
26
    def test_single_source(self):
 
27
        r = DataRange1D()
 
28
        ary = arange(10.0)
 
29
        ds = ArrayDataSource(ary)
 
30
        r.sources.append(ds)
 
31
        self.assert_(r.low == 0.0)
 
32
        self.assert_(r.high == 9.0)
 
33
 
 
34
        r.low = 3.0
 
35
        r.high = 6.0
 
36
        self.assert_(r.low_setting == 3.0)
 
37
        self.assert_(r.high_setting == 6.0)
 
38
        self.assert_(r.low == 3.0)
 
39
        self.assert_(r.high == 6.0)
 
40
        
 
41
        r.refresh()
 
42
        self.assert_(r.low_setting == 3.0)
 
43
        self.assert_(r.high_setting == 6.0)
 
44
        self.assert_(r.low == 3.0)
 
45
        self.assert_(r.high == 6.0)
 
46
        
 
47
        r.low = "auto"
 
48
        self.assert_(r.low_setting == "auto")
 
49
        self.assert_(r.low == 0.0)
 
50
        return
 
51
 
 
52
    def test_constant_value(self):
 
53
        r = DataRange1D()
 
54
        ary = array([3.14])
 
55
        ds = ArrayDataSource(ary)
 
56
        r.add(ds)
 
57
        # A constant value > 1.0, by default, gets a range that brackets
 
58
        # it to the nearest power of ten above and below
 
59
        self.assert_(r.low == 1.0)
 
60
        self.assert_(r.high == 10.0)
 
61
        
 
62
        r.remove(ds)
 
63
        ds = ArrayDataSource(array([31.4]))
 
64
        r.add(ds)
 
65
        self.assert_(r.low == 10.0)
 
66
        self.assert_(r.high == 100.0)
 
67
        
 
68
        r.remove(ds)
 
69
        ds = ArrayDataSource(array([0.03]))
 
70
        r.add(ds)
 
71
        self.assert_(r.low == -1.0)
 
72
        self.assert_(r.high == 1.0)
 
73
 
 
74
        r.remove(ds)
 
75
        ds = ArrayDataSource(array([-0.03]))
 
76
        r.add(ds)
 
77
        self.assert_(r.low == -1.0)
 
78
        self.assert_(r.high == 1.0)
 
79
        return
 
80
 
 
81
    def test_multi_source(self):
 
82
        ds1 = ArrayDataSource(array([3, 4, 5, 6, 7]))
 
83
        ds2 = ArrayDataSource(array([5, 10, 15, 20]))
 
84
        r = DataRange1D(ds1, ds2)
 
85
        self.assert_(r.low == 3.0)
 
86
        self.assert_(r.high == 20.0)
 
87
        return
 
88
 
 
89
    def test_clip_data(self):
 
90
        r = DataRange1D(low=2.0, high=10.0)
 
91
        ary = array([1, 3, 4, 9.8, 10.2, 12])
 
92
        assert_equal(r.clip_data(ary) , array([3.0,4.0,9.8]))
 
93
        
 
94
        r = DataRange1D(low=10, high=20)
 
95
        ary = array([5, 10, 15, 20, 25, 30])
 
96
        assert_equal(r.clip_data(ary) , array([10, 15, 20]))
 
97
        assert_equal(r.clip_data(ary[::-1]) , array([20, 15, 10]))
 
98
        
 
99
        r = DataRange1D(low=2.0, high=2.5)
 
100
        assert_equal(len(r.clip_data(ary)) , 0)
 
101
        return
 
102
 
 
103
    def test_mask_data(self):
 
104
        r = DataRange1D(low=2.0, high=10.0)
 
105
        ary = array([1, 3, 4, 9.8, 10.2, 12])
 
106
        assert_equal(r.mask_data(ary) , array([0,1,1,1,0,0], 'b'))
 
107
        
 
108
        r = DataRange1D(low=10, high=20)
 
109
        ary = array([5, 10, 15, 20, 25, 30])
 
110
        target_mask = array([0,1,1,1,0,0], 'b')
 
111
        assert_equal(r.mask_data(ary) , target_mask)
 
112
        assert_equal(r.mask_data(ary[::-1]) , target_mask[::-1])
 
113
        
 
114
        r = DataRange1D(low=2.0, high=2.5)
 
115
        assert_equal(r.mask_data(ary) , zeros(len(ary)))
 
116
        return
 
117
 
 
118
    def test_bound_data(self):
 
119
        r = DataRange1D(low=2.9, high=6.1)
 
120
        ary = arange(10)
 
121
        assert_equal(r.bound_data(ary) , (3,6))
 
122
        
 
123
        # test non-monotonic data
 
124
        ary = array([-5,-4,-7,-8,-2,1,2,3,4,5,4,3,8,9,10,9,8])
 
125
        bounds = r.bound_data(ary)
 
126
        assert_equal(bounds , (7,11))
 
127
        return
 
128
 
 
129
    def test_custom_bounds_func(self):
 
130
        def custom_func(low, high, margin, tight_bounds):
 
131
            assert low==0.0
 
132
            assert high==9.0
 
133
            assert tight_bounds==False
 
134
            assert margin==1.0
 
135
            return -999., 999.
 
136
        
 
137
        r = DataRange1D(tight_bounds=False, margin=1.0, bounds_func=custom_func)
 
138
        ary = arange(10.0)
 
139
        ds = ArrayDataSource(ary)
 
140
        r.sources.append(ds)
 
141
        assert r.low==-999.
 
142
        assert r.high==999.
 
143
 
 
144
if __name__ == '__main__':
 
145
    import nose
 
146
    nose.run()