use crate::strings::StringEncoding;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum NsisVersion {
V1,
V2,
V3,
Park,
}
impl NsisVersion {
pub fn detect(encoding: StringEncoding, is_legacy_signature: bool) -> Self {
if is_legacy_signature {
return NsisVersion::V1;
}
match encoding {
StringEncoding::Unicode => NsisVersion::V3,
StringEncoding::Park => NsisVersion::Park,
StringEncoding::Ansi => NsisVersion::V2,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn detect_v1_from_legacy() {
assert_eq!(
NsisVersion::detect(StringEncoding::Ansi, true),
NsisVersion::V1
);
}
#[test]
fn detect_v2_from_ansi() {
assert_eq!(
NsisVersion::detect(StringEncoding::Ansi, false),
NsisVersion::V2
);
}
#[test]
fn detect_v3_from_unicode() {
assert_eq!(
NsisVersion::detect(StringEncoding::Unicode, false),
NsisVersion::V3
);
}
#[test]
fn detect_park() {
assert_eq!(
NsisVersion::detect(StringEncoding::Park, false),
NsisVersion::Park
);
}
}