feat: tests and fixed some minor bugs
This commit is contained in:
		
							parent
							
								
									3b6b5d7548
								
							
						
					
					
						commit
						174a3739b5
					
				
					 3 changed files with 78 additions and 24 deletions
				
			
		|  | @ -1,3 +1,51 @@ | ||||||
| pub mod commands; | pub mod commands; | ||||||
| pub mod packet; | pub mod packet; | ||||||
| pub mod prelude; | pub mod prelude; | ||||||
|  | 
 | ||||||
|  | #[cfg(test)] | ||||||
|  | mod tests { | ||||||
|  |     use crate::packet; | ||||||
|  |     use crate::packet::data_types::DataType; | ||||||
|  |     use crate::packet::identifier::Identifier; | ||||||
|  |     use crate::packet::packet_data::PacketData; | ||||||
|  | 
 | ||||||
|  |     #[test] | ||||||
|  |     pub fn data_types() { | ||||||
|  |         // test Vec<u8> -> Vec<DataType>
 | ||||||
|  |         assert_eq!( | ||||||
|  |             DataType::get_data(vec![0x00, 0x01, 0x00]), | ||||||
|  |             vec![ | ||||||
|  |                 DataType::Nothing, | ||||||
|  |                 DataType::Switch(false), | ||||||
|  |             ]); | ||||||
|  | 
 | ||||||
|  |         // test DataType -> Vec<u8>
 | ||||||
|  |         assert_eq!( | ||||||
|  |             Into::<Vec<u8>>::into(DataType::Switch(true)), | ||||||
|  |             vec![0x01, 0x01] | ||||||
|  |         ) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     #[test] | ||||||
|  |     pub fn packets() { | ||||||
|  |         assert_eq!(packet::Packet::V1 { | ||||||
|  |         src: Identifier::from(0xAABBCCDD), | ||||||
|  |         dest: Identifier::from(0xAABBCCDD), | ||||||
|  |         packet_id: Identifier::from(0x00000001), | ||||||
|  |         reply_to: Identifier::from(0x00000000), | ||||||
|  |         command: 0x00, | ||||||
|  |         data: PacketData::default(), | ||||||
|  |         }.build_base_packet(), | ||||||
|  |             vec![ | ||||||
|  |                 0x01, // version
 | ||||||
|  |                 0xAA, 0xBB, 0xCC, 0xDD, // src
 | ||||||
|  |                 0xAA, 0xBB, 0xCC, 0xDD, // dest
 | ||||||
|  |                 0x00, 0x00, 0x00, 0x01, // packet_id
 | ||||||
|  |                 0x00, 0x00, 0x00, 0x00, // reply_to
 | ||||||
|  |                 0x00, // command
 | ||||||
|  |                 0x00, 0x00, // data length
 | ||||||
|  |                 // no packet data
 | ||||||
|  |             ] | ||||||
|  |         ); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -1,21 +0,0 @@ | ||||||
| use domo_proto::packet::data_types::DataType; |  | ||||||
| use domo_proto::packet::identifier::Identifier; |  | ||||||
| use domo_proto::packet::packet_data::PacketData; |  | ||||||
| 
 |  | ||||||
| fn main() { |  | ||||||
|     let _ = domo_proto::packet::Packet::V1 { |  | ||||||
|         src: Identifier::from(0xAABBCCDD), |  | ||||||
|         dest: Identifier::from(0xAABBCCDD), |  | ||||||
|         packet_id: Identifier::from(0x00000001), |  | ||||||
|         reply_to: Identifier::from(0x00000000), |  | ||||||
|         command: 0x00, |  | ||||||
|         data: PacketData::default(), |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     let buf = vec![ |  | ||||||
|         0x00, 0x01, 0x00, 0x10, 0x00, 0xFF, 0x20, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |  | ||||||
|         0x01, 0xF0, 0xAA, 0xBB, 0xCC, 0xDD, |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     println!("{:?}", DataType::get_data(buf)); |  | ||||||
| } |  | ||||||
|  | @ -1,6 +1,7 @@ | ||||||
|  | use crate::packet::identifier::Identifier; | ||||||
| use crate::prelude::{as_u32_be, as_u64_be}; | use crate::prelude::{as_u32_be, as_u64_be}; | ||||||
| 
 | 
 | ||||||
| #[derive(Debug)] | #[derive(Debug, Eq, PartialEq)] | ||||||
| pub enum DataType { | pub enum DataType { | ||||||
|     // Basic types
 |     // Basic types
 | ||||||
|     Nothing, |     Nothing, | ||||||
|  | @ -15,7 +16,7 @@ pub enum DataType { | ||||||
|     Seconds(u64), |     Seconds(u64), | ||||||
| 
 | 
 | ||||||
|     // Domo Types
 |     // Domo Types
 | ||||||
|     NodeRef(u32), |     NodeRef(Identifier), | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl DataType { | impl DataType { | ||||||
|  | @ -91,8 +92,34 @@ impl From<Vec<u8>> for DataType { | ||||||
|             ), |             ), | ||||||
|             0x10 => impl_data_type!(value, 3, DataType::RGB(value[1], value[2], value[3])), |             0x10 => impl_data_type!(value, 3, DataType::RGB(value[1], value[2], value[3])), | ||||||
|             0x90 => impl_data_type!(value, 8, DataType::Seconds(as_u64_be(&value[1..9]))), |             0x90 => impl_data_type!(value, 8, DataType::Seconds(as_u64_be(&value[1..9]))), | ||||||
|             0xF0 => impl_data_type!(value, 4, DataType::NodeRef(as_u32_be(&value[1..5]))), |             0xF0 => impl_data_type!(value, 4, DataType::NodeRef(Identifier::from(&value[1..5]))), | ||||||
|             _ => DataType::Nothing, |             _ => DataType::Nothing, | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | impl Into<Vec<u8>> for DataType { | ||||||
|  |     fn into(self) -> Vec<u8> { | ||||||
|  |         match self { | ||||||
|  |             DataType::Nothing => vec![0x00], | ||||||
|  |             DataType::Switch(b) => vec![0x01, b as u8], | ||||||
|  |             DataType::Slider(v) => vec![0x02, v], | ||||||
|  |             DataType::Text(s) => { | ||||||
|  |                 let mut bytes = vec![0x03]; | ||||||
|  |                 bytes.extend(s.into_bytes()); | ||||||
|  |                 bytes | ||||||
|  |             }, | ||||||
|  |             DataType::RGB(r, g, b) => vec![0x10, r, g, b], | ||||||
|  |             DataType::Seconds(s) => { | ||||||
|  |                 let mut bytes = vec![0x90]; | ||||||
|  |                 bytes.extend_from_slice(s.to_be_bytes().as_ref()); | ||||||
|  |                 bytes | ||||||
|  |             }, | ||||||
|  |             DataType::NodeRef(id) => { | ||||||
|  |                 let mut bytes = vec![0x90]; | ||||||
|  |                 bytes.extend_from_slice(id.bytes.as_ref()); | ||||||
|  |                 bytes | ||||||
|  |             }, | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue