| 408 | ) |
| 409 | |
| 410 | def test_basic_encode(self): |
| 411 | self.assertRaises(TypeError, encode, 100) |
| 412 | self.assertRaises(TypeError, encode, "hello") |
| 413 | self.assertRaises(TypeError, encode, None) |
| 414 | self.assertRaises(TypeError, encode, []) |
| 415 | |
| 416 | self.assertEqual(encode({}), BSON(b"\x05\x00\x00\x00\x00")) |
| 417 | self.assertEqual(encode({}), b"\x05\x00\x00\x00\x00") |
| 418 | self.assertEqual( |
| 419 | encode({"test": "hello world"}), |
| 420 | b"\x1B\x00\x00\x00\x02\x74\x65\x73\x74\x00\x0C\x00" |
| 421 | b"\x00\x00\x68\x65\x6C\x6C\x6F\x20\x77\x6F\x72\x6C" |
| 422 | b"\x64\x00\x00", |
| 423 | ) |
| 424 | self.assertEqual( |
| 425 | encode({"mike": 100}), |
| 426 | b"\x0F\x00\x00\x00\x10\x6D\x69\x6B\x65\x00\x64\x00\x00\x00\x00", |
| 427 | ) |
| 428 | self.assertEqual( |
| 429 | encode({"hello": 1.5}), |
| 430 | b"\x14\x00\x00\x00\x01\x68\x65\x6C\x6C\x6F\x00\x00\x00\x00\x00\x00\x00\xF8\x3F\x00", |
| 431 | ) |
| 432 | self.assertEqual( |
| 433 | encode({"true": True}), b"\x0C\x00\x00\x00\x08\x74\x72\x75\x65\x00\x01\x00" |
| 434 | ) |
| 435 | self.assertEqual( |
| 436 | encode({"false": False}), b"\x0D\x00\x00\x00\x08\x66\x61\x6C\x73\x65\x00\x00\x00" |
| 437 | ) |
| 438 | self.assertEqual( |
| 439 | encode({"empty": []}), |
| 440 | b"\x11\x00\x00\x00\x04\x65\x6D\x70\x74\x79\x00\x05\x00\x00\x00\x00\x00", |
| 441 | ) |
| 442 | self.assertEqual( |
| 443 | encode({"none": {}}), |
| 444 | b"\x10\x00\x00\x00\x03\x6E\x6F\x6E\x65\x00\x05\x00\x00\x00\x00\x00", |
| 445 | ) |
| 446 | self.assertEqual( |
| 447 | encode({"test": Binary(b"test", 0)}), |
| 448 | b"\x14\x00\x00\x00\x05\x74\x65\x73\x74\x00\x04\x00\x00\x00\x00\x74\x65\x73\x74\x00", |
| 449 | ) |
| 450 | self.assertEqual( |
| 451 | encode({"test": Binary(b"test", 2)}), |
| 452 | b"\x18\x00\x00\x00\x05\x74\x65\x73\x74\x00\x08\x00" |
| 453 | b"\x00\x00\x02\x04\x00\x00\x00\x74\x65\x73\x74\x00", |
| 454 | ) |
| 455 | self.assertEqual( |
| 456 | encode({"test": Binary(b"test", 128)}), |
| 457 | b"\x14\x00\x00\x00\x05\x74\x65\x73\x74\x00\x04\x00\x00\x00\x80\x74\x65\x73\x74\x00", |
| 458 | ) |
| 459 | self.assertEqual( |
| 460 | encode({"vector_int8": Binary.from_vector([-128, -1, 127], BinaryVectorDtype.INT8)}), |
| 461 | b"\x1c\x00\x00\x00\x05vector_int8\x00\x05\x00\x00\x00\t\x03\x00\x80\xff\x7f\x00", |
| 462 | ) |
| 463 | self.assertEqual( |
| 464 | encode({"vector_bool": Binary.from_vector([1, 127], BinaryVectorDtype.PACKED_BIT)}), |
| 465 | b"\x1b\x00\x00\x00\x05vector_bool\x00\x04\x00\x00\x00\t\x10\x00\x01\x7f\x00", |
| 466 | ) |
| 467 | self.assertEqual( |