| 273 | |
| 274 | class TestArray(mlx_tests.MLXTestCase): |
| 275 | def test_array_basics(self): |
| 276 | x = mx.array(1) |
| 277 | self.assertEqual(x.size, 1) |
| 278 | self.assertEqual(x.ndim, 0) |
| 279 | self.assertEqual(x.itemsize, 4) |
| 280 | self.assertEqual(x.nbytes, 4) |
| 281 | self.assertEqual(x.shape, ()) |
| 282 | self.assertEqual(x.dtype, mx.int32) |
| 283 | self.assertEqual(x.item(), 1) |
| 284 | self.assertTrue(isinstance(x.item(), int)) |
| 285 | |
| 286 | with self.assertRaises(TypeError): |
| 287 | len(x) |
| 288 | |
| 289 | x = mx.array(1, mx.uint32) |
| 290 | self.assertEqual(x.item(), 1) |
| 291 | self.assertTrue(isinstance(x.item(), int)) |
| 292 | |
| 293 | x = mx.array(1, mx.int64) |
| 294 | self.assertEqual(x.item(), 1) |
| 295 | self.assertTrue(isinstance(x.item(), int)) |
| 296 | |
| 297 | x = mx.array(1, mx.bfloat16) |
| 298 | self.assertEqual(x.item(), 1.0) |
| 299 | |
| 300 | x = mx.array(1.0) |
| 301 | self.assertEqual(x.size, 1) |
| 302 | self.assertEqual(x.ndim, 0) |
| 303 | self.assertEqual(x.shape, ()) |
| 304 | self.assertEqual(x.dtype, mx.float32) |
| 305 | self.assertEqual(x.item(), 1.0) |
| 306 | self.assertTrue(isinstance(x.item(), float)) |
| 307 | |
| 308 | x = mx.array(False) |
| 309 | self.assertEqual(x.size, 1) |
| 310 | self.assertEqual(x.ndim, 0) |
| 311 | self.assertEqual(x.shape, ()) |
| 312 | self.assertEqual(x.dtype, mx.bool_) |
| 313 | self.assertEqual(x.item(), False) |
| 314 | self.assertTrue(isinstance(x.item(), bool)) |
| 315 | |
| 316 | x = mx.array(complex(1, 1)) |
| 317 | self.assertEqual(x.ndim, 0) |
| 318 | self.assertEqual(x.shape, ()) |
| 319 | self.assertEqual(x.dtype, mx.complex64) |
| 320 | self.assertEqual(x.item(), complex(1, 1)) |
| 321 | self.assertTrue(isinstance(x.item(), complex)) |
| 322 | |
| 323 | x = mx.array([True, False, True]) |
| 324 | self.assertEqual(x.dtype, mx.bool_) |
| 325 | self.assertEqual(x.ndim, 1) |
| 326 | self.assertEqual(x.shape, (3,)) |
| 327 | self.assertEqual(len(x), 3) |
| 328 | |
| 329 | x = mx.array([True, False, True], mx.float32) |
| 330 | self.assertEqual(x.dtype, mx.float32) |
| 331 | |
| 332 | x = mx.array([0, 1, 2]) |