leetcode_rust/cases_cn/c000_0xx/
c000_015.rs

1use std::fs;
2
3use crate::{
4    common::{Case, CaseGroup},
5    new_case, vec2d,
6};
7
8use serde_json;
9
10use crate::models::case::*;
11
12pub fn use_cases() -> Vec<Case<Vec<i32>, Vec<Vec<i32>>, i32>> {
13    let mut case_group: CaseGroup<Vec<i32>, Vec<Vec<i32>>, i32> = CaseGroup::new();
14
15    macro_rules! new {
16        ({$val1:expr, $val2:expr})=>{
17            new_case!(case_group.create, $val1, $val2);
18        };
19        ({$val1:expr, $val2:expr}, $({$val3:expr, $val4:expr}),+) => {
20            new!({$val1, $val2});
21            new!($({$val3, $val4}),+)
22        };
23    }
24
25    new!(
26        {vec![-1,0,1,2,-1,-4],           vec2d![[-1,-1,2],[-1,0,1]]},
27        {vec![0,1,1],                    vec![]},
28        {vec![0,0,0],                    vec2d![[0,0,0]]},
29        {vec![0,0,0,0],                  vec2d![[0,0,0]]},
30        {vec![-4,-2,1,-5,-4,-4,4,-2,0,4,0,-2,3,1,-5,0],  vec2d![[-5,1,4],[-4,0,4],[-4,1,3],[-2,-2,4],[-2,1,1],[0,0,0]]},
31        {[0;3000].to_vec(),            vec2d![[0,0,0]]}
32    );
33
34    // Load large cases from extras.
35
36    if let Ok(json_content) = fs::read_to_string("extra/test_cases/data_three_sum.json") {
37        let extra_case_group: TestCaseGroup<Vec<i32>, Vec<Vec<i32>>> =
38            serde_json::from_str(json_content.as_str()).unwrap();
39
40        for case in extra_case_group.cases {
41            case_group.create(case.input, vec![case.expectation]);
42        }
43
44        println!("Test cases from extras loaded!");
45    } else {
46        eprintln!("Unable to load extras!")
47    }
48
49    case_group.all()
50}