[unit_test] Add more unit tests for uwb_uci_packets

Bug: 330169927
Test: atest libuwb_uci_packet_tests
Change-Id: I34ce94335f04768dd4a2abe6efe53fee3fbbf63a
diff --git a/src/rust/uwb_uci_packets/src/lib.rs b/src/rust/uwb_uci_packets/src/lib.rs
index 336aed4..10acea1 100644
--- a/src/rust/uwb_uci_packets/src/lib.rs
+++ b/src/rust/uwb_uci_packets/src/lib.rs
@@ -1107,6 +1107,74 @@
     }
 
     #[test]
+    fn test_build_multicast_update_packet_v2_short_session_key() {
+        let short_address: [u8; 2] = [0x12, 0x34];
+        let controlee = Controlee_V2_0_16_Byte_Version {
+            short_address,
+            subsession_id: 0x1324_3546,
+            subsession_key: [
+                0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef, 0x12, 0x34, 0x56, 0x78, 0x90, 0xab,
+                0xcd, 0xef,
+            ],
+        };
+        let packet: UciControlPacket = build_session_update_controller_multicast_list_cmd(
+            0x1425_3647,
+            UpdateMulticastListAction::AddControleeWithShortSubSessionKey,
+            Controlees::ShortSessionKey(vec![controlee; 1]),
+        )
+        .unwrap()
+        .into();
+        let packet_fragments: Vec<UciControlPacketHal> = packet.into();
+        let uci_packet: Vec<u8> = packet_fragments[0].clone().into();
+        assert_eq!(
+            uci_packet,
+            vec![
+                0x21, 0x07, 0x00, 0x1c, // 2(packet info), RFU, payload length(28)
+                0x47, 0x36, 0x25, 0x14, // 4(session id (LE))
+                0x02, 0x01, 0x12, 0x34, // action, # controlee, 2(short address (LE))
+                0x46, 0x35, 0x24, 0x13, // 4(subsession id (LE))
+                0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef, 0x12, 0x34, 0x56, 0x78, 0x90, 0xab,
+                0xcd, 0xef, // 16(subsession key(LE))
+            ]
+        );
+    }
+
+    #[test]
+    fn test_build_multicast_update_packet_v2_long_session_key() {
+        let short_address: [u8; 2] = [0x12, 0x34];
+        let controlee = Controlee_V2_0_32_Byte_Version {
+            short_address,
+            subsession_id: 0x1324_3546,
+            subsession_key: [
+                0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef, 0x12, 0x34, 0x56, 0x78, 0x90, 0xab,
+                0xcd, 0xef, 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef, 0x12, 0x34, 0x56, 0x78,
+                0x90, 0xab, 0xcd, 0xef,
+            ],
+        };
+        let packet: UciControlPacket = build_session_update_controller_multicast_list_cmd(
+            0x1425_3647,
+            UpdateMulticastListAction::AddControleeWithLongSubSessionKey,
+            Controlees::LongSessionKey(vec![controlee; 1]),
+        )
+        .unwrap()
+        .into();
+        let packet_fragments: Vec<UciControlPacketHal> = packet.into();
+        let uci_packet: Vec<u8> = packet_fragments[0].clone().into();
+        assert_eq!(
+            uci_packet,
+            vec![
+                0x21, 0x07, 0x00, 0x2c, // 2(packet info), RFU, payload length(44)
+                0x47, 0x36, 0x25, 0x14, // 4(session id (LE))
+                0x03, 0x01, 0x12, 0x34, // action, # controlee, 2(short address (LE))
+                0x46, 0x35, 0x24, 0x13, // 4(subsession id (LE))
+                0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef, 0x12, 0x34, 0x56, 0x78, 0x90, 0xab,
+                0xcd, 0xef, 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef, 0x12, 0x34, 0x56, 0x78,
+                0x90, 0xab, 0xcd, 0xef, // 32(subsession key(LE))
+            ]
+        );
+    }
+
+    #[test]
     fn test_to_raw_payload() {
         let payload = vec![0x11, 0x22, 0x33];
         let payload_clone = payload.clone();
@@ -1314,4 +1382,59 @@
         assert_eq!(measurement.dt_anchor_location, vec![]);
         assert_eq!(measurement.ranging_rounds, vec![0x02, 0x05]);
     }
+
+    #[test]
+    fn test_build_data_transfer_phase_config_cmd() {
+        let packet: UciControlPacket =
+            build_data_transfer_phase_config_cmd(0x1234_5678, 0x0, 0x2, 1, vec![0, 1], vec![2, 3])
+                .unwrap()
+                .into();
+        let packet_fragments: Vec<UciControlPacketHal> = packet.into();
+        let uci_packet: Vec<u8> = packet_fragments[0].clone().into();
+        assert_eq!(
+            uci_packet,
+            vec![
+                0x21, 0x0e, 0x00, 0x0b, // 2(packet info), RFU, payload length(11)
+                0x78, 0x56, 0x34, 0x12, // 4(session id (LE))
+                0x00, 0x02, 0x01, // dtpcm_repetition, data_transfer_control, dtpml_size
+                0x00, 0x01, 0x02, 0x03, // payload
+            ]
+        );
+    }
+
+    #[test]
+    fn test_build_session_set_hybrid_controller_config_cmd() {
+        let phase_list_short_mac_address = PhaseListShortMacAddress {
+            session_token: 0x1324_3546,
+            start_slot_index: 0x1111,
+            end_slot_index: 0x1121,
+            phase_participation: 0x0,
+            mac_address: [0x1, 0x2],
+        };
+        let packet: UciControlPacket = build_session_set_hybrid_controller_config_cmd(
+            0x1234_5678,
+            0x0,
+            0x0,
+            [1; 8],
+            PhaseList::ShortMacAddress(vec![phase_list_short_mac_address]),
+        )
+        .unwrap()
+        .into();
+        let packet_fragments: Vec<UciControlPacketHal> = packet.into();
+        let uci_packet: Vec<u8> = packet_fragments[0].clone().into();
+        assert_eq!(
+            uci_packet,
+            vec![
+                0x21, 0x0c, 0x00, 0x19, // 2(packet info), RFU, payload length(25)
+                0x78, 0x56, 0x34, 0x12, // 4(session id (LE))
+                0x00, 0x00, // message_control, number_of_phases
+                0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // update_time
+                0x46, 0x35, 0x24, 0x13, // session id (LE)
+                0x11, 0x11, // start slot index (LE)
+                0x21, 0x11, // end slot index (LE)
+                0x00, // phase_participation
+                0x01, 0x02, // mac address
+            ]
+        );
+    }
 }