leetcode_rust/cases_cn/c000_0xx/
c000_015.rs1use 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 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}