diff --git a/test/test_imagewrapper.py b/test/test_imagewrapper.py index e6d471d0f0fc3fd7a008945eac480943442827e2..94aad795908b4c3e9f1b8969962af0f1536da433 100644 --- a/test/test_imagewrapper.py +++ b/test/test_imagewrapper.py @@ -66,6 +66,17 @@ def random_slices(coverage, shape, mode): slices = np.zeros((2, len(shape))) + origMode = mode + + # If we're generating an 'out' slice (i.e. + # a slice which is not covered by the coverage), + # then only one dimension needs to be out. The + # other dimensions don't matter. + if mode == 'out': + dimModes = [random.choice(('in', 'out', 'overlap')) for i in range(ndims)] + if not any([m == 'out' for m in dimModes]): + dimModes[random.randint(0, ndims - 1)] = 'out' + for dim, size in enumerate(shape): # Volumes @@ -75,13 +86,19 @@ def random_slices(coverage, shape, mode): slices[:, dim] = lowCover, highCover continue + + if origMode == 'out': + mode = dimModes[dim] # Assuming that coverage is same for each volume lowCover = coverage[0, dim, 0] highCover = coverage[1, dim, 0] if (np.isnan(lowCover) or np.isnan(highCover)) and mode in ('in', 'overlap'): - raise RuntimeError('Can\'t generate in/overlapping slices on an empty coverage') + if origMode == 'out': + mode = 'out' + else: + raise RuntimeError('Can\'t generate in/overlapping slices on an empty coverage') # Generate some slices that will # be contained within the coverage