procon 0.2.2

Procon (Pro)perty (Con)verter A programm to convert between different property formats.
#[cfg(test)]
mod tests {
    use log::LevelFilter;

    use crate::args::{Args, Command};
    use crate::nodes_converter::{default_filename, determine_output_filename};
    use crate::property_file_reader::Delimiter;

    #[test]
    fn default_filename_multiple_extensions() {
        let command = Command::Yaml {
            filename: "test.properties.properties".to_string(),
        };
        assert_eq!("test.properties.yaml", default_filename(&command));
    }

    #[test]
    fn default_filename_multiple_dots_input_name() {
        let command = Command::Yaml {
            filename: "test.test2.test3.properties".to_string(),
        };
        assert_eq!("test.test2.test3.yaml", default_filename(&command));
    }

    #[test]
    fn default_filename_yaml() {
        let command = Command::Yaml {
            filename: "test.properties".to_string(),
        };
        assert_eq!("test.yaml", default_filename(&command));
    }

    #[test]
    fn default_filename_json() {
        let command = Command::Json {
            filename: "test.properties".to_string(),
        };
        assert_eq!("test.json", default_filename(&command));
    }

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

    #[test]
    fn determine_default_filename_default() {
        let args: Args = Args {
            command: Command::Properties {
                property_delimiter: Delimiter::Equals,
                filename: "filename.properties".to_string(),
            },
            dry_run: false,
            log_level: LevelFilter::Off,
            output_filename: None,
        };

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

    #[test]
    fn determine_default_filename_command_line_input() {
        let cli_output_filename: String = "test.yaml".to_string();
        let args: Args = Args {
            command: Command::Properties {
                property_delimiter: Delimiter::Equals,
                filename: "filename.properties".to_string(),
            },
            dry_run: false,
            log_level: LevelFilter::Off,
            output_filename: Some(cli_output_filename.to_string()),
        };

        let filename: String = determine_output_filename(&args);
        assert_eq!(cli_output_filename, filename);
    }
}