| 372 | |
| 373 | @cross_language_test |
| 374 | def test_cross_language_reference(data_file_path): |
| 375 | with open(data_file_path, "rb") as f: |
| 376 | data_bytes = f.read() |
| 377 | buffer = pyfory.Buffer(data_bytes) |
| 378 | fory = pyfory.Fory(xlang=True, compatible=False, ref=True) |
| 379 | new_list = fory.deserialize(buffer) |
| 380 | assert new_list[0] is new_list |
| 381 | new_map = new_list[1] |
| 382 | assert new_map["k1"] is new_map |
| 383 | assert new_map["k2"] is new_list |
| 384 | |
| 385 | new_list2 = fory.deserialize(fory.serialize(new_list)) |
| 386 | assert new_list2[0] is new_list2 |
| 387 | new_map = new_list2[1] |
| 388 | assert new_map["k1"] is new_map |
| 389 | assert new_map["k2"] is new_list2 |
| 390 | |
| 391 | new_buf = pyfory.Buffer.allocate(32) |
| 392 | fory.serialize(new_list, buffer=new_buf) |
| 393 | with open(data_file_path, "wb+") as f: |
| 394 | f.write(new_buf.get_bytes(0, new_buf.get_writer_index())) |
| 395 | |
| 396 | |
| 397 | @dataclass |