def test_one_to_one(self): m = self.model() index_set = m.b0.index_set() index = None pred_map = {0: UnindexedComponent_set} location_set_map = get_location_set_map(index, index_set) self.assertEqual(pred_map, location_set_map) index_set = m.b1.index_set() index = 1 pred_map = { 0: m.time, } location_set_map = get_location_set_map(index, index_set) self.assertSameMap(pred_map, location_set_map) index_set = m.b2.index_set() index = (1, 2) pred_map = { 0: m.time, 1: m.space, } location_set_map = get_location_set_map(index, index_set) self.assertSameMap(pred_map, location_set_map)
def test_multi_dim(self): m = self.model() index_set = m.b0d2.index_set() index = ('a', 1) pred_map = { 0: m.d_2, 1: m.d_2, } location_set_map = get_location_set_map(index, index_set) self.assertSameMap(pred_map, location_set_map) normalize_index.flatten = False # A single multi-dimensional index will behave the same when # normalize_index.flatten is False. This is probably unexpected # Should we just fail in this case? # Note that the index (('a',1),) will not work. index_set = m.b0d2.index_set() index = ('a', 1) pred_map = { 0: m.d_2, 1: m.d_2, } with self.assertRaises(ValueError) as cm: location_set_map = get_location_set_map(index, index_set) self.assertIn('normalize_index.flatten', str(cm.exception)) normalize_index.flatten = True index_set = m.b1d2.index_set() index = (1, 'a', 1) pred_map = { 0: m.time, 1: m.d_2, 2: m.d_2, } location_set_map = get_location_set_map(index, index_set) self.assertSameMap(pred_map, location_set_map) index_set = m.b2d2.index_set() index = (1, 'a', 1, 2) pred_map = { 0: m.time, 1: m.d_2, 2: m.d_2, 3: m.space, } location_set_map = get_location_set_map(index, index_set) self.assertSameMap(pred_map, location_set_map) index_set = m.b3d2.index_set() index = (1, 'a', 1, 2, 1) pred_map = { 0: m.time, 1: m.d_2, 2: m.d_2, 3: m.space, 4: m.time, } location_set_map = get_location_set_map(index, index_set) self.assertSameMap(pred_map, location_set_map)
def test_multi_dim_replacement(self): m = self.model() # One two-dimen set index_set = m.b0d2.index_set() index = ('a', 1) location_set_map = get_location_set_map(index, index_set) sets = ComponentSet() pred_index = ('a', 1) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index) sets = ComponentSet((m.d_2, )) pred_index = (slice(None), slice(None)) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index) # One two-dimen, one one-dimen index_set = m.b1d2.index_set() index = (1, 'a', 1) location_set_map = get_location_set_map(index, index_set) sets = ComponentSet() pred_index = (1, 'a', 1) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index) sets = ComponentSet((m.d_2, )) pred_index = (1, slice(None), slice(None)) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index) # One two-dimen, two one-dimen index_set = m.b2d2.index_set() index = (1, 'a', 1, 2) location_set_map = get_location_set_map(index, index_set) sets = ComponentSet((m.d_2, m.time)) pred_index = (slice(None), slice(None), slice(None), 2) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index) sets = ComponentSet((m.space, )) pred_index = (1, 'a', 1, slice(None)) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index) # One two-dimen, three one-dimen index_set = m.b3d2.index_set() index = (1, 'a', 1, 2, 1) location_set_map = get_location_set_map(index, index_set) sets = ComponentSet((m.time, )) pred_index = (slice(None), 'a', 1, 2, slice(None)) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index)
def test_1d_replacement(self): m = self.model() # Unindexed index_set = m.b0.index_set() index = None location_set_map = get_location_set_map(index, index_set) sets = ComponentSet() pred_index = (None, ) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(pred_index, new_index) # One one-d set index_set = m.b1.index_set() index = 1 location_set_map = get_location_set_map(index, index_set) sets = ComponentSet() pred_index = (1, ) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(pred_index, new_index) sets = ComponentSet((m.time, )) pred_index = (slice(None), ) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(pred_index, new_index) # Two one-d sets index_set = m.b2.index_set() index = (1, 2) location_set_map = get_location_set_map(index, index_set) sets = ComponentSet() pred_index = (1, 2) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(pred_index, new_index) sets = ComponentSet((m.space, )) pred_index = (1, slice(None)) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(pred_index, new_index) sets = ComponentSet((m.space, m.time)) pred_index = (slice(None), slice(None)) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(pred_index, new_index)
def test_dimen_none_replacement(self): m = self.model() # Single set of dimen None index_set = m.b0dn.index_set() index = ('c', 1, 10) location_set_map = get_location_set_map(index, index_set) sets = ComponentSet((m.d_none, )) pred_index = (Ellipsis, ) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index) sets = ComponentSet() pred_index = ('c', 1, 10) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index) # One None-dimen, one one-dimen index_set = m.b1dn.index_set() index = (1, 'c', 1, 10) location_set_map = get_location_set_map(index, index_set) sets = ComponentSet((m.d_none, )) pred_index = (1, Ellipsis) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index) sets = ComponentSet((m.d_none, m.time)) pred_index = (slice(None), Ellipsis) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index) # One None-dimen, one one-dimen, one two-dimen index_set = m.b1dnd2.index_set() index = (1, 'c', 1, 10, 'a', 1) location_set_map = get_location_set_map(index, index_set) sets = ComponentSet((m.d_none, m.time, m.d_2)) pred_index = (slice(None), Ellipsis, slice(None), slice(None)) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index) sets = ComponentSet((m.time, m.d_2)) pred_index = (slice(None), 'c', 1, 10, slice(None), slice(None)) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index) sets = ComponentSet((m.d_2, )) pred_index = (1, 'c', 1, 10, slice(None), slice(None)) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index) # One None-dimen, one two-dimen index_set = m.b2dn.index_set() index = (1, 0, 'd', 3) location_set_map = get_location_set_map(index, index_set) sets = ComponentSet() pred_index = (1, 0, 'd', 3) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index) sets = ComponentSet((m.d_none, )) pred_index = (1, 0, Ellipsis) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index) # One None-dimen, one two-dimen, two one-dimen index_set = m.b2dnd2.index_set() index = (1, 'c', 1, 10, 'b', 2, 0) location_set_map = get_location_set_map(index, index_set) sets = ComponentSet((m.d_none, m.space)) pred_index = (1, Ellipsis, 'b', 2, slice(None)) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index) # None-dimen set comes first index_set = m.dnd2b1.index_set() index = ('d', 3, 'b', 2, 1) location_set_map = get_location_set_map(index, index_set) sets = ComponentSet((m.d_none, m.time)) pred_index = (Ellipsis, 'b', 2, slice(None)) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index) # None-dimen, plus 2-d set shows up twice index_set = m.b3dn.index_set() index = (1, 'a', 1, 'd', 3, 0, 'b', 2) location_set_map = get_location_set_map(index, index_set) sets = ComponentSet((m.d_none, m.d_2)) pred_index = ( 1, slice(None), slice(None), Ellipsis, 0, slice(None), slice(None), ) new_index = replace_indices(index, location_set_map, sets) self.assertEqual(new_index, pred_index)
def test_dimen_none(self): m = self.model() index_set = m.b0dn.index_set() index = ('c', 1, 10) pred_map = { 0: m.d_none, 1: m.d_none, 2: m.d_none, } location_set_map = get_location_set_map(index, index_set) self.assertSameMap(pred_map, location_set_map) index_set = m.b1dn.index_set() index = (1, 'c', 1, 10) pred_map = { 0: m.time, 1: m.d_none, 2: m.d_none, 3: m.d_none, } location_set_map = get_location_set_map(index, index_set) self.assertSameMap(pred_map, location_set_map) index_set = m.b1dnd2.index_set() index = (1, 'c', 1, 10, 'a', 1) pred_map = { 0: m.time, 1: m.d_none, 2: m.d_none, 3: m.d_none, 4: m.d_2, 5: m.d_2, } location_set_map = get_location_set_map(index, index_set) self.assertSameMap(pred_map, location_set_map) index_set = m.b2dn.index_set() index = (1, 0, 'd', 3) pred_map = { 0: m.time, 1: m.space, 2: m.d_none, 3: m.d_none, } location_set_map = get_location_set_map(index, index_set) self.assertSameMap(pred_map, location_set_map) index_set = m.b2dnd2.index_set() index = (1, 'c', 1, 10, 'b', 2, 0) pred_map = { 0: m.time, 1: m.d_none, 2: m.d_none, 3: m.d_none, 4: m.d_2, 5: m.d_2, 6: m.space, } location_set_map = get_location_set_map(index, index_set) self.assertSameMap(pred_map, location_set_map) index_set = m.dnd2b1.index_set() index = ('d', 3, 'b', 2, 1) pred_map = { 0: m.d_none, 1: m.d_none, 2: m.d_2, 3: m.d_2, 4: m.time, } location_set_map = get_location_set_map(index, index_set) self.assertSameMap(pred_map, location_set_map) index_set = m.b3dn.index_set() index = (1, 'a', 1, 'd', 3, 0, 'b', 2) pred_map = { 0: m.time, 1: m.d_2, 2: m.d_2, 3: m.d_none, 4: m.d_none, 5: m.space, 6: m.d_2, 7: m.d_2, } location_set_map = get_location_set_map(index, index_set) self.assertSameMap(pred_map, location_set_map) index_set = m.dn2.index_set() index = (1, 'c', 1, 10, 'b', 2, 'd', 3, 'a', 1) with self.assertRaises(RuntimeError) as cm: location_set_map = get_location_set_map(index, index_set) self.assertIn('multiple sets of dimen==None', str(cm.exception))