#[cfg(test)]
mod tests
{
mod message_type
{
use super::super::*;
#[test]
fn from_u8_test()
{
assert_eq!(MessageType::Null, MessageType::from(0));
assert_eq!(MessageType::Get, MessageType::from(1));
assert_eq!(MessageType::Reply, MessageType::from(2));
assert_eq!(MessageType::Error, MessageType::from(3));
assert_eq!(MessageType::Shutdown, MessageType::from(4));
assert_eq!(MessageType::Unknown, MessageType::from(5));
}
#[test]
fn as_u8_test()
{
assert_eq!(MessageType::Null.as_u8(), 0);
assert_eq!(MessageType::Get.as_u8(), 1);
assert_eq!(MessageType::Reply.as_u8(), 2);
assert_eq!(MessageType::Error.as_u8(), 3);
assert_eq!(MessageType::Shutdown.as_u8(), 4);
assert_eq!(MessageType::Unknown.as_u8(), 255);
}
#[test]
fn to_string_test()
{
assert_eq!(String::from("Null"), MessageType::Null.to_string());
assert_eq!(String::from("Get"), MessageType::Get.to_string());
assert_eq!(String::from("Reply"), MessageType::Reply.to_string());
assert_eq!(String::from("Error"), MessageType::Error.to_string());
assert_eq!(String::from("Shutdown"), MessageType::Shutdown.to_string());
assert_eq!(String::from("Unknown"), MessageType::Unknown.to_string());
}
}
mod data_type
{
use super::super::*;
#[test]
fn from_u8_test()
{
assert_eq!(DataType::Null, DataType::from(0));
assert_eq!(DataType::SampleRate, DataType::from(1));
assert_eq!(DataType::SampleFormat, DataType::from(2));
assert_eq!(DataType::ChannelCount, DataType::from(3));
assert_eq!(DataType::AudioSamples, DataType::from(4));
assert_eq!(DataType::Unknown, DataType::from(255));
}
#[test]
fn as_u8_test()
{
assert_eq!(DataType::Null.as_u8(), 0);
assert_eq!(DataType::SampleRate.as_u8(), 1);
assert_eq!(DataType::SampleFormat.as_u8(), 2);
assert_eq!(DataType::ChannelCount.as_u8(), 3);
assert_eq!(DataType::AudioSamples.as_u8(), 4);
assert_eq!(DataType::Unknown.as_u8(), 255);
}
#[test]
fn to_string_test()
{
assert_eq!(DataType::Null.to_string(), String::from("Null"));
assert_eq!(DataType::SampleRate.to_string(), String::from("SampleRate"));
assert_eq!(DataType::SampleFormat.to_string(), String::from("SampleFormat"));
assert_eq!(DataType::ChannelCount.to_string(), String::from("ChannelCount"));
assert_eq!(DataType::AudioSamples.to_string(), String::from("AudioSamples"));
assert_eq!(DataType::Unknown.to_string(), String::from("Unknown"));
}
}
}
#[derive(Debug)]
#[derive(PartialEq)]
pub enum MessageType
{
Null,
Get,
Reply,
Error,
Shutdown,
Unknown,
}
impl MessageType
{
pub fn as_u8(&self) -> u8
{
return match self
{
MessageType::Null => 0,
MessageType::Get => 1,
MessageType::Reply => 2,
MessageType::Error => 3,
MessageType::Shutdown => 4,
MessageType::Unknown => 255,
};
}
}
impl From<u8> for MessageType
{
fn from(byte: u8) -> Self
{
return match byte
{
0 => MessageType::Null,
1 => MessageType::Get,
2 => MessageType::Reply,
3 => MessageType::Error,
4 => MessageType::Shutdown,
_ => MessageType::Unknown,
};
}
}
impl std::fmt::Display for MessageType
{
fn fmt(&self, formatter: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error>
{
let string: String = match self
{
MessageType::Null => String::from("Null"),
MessageType::Get => String::from("Get"),
MessageType::Reply => String::from("Reply"),
MessageType::Error => String::from("Error"),
MessageType::Shutdown => String::from("Shutdown"),
MessageType::Unknown => String::from("Unknown"),
};
formatter.write_str(string.as_str())?;
return Ok(());
}
}
#[derive(Debug)]
#[derive(PartialEq)]
pub enum DataType
{
Null,
SampleRate,
SampleFormat,
ChannelCount,
AudioSamples,
Unknown,
}
impl DataType
{
pub fn as_u8(&self) -> u8
{
return match self
{
DataType::Null => 0,
DataType::SampleRate => 1,
DataType::SampleFormat => 2,
DataType::ChannelCount => 3,
DataType::AudioSamples => 4,
DataType::Unknown => 255,
};
}
}
impl From<u8> for DataType
{
fn from(byte: u8) -> Self
{
return match byte
{
0 => DataType::Null,
1 => DataType::SampleRate,
2 => DataType::SampleFormat,
3 => DataType::ChannelCount,
4 => DataType::AudioSamples,
_ => DataType::Unknown,
};
}
}
impl std::fmt::Display for DataType
{
fn fmt(&self, formatter: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error>
{
let string: String = match self
{
DataType::Null => String::from("Null"),
DataType::SampleRate => String::from("SampleRate"),
DataType::SampleFormat => String::from("SampleFormat"),
DataType::ChannelCount => String::from("ChannelCount"),
DataType::AudioSamples => String::from("AudioSamples"),
DataType::Unknown => String::from("Unknown"),
};
formatter.write_str(string.as_str())?;
return Ok(());
}
}