()
| 766 | |
| 767 | #[test] |
| 768 | fn parser_handles_split_multiple_messages() -> Result<()> { |
| 769 | let data_row = buffers::data_row(&[Some("!")]); |
| 770 | let ready_for_query = buffers::ready_for_query(); |
| 771 | let mut combined = data_row.clone(); |
| 772 | combined.extend_from_slice(&ready_for_query); |
| 773 | |
| 774 | let verify_messages = |messages: &[BackendMessage]| { |
| 775 | assert_eq!(messages.len(), 2); |
| 776 | assert_data_row_fields(&messages[0], &[Some("!")]); |
| 777 | match &messages[1] { |
| 778 | BackendMessage::ReadyForQuery(msg) => assert_eq!(msg.status, b'I'), |
| 779 | other => panic!("unexpected message: {:?}", other.name()), |
| 780 | } |
| 781 | }; |
| 782 | |
| 783 | verify_messages(&parse_vec_chunks(vec![combined.clone()])?); |
| 784 | |
| 785 | let splits = [ |
| 786 | 11, |
| 787 | combined.len().saturating_sub(1), |
| 788 | combined.len().saturating_sub(4), |
| 789 | combined.len().saturating_sub(6), |
| 790 | 8, |
| 791 | 1, |
| 792 | ]; |
| 793 | |
| 794 | for split in splits { |
| 795 | if split == 0 || split >= combined.len() { |
| 796 | continue; |
| 797 | } |
| 798 | let first_len = combined.len() - split; |
| 799 | let first = combined[..first_len].to_vec(); |
| 800 | let second = combined[first_len..].to_vec(); |
| 801 | let messages = parse_vec_chunks(vec![first, second])?; |
| 802 | verify_messages(&messages); |
| 803 | } |
| 804 | |
| 805 | Ok(()) |
| 806 | } |
| 807 | |
| 808 | #[test] |
| 809 | fn parser_respects_buffer_views() -> Result<()> { |
nothing calls this directly
no test coverage detected