nu-command 0.112.2

Nushell's built-in commands
Documentation
use nu_test_support::prelude::*;

#[test]
fn url_decode_simple() -> Result {
    test().run("'a%20b' | url decode").expect_value_eq("a b")
}

#[test]
fn url_decode_special_characters() -> Result {
    let code = "'%21%40%23%24%25%C2%A8%26%2A%2D%2B%3B%2C%7B%7D%5B%5D%28%29' | url decode";
    test().run(code).expect_value_eq("!@#$%ยจ&*-+;,{}[]()")
}

#[test]
fn url_decode_error_invalid_utf8() -> Result {
    let err = test().run("'%99' | url decode").expect_error()?;
    match err {
        ShellError::Generic(err) => {
            assert_eq!(err.error, "Failed to decode string");
            assert_contains("invalid utf-8 sequence", err.msg);
            Ok(())
        }
        err => Err(err.into()),
    }
}