use sqids::*;
#[test]
fn simple() {
let sqids =
Sqids::new(Some(Options::new(Some("0123456789abcdef".to_string()), None, None))).unwrap();
let numbers = vec![1, 2, 3];
let id = "489158";
assert_eq!(sqids.encode(&numbers).unwrap(), id);
assert_eq!(sqids.decode(id), numbers);
}
#[test]
fn short_alphabet() {
let sqids = Sqids::new(Some(Options::new(Some("abc".to_string()), None, None))).unwrap();
let numbers = vec![1, 2, 3];
assert_eq!(sqids.decode(&sqids.encode(&numbers).unwrap()), numbers);
}
#[test]
fn long_alphabet() {
let sqids = Sqids::new(Some(Options::new(
Some("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+|{}[];:'\"/?.>,<`~".to_string()),
None,
None,
))).unwrap();
let numbers = vec![1, 2, 3];
assert_eq!(sqids.decode(&sqids.encode(&numbers).unwrap()), numbers);
}
#[test]
fn multibyte_characters() {
assert_eq!(
Sqids::new(Some(Options::new(Some("ë1092".to_string()), None, None,))).err().unwrap(),
Error::AlphabetMultibyteCharacters
)
}
#[test]
fn repeating_alphabet_characters() {
assert_eq!(
Sqids::new(Some(Options::new(Some("aabcdefg".to_string()), None, None,))).err().unwrap(),
Error::AlphabetUniqueCharacters
)
}
#[test]
fn too_short_alphabet() {
assert_eq!(
Sqids::new(Some(Options::new(Some("ab".to_string()), None, None,))).err().unwrap(),
Error::AlphabetLength
)
}