rsvim_core 0.1.2

The core library for RSVIM text editor.
Documentation
use super::cli::*;

use std::path::Path;

#[test]
fn cli_opt1() {
  let input = [
    vec![],
    vec!["README.md"],
    vec!["README.md", "LICENSE"],
    vec!["README.md", "LICENSE", "--help", "--version"],
    vec!["README.md", "LICENSE", "-h", "-V"],
    vec!["README.md", "LICENSE", "--headless"],
  ];

  let to_pb = |paths: Vec<&str>| {
    paths
      .iter()
      .map(|p| Path::new(p).to_path_buf())
      .collect::<Vec<_>>()
  };

  let expects = [
    CliOptions::new(CliSpecialOptions::empty(), to_pb(vec![]), false),
    CliOptions::new(
      CliSpecialOptions::empty(),
      to_pb(vec!["README.md"]),
      false,
    ),
    CliOptions::new(
      CliSpecialOptions::empty(),
      to_pb(vec!["README.md", "LICENSE"]),
      false,
    ),
    CliOptions::new(
      CliSpecialOptions::new(true, false, true),
      to_pb(vec!["README.md", "LICENSE"]),
      false,
    ),
    CliOptions::new(
      CliSpecialOptions::new(true, true, false),
      to_pb(vec!["README.md", "LICENSE"]),
      false,
    ),
    CliOptions::new(
      CliSpecialOptions::empty(),
      to_pb(vec!["README.md", "LICENSE"]),
      true,
    ),
  ];

  assert_eq!(input.len(), expects.len());
  let n = input.len();
  for i in 0..n {
    let actual = CliOptions::from_args(&input[i]).unwrap();
    let expect = &expects[i];
    assert_eq!(actual.headless(), expect.headless());
    assert_eq!(actual.file().len(), expect.file().len());
    for (j, act) in actual.file().iter().enumerate() {
      assert_eq!(act, &expect.file()[j]);
    }
    assert_eq!(actual.special_opts(), expect.special_opts());
  }
}

#[test]
fn cli_opt2() {
  let input = [vec!["--ex"], vec!["--v"]];

  for i in input {
    let actual = CliOptions::from_args(&i);
    assert!(actual.is_err());
  }
}