def func(s, i, d):
     layout = PackedTable(shape, vertex=vertex, center=center,
                          selection=s, ordering=i)
     packed = layout.pack(d)
     assert_equal(packed.shape, (len(layout),) + d.shape[2:])
     d_ = layout.unpack(packed)
     assert_equal(d_.shape, d.shape)
     assert np.all((d == d_) | missing(d_))
     out_packed = np.empty((len(layout),) + d.shape[2:],
                           d.dtype).view(type(d))
     out_unpacked = np.empty(d.shape, d.dtype).view(type(d))
     layout.pack(d, out=out_packed)
     layout.unpack(out_packed, out=out_unpacked)
     assert np.all((d == out_unpacked) | missing(out_unpacked))
     out_unpacked = np.empty((6,)+d.shape[1:], d.dtype)[::2].view(type(d))
     out_packed = np.empty((out_packed.shape[0]*2,)+out_packed.shape[1:],
                           d.dtype)[::2].view(type(d))
     layout.pack(d, out=out_packed)
     layout.unpack(out_packed, out=out_unpacked)
     assert np.all((d == out_unpacked) | missing(out_unpacked))
 def func(n, s, m):
     if s is not Ellipsis:
         tmp = np.ones(n, bool)
         tmp[s] = False
         s = tmp
     layout = PackedTable(n, selection=s, val=np.arange(n)*2.)
     slices = layout.split(m)
     assert_eq(len(slices), m)
     o = np.zeros(layout.shape, int)
     v = np.full(layout.shape, np.nan)
     for s in slices:
         o[s._index] += 1
         v[s._index] = s.val
     o[o == 0] = -1
     assert_same(o, layout.unpack(1))
     assert_same(v, layout.all.val)
     assert_same(np.concatenate([_.val for _ in slices]), layout.val)
def test_pack_none():
    layout = PackedTable((3, 3))
    assert_is_none(layout.pack(None))
    assert_is_none(layout.unpack(None))