atcoder_util/gen/
file_utils.rs1use crate::sample_cases::SampleCases;
2use std::env;
3use std::fs::{DirBuilder, File};
4use std::io::{self, Write};
5
6pub fn create_test_files(sc: &SampleCases, problem_id: &str) -> Result<(), io::Error> {
8 create_directory(format!("io_examples/{}", problem_id))?;
9 create_directory(format!("io_examples/{}/{}_input", problem_id, problem_id))?;
10 create_directory(format!("io_examples/{}/{}_output", problem_id, problem_id))?;
11
12 for (i, input_example) in sc.input.iter().enumerate() {
13 let file_name = format!(
14 r"io_examples/{}/{}_input/input{}.txt",
15 problem_id,
16 problem_id,
17 i + 1
18 );
19 create_test_file(input_example, file_name).expect("Failed to create file.");
20 }
21
22 for (i, output_example) in sc.output.iter().enumerate() {
23 let file_name = format!(
24 r"io_examples/{}/{}_output/output{}.txt",
25 problem_id,
26 problem_id,
27 i + 1
28 );
29 create_test_file(output_example, file_name).expect("Failed to create file.");
30 }
31 Ok(())
32}
33
34pub fn create_directory(dir_name: String) -> io::Result<()> {
36 let mut dir = env::current_dir()?;
37 dir.push(dir_name);
38 if dir.is_dir() {
39 Ok(())
40 } else {
41 DirBuilder::new().create(dir)
42 }
43}
44
45fn create_test_file(file_content: &String, file_name: String) -> Result<(), io::Error> {
47 let file = File::create(file_name)?;
48 let mut writer = io::BufWriter::new(file);
49 write!(writer, "{}", file_content).unwrap();
50 Ok(())
51}