#![cfg(feature = "derive")]
use core::fmt;
use miniarg::{ArgumentIterator, Key, ParseError};
#[derive(Debug, Key, PartialEq, Eq, Hash)]
enum SimpleKeys {
Key,
Key1,
Key2,
Köy,
}
#[test]
fn basic() {
let cmdline = "executable";
assert_eq!(
SimpleKeys::parse(&cmdline)
.collect::<Result<Vec<_>, _>>()
.unwrap(),
Vec::new()
);
}
#[test]
fn key_value() {
let cmdline = "executable -key value";
assert_eq!(
SimpleKeys::parse(&cmdline)
.collect::<Result<Vec<_>, _>>()
.unwrap(),
vec![(&SimpleKeys::Key, "value")]
);
}
#[test]
fn two_key_value() {
let cmdline = "executable -key1 value1 -key2 value2";
assert_eq!(
SimpleKeys::parse(&cmdline)
.collect::<Result<Vec<_>, _>>()
.unwrap(),
vec![(&SimpleKeys::Key1, "value1"), (&SimpleKeys::Key2, "value2")]
);
}
#[test]
fn key_two_value() {
let cmdline = "executable -key value1 -key value2";
assert_eq!(
SimpleKeys::parse(&cmdline)
.collect::<Result<Vec<_>, _>>()
.unwrap(),
vec![(&SimpleKeys::Key, "value1"), (&SimpleKeys::Key, "value2")]
);
}
#[test]
fn just_key() {
let cmdline = "executable -key";
assert_eq!(
SimpleKeys::parse(&cmdline)
.collect::<Result<Vec<_>, _>>()
.unwrap(),
vec![(&SimpleKeys::Key, "")]
);
}
#[test]
fn invalid_key() {
let cmdline = "executable -invalid";
assert_eq!(
SimpleKeys::parse(&cmdline)
.collect::<Result<Vec<_>, _>>()
.unwrap_err(),
ParseError::UnknownKey("invalid")
);
}
#[test]
fn missing_key() {
let cmdline = "executable value";
assert_eq!(
SimpleKeys::parse(&cmdline)
.collect::<Result<Vec<_>, _>>()
.unwrap_err(),
ParseError::NotAKey("value")
);
}
#[test]
fn help_text() {
assert_eq!(
SimpleKeys::help_text(),
"-key\t first key\n-key1\t second key\n-key2\t\n-köy\t Th€ döcüm€ntätiön änd th€ k€y häv€ nön-äscii chärs."
);
}
#[test]
fn non_ascii_basic() {
let cmdline = "€x€cütäbl€";
assert_eq!(
SimpleKeys::parse(&cmdline)
.collect::<Result<Vec<_>, _>>()
.unwrap(),
Vec::new()
);
}
#[test]
fn non_ascii_key() {
let cmdline = "executable -köy value";
assert_eq!(
SimpleKeys::parse(&cmdline)
.collect::<Result<Vec<_>, _>>()
.unwrap(),
vec![(&SimpleKeys::Köy, "value")]
);
}
#[test]
fn non_ascii_value() {
let cmdline = "executable -key 🦀🎉";
assert_eq!(
SimpleKeys::parse(&cmdline)
.collect::<Result<Vec<_>, _>>()
.unwrap(),
vec![(&SimpleKeys::Key, "🦀🎉")]
);
}