weap 0.1.3

一个简单实用的命令行小工具
Documentation
use assert_cmd::Command;
use predicates::prelude::*;

#[test]
fn test_cli_help() {
    Command::cargo_bin("weap")
        .unwrap()
        .arg("--help")
        .assert()
        .success()
        .stdout(predicate::str::contains("一个简单实用的命令行小工具"));
}

#[test]
fn test_cli_version() {
    Command::cargo_bin("weap")
        .unwrap()
        .arg("--version")
        .assert()
        .success()
        .stdout(predicate::str::contains("weap"));
}

#[test]
fn test_cli_uuid() {
    Command::cargo_bin("weap")
        .unwrap()
        .args(&["uuid"])
        .assert()
        .success()
        .stdout(predicate::str::is_match(r"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\n$").unwrap());
}

#[test]
fn test_cli_uuid_no_hyphens() {
    Command::cargo_bin("weap")
        .unwrap()
        .args(&["uuid", "-x"])
        .assert()
        .success()
        .stdout(predicate::str::is_match(r"^[0-9a-f]{32}\n$").unwrap());
}

#[test]
fn test_cli_pw() {
    Command::cargo_bin("weap")
        .unwrap()
        .args(&["pw"])
        .assert()
        .success()
        .stdout(predicate::str::is_match(r"^.{16}\n$").unwrap());
}

#[test]
fn test_cli_pw_custom_length() {
    Command::cargo_bin("weap")
        .unwrap()
        .args(&["pw", "-l", "32"])
        .assert()
        .success()
        .stdout(predicate::str::is_match(r"^.{32}\n$").unwrap());
}

#[test]
fn test_cli_pw_with_special() {
    Command::cargo_bin("weap")
        .unwrap()
        .args(&["pw", "-s"])
        .assert()
        .success();
}

#[test]
fn test_cli_sys() {
    Command::cargo_bin("weap")
        .unwrap()
        .args(&["sys"])
        .assert()
        .success()
        .stdout(predicate::str::contains("操作系统:"))
        .stdout(predicate::str::contains("CPU:"));
}

#[test]
fn test_cli_time() {
    Command::cargo_bin("weap")
        .unwrap()
        .args(&["time"])
        .assert()
        .success()
        .stdout(predicate::str::contains("当前本地时间:"))
        .stdout(predicate::str::contains("当前UTC时间:"));
}

#[test]
fn test_cli_time_with_unix() {
    Command::cargo_bin("weap")
        .unwrap()
        .args(&["time", "-u"])
        .assert()
        .success()
        .stdout(predicate::str::contains("Unix时间戳:"));
}

#[test]
fn test_cli_time_with_timezone() {
    Command::cargo_bin("weap")
        .unwrap()
        .args(&["time", "-t", "Asia/Shanghai"])
        .assert()
        .success()
        .stdout(predicate::str::contains("Asia/Shanghai时间:"));
}

#[test]
fn test_cli_time_with_invalid_timezone() {
    Command::cargo_bin("weap")
        .unwrap()
        .args(&["time", "-t", "Invalid/Zone"])
        .assert()
        .success()
        .stdout(predicate::str::contains("错误: 无效的时区"));
}

#[test]
fn test_cli_time_custom_format() {
    Command::cargo_bin("weap")
        .unwrap()
        .args(&["time", "-f", "%H:%M"])
        .assert()
        .success();
}

#[test]
fn test_cli_no_args() {
    Command::cargo_bin("weap")
        .unwrap()
        .assert()
        .failure();
}

#[test]
fn test_cli_unknown_command() {
    Command::cargo_bin("weap")
        .unwrap()
        .arg("unknown")
        .assert()
        .failure();
}