def test_get_between_bounds(self): vdim = VectorDimension(value=[0.,5.,10.],bounds=[[-2.5,2.5],[2.5,7.5],[7.5,12.5]]) vdim_between = vdim.get_between(1,3) self.assertEqual(len(vdim_between),2) self.assertEqual(vdim.resolution,5.0) vdim_between = vdim.get_between(2.5,2.5) self.assertEqual(len(vdim_between),2)
def test_get_between(self): vdim = VectorDimension(value=[0]) with self.assertRaises(EmptySubsetError): vdim.get_between(100,200) vdim = VectorDimension(value=[100,200,300,400]) vdim_between = vdim.get_between(100,200) self.assertEqual(len(vdim_between),2)
def test_get_between_bounds(self): value = [0., 5., 10.] bounds = [[-2.5, 2.5], [2.5, 7.5], [7.5, 12.5]] # # a reversed copy of these bounds are created here value_reverse = deepcopy(value) value_reverse.reverse() bounds_reverse = deepcopy(bounds) bounds_reverse.reverse() for ii in range(len(bounds)): bounds_reverse[ii].reverse() data = {'original': {'value': value, 'bounds': bounds}, 'reversed': {'value': value_reverse, 'bounds': bounds_reverse}} for key in ['original', 'reversed']: vdim = VectorDimension(value=data[key]['value'], bounds=data[key]['bounds']) vdim_between = vdim.get_between(1, 3) self.assertEqual(len(vdim_between), 2) if key == 'original': self.assertEqual(vdim_between.bounds.tostring(), '\x00\x00\x00\x00\x00\x00\x04\xc0\x00\x00\x00\x00\x00\x00\x04@\x00\x00\x00\x00\x00\x00\x04@\x00\x00\x00\x00\x00\x00\x1e@') else: self.assertEqual(vdim_between.bounds.tostring(), '\x00\x00\x00\x00\x00\x00\x1e@\x00\x00\x00\x00\x00\x00\x04@\x00\x00\x00\x00\x00\x00\x04@\x00\x00\x00\x00\x00\x00\x04\xc0') self.assertEqual(vdim.resolution, 5.0) ## preference is given to the lower bound in the case of "ties" where ## the value could be assumed part of the lower or upper cell vdim_between = vdim.get_between(2.5, 2.5) self.assertEqual(len(vdim_between), 1) if key == 'original': self.assertNumpyAll(vdim_between.bounds, np.array([[2.5, 7.5]])) else: self.assertNumpyAll(vdim_between.bounds, np.array([[7.5, 2.5]])) ## if the interval is closed and the subset range falls only on bounds ## value then the subset will be empty with self.assertRaises(EmptySubsetError): vdim.get_between(2.5, 2.5, closed=True) vdim_between = vdim.get_between(2.5, 7.5) if key == 'original': self.assertEqual(vdim_between.bounds.tostring(), '\x00\x00\x00\x00\x00\x00\x04@\x00\x00\x00\x00\x00\x00\x1e@\x00\x00\x00\x00\x00\x00\x1e@\x00\x00\x00\x00\x00\x00)@') else: self.assertEqual(vdim_between.bounds.tostring(), '\x00\x00\x00\x00\x00\x00)@\x00\x00\x00\x00\x00\x00\x1e@\x00\x00\x00\x00\x00\x00\x1e@\x00\x00\x00\x00\x00\x00\x04@')
def test_get_between_use_bounds(self): value = [3., 5.] bounds = [[2., 4.], [4., 6.]] vdim = VectorDimension(value=value, bounds=bounds) ret = vdim.get_between(3, 4.5, use_bounds=False) self.assertNumpyAll(ret.value, np.array([3.])) self.assertNumpyAll(ret.bounds, np.array([[2., 4.]]))