def test_basic_object_type(self):
     self.assertTrue(issubclass(DyNDDataDescriptor, IDataDescriptor))
     a = nd.array([[1, 2, 3], [4, 5, 6]])
     dd = DyNDDataDescriptor(a)
     # Make sure the right type is returned
     self.assertTrue(isinstance(dd, IDataDescriptor))
     self.assertEqual(dd_as_py(dd), [[1, 2, 3], [4, 5, 6]])
    def test_var_dim(self):
        a = nd.array([[1, 2, 3], [4, 5], [6]])
        dd = DyNDDataDescriptor(a)

        self.assertEqual(dd.dshape, datashape.dshape('3, var, int32'))
        self.assertEqual(dd_as_py(dd), [[1, 2, 3], [4, 5], [6]])
        self.assertEqual(dd_as_py(dd[0]), [1, 2, 3])
        self.assertEqual(dd_as_py(dd[1]), [4, 5])
        self.assertEqual(dd_as_py(dd[2]), [6])
    def test_descriptor_getitem_types(self):
        a = nd.array([[1, 2, 3], [4, 5, 6]])
        dd = DyNDDataDescriptor(a)

        self.assertEqual(dd.dshape, datashape.dshape('2, 3, int32'))
        # Indexing should produce DyNDDataDescriptor instances
        self.assertTrue(isinstance(dd[0], DyNDDataDescriptor))
        self.assertEqual(dd_as_py(dd[0]), [1, 2, 3])
        self.assertTrue(isinstance(dd[1, 2], DyNDDataDescriptor))
        self.assertEqual(dd_as_py(dd[1, 2]), 6)
    def test_descriptor_iter_types(self):
        a = nd.array([[1, 2, 3], [4, 5, 6]])
        dd = DyNDDataDescriptor(a)

        self.assertEqual(dd.dshape, datashape.dshape('2, 3, int32'))
        # Iteration should produce DyNDDataDescriptor instances
        vals = []
        for el in dd:
            self.assertTrue(isinstance(el, DyNDDataDescriptor))
            self.assertTrue(isinstance(el, IDataDescriptor))
            vals.append(dd_as_py(el))
        self.assertEqual(vals, [[1, 2, 3], [4, 5, 6]])