procon 0.2.6

Procon (Pro)perty (Con)verter A program to convert between different property formats.
Documentation
#[cfg(test)]
mod tests {
    use std::path::PathBuf;

    use clap_verbosity_flag::Verbosity;

    use crate::args::{Args, TargetFormat};
    use crate::nodes_writer::{default_filename, determine_output_filename};
    use crate::property_file_reader::Delimiter;

    #[test]
    fn default_filename_multiple_extensions() {
        let command = TargetFormat::Yaml {
            property_delimiter: Delimiter::Equals,
            file: PathBuf::from("test.properties.properties"),
        };
        assert_eq!("test.properties.yaml", default_filename(&command));
    }

    #[test]
    fn default_filename_multiple_dots_input_name() {
        let command = TargetFormat::Yaml {
            property_delimiter: Delimiter::Equals,
            file: PathBuf::from("test.test2.test3.properties"),
        };
        assert_eq!("test.test2.test3.yaml", default_filename(&command));
    }

    #[test]
    fn default_filename_yaml() {
        let command = TargetFormat::Yaml {
            property_delimiter: Delimiter::Equals,
            file: PathBuf::from("test.properties"),
        };
        assert_eq!("test.yaml", default_filename(&command));
    }

    #[test]
    fn default_filename_json() {
        let command = TargetFormat::Json {
            property_delimiter: Delimiter::Equals,
            file: PathBuf::from("test.properties"),
        };
        assert_eq!("test.json", default_filename(&command));
    }

    #[test]
    fn default_filename_properties() {
        let command = TargetFormat::Properties {
            property_delimiter: Delimiter::Equals,
            file: PathBuf::from("test.yaml"),
        };
        assert_eq!("test.properties", default_filename(&command));
    }

    #[test]
    fn determine_default_filename_default() {
        let args: Args = Args {
            target_format: TargetFormat::Properties {
                property_delimiter: Delimiter::Equals,
                file: PathBuf::from("filename.properties"),
            },
            dry_run: false,
            from_property_file: false,
            from_yaml_file: false,
            from_json_file: false,
            output_filename: None,
            verbose: Verbosity::new(0, 0),
        };

        let file: String = determine_output_filename(&args);
        assert_eq!("filename.properties", file);
    }

    #[test]
    fn determine_default_filename_command_line_input() {
        let cli_output_file: String = "test.yaml".to_string();
        let args: Args = Args {
            target_format: TargetFormat::Properties {
                property_delimiter: Delimiter::Equals,
                file: PathBuf::from("filename.properties"),
            },
            dry_run: false,
            from_property_file: false,
            from_yaml_file: false,
            from_json_file: false,
            output_filename: Some(cli_output_file.to_string()),
            verbose: Verbosity::new(0, 0),
        };

        let file: String = determine_output_filename(&args);
        assert_eq!(cli_output_file, file);
    }
}