#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum RedisCommand {
Ping,
Get,
Set,
Del,
Exists,
PExpire,
Ttl,
Scan,
Dbsize,
Info,
Eval,
#[cfg(feature = "lua")]
EvalSha,
#[cfg(feature = "lua")]
Script,
Incr,
IncrBy,
}
impl RedisCommand {
pub fn as_str(&self) -> &'static str {
match self {
Self::Ping => "PING",
Self::Get => "GET",
Self::Set => "SET",
Self::Del => "DEL",
Self::Exists => "EXISTS",
Self::PExpire => "PEXPIRE",
Self::Ttl => "TTL",
Self::Scan => "SCAN",
Self::Dbsize => "DBSIZE",
Self::Info => "INFO",
Self::Eval => "EVAL",
#[cfg(feature = "lua")]
Self::EvalSha => "EVALSHA",
#[cfg(feature = "lua")]
Self::Script => "SCRIPT",
Self::Incr => "INCR",
Self::IncrBy => "INCRBY",
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_all_commands_have_non_empty_str() {
let variants = [
RedisCommand::Ping,
RedisCommand::Get,
RedisCommand::Set,
RedisCommand::Del,
RedisCommand::Exists,
RedisCommand::PExpire,
RedisCommand::Ttl,
RedisCommand::Scan,
RedisCommand::Dbsize,
RedisCommand::Info,
RedisCommand::Eval,
#[cfg(feature = "lua")]
RedisCommand::EvalSha,
#[cfg(feature = "lua")]
RedisCommand::Script,
RedisCommand::Incr,
RedisCommand::IncrBy,
];
for cmd in &variants {
assert!(
!cmd.as_str().is_empty(),
"Command {:?} has empty as_str()",
cmd
);
}
}
#[test]
fn test_as_str_returns_uppercase() {
assert_eq!(RedisCommand::Ping.as_str(), "PING");
assert_eq!(RedisCommand::Get.as_str(), "GET");
assert_eq!(RedisCommand::Set.as_str(), "SET");
assert_eq!(RedisCommand::Del.as_str(), "DEL");
assert_eq!(RedisCommand::Exists.as_str(), "EXISTS");
assert_eq!(RedisCommand::PExpire.as_str(), "PEXPIRE");
assert_eq!(RedisCommand::Ttl.as_str(), "TTL");
assert_eq!(RedisCommand::Scan.as_str(), "SCAN");
assert_eq!(RedisCommand::Dbsize.as_str(), "DBSIZE");
assert_eq!(RedisCommand::Info.as_str(), "INFO");
}
}