Skip to content

Commit 433b352

Browse files
committed
🔧 Use macro for tests codegen
1 parent b389ee8 commit 433b352

File tree

8 files changed

+82
-40
lines changed

8 files changed

+82
-40
lines changed

‎.editorconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ indent_size = 4
1313
[*.arc]
1414
end_of_line = lf
1515
indent_style = space
16-
indent_size = 2
16+
indent_size = 4
Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
use super::*;
22

3-
#[test]
4-
fn empty() {
5-
let ast = parse_text(include_str!("empty.arc")).unwrap();
6-
assert_eq!(include_str!("empty.out.arc"), format!("{:#?}", Value::from(ast)))
3+
macro_rules! run_test {
4+
($($F:ident), +,) => {
5+
$(run_test![$F, stringify!($F)];)+
6+
};
7+
($function_name:ident, $file_name:expr) => {
8+
#[test]
9+
fn $function_name() {
10+
let ast = parse_text(include_str!(concat!($file_name, ".arc"))).unwrap();
11+
assert_eq!(include_str!(concat!($file_name, ".out.arc")), format!("{:#?}", Value::from(ast)))
12+
}
13+
};
714
}
815

9-
#[test]
10-
fn basic() {
11-
let ast = parse_text(include_str!("basic.arc")).unwrap();
12-
assert_eq!(include_str!("basic.out.arc"), format!("{:#?}", Value::from(ast)))
13-
}
16+
run_test![
17+
empty,
18+
basic,
19+
scope,
20+
];
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{dict}
2+
a = 1
3+
4+
{empty}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
basic = {
2+
a: null
3+
b: true
4+
c: false
5+
d: 0
6+
e: +1.0
7+
f: -1.0
8+
g: string
9+
h: "string"
10+
i: 'string',
11+
j: [1, 2, 3]
12+
k: {key: 'value'}
13+
}
Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
use super::*;
22

3-
#[test]
4-
fn test() {
5-
let ast = parse("tests/hard_structure/nested_key.arc").unwrap();
6-
println!("{:#?}", Value::from(ast))
3+
macro_rules! run_test {
4+
($($F:ident), +,) => {
5+
$(run_test![$F, stringify!($F)];)+
6+
};
7+
($function_name:ident, $file_name:expr) => {
8+
#[test]
9+
fn $function_name() {
10+
let ast = parse_text(include_str!(concat!($file_name, ".arc"))).unwrap();
11+
assert_eq!(include_str!(concat!($file_name, ".out.arc")), format!("{:#?}", Value::from(ast)))
12+
}
13+
};
714
}
815

9-
#[test]
10-
fn negative_key() {
11-
let ast = parse("tests/hard_structure/negative_key.arc").unwrap();
12-
println!("{:#?}", Value::from(ast))
13-
}
16+
run_test![
17+
nested_key,
18+
negative_key,
19+
];
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"a": [
3+
false,
4+
null,
5+
true,
6+
],
7+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"a": "a",
3+
"b": {
4+
"a": "b.a",
5+
"b": {
6+
"a": "b.b.a",
7+
},
8+
},
9+
}
Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,21 @@
11
use super::*;
22

3-
#[test]
4-
fn test() {
5-
let ast = parse("tests/json_compatibility/package.json").unwrap();
6-
println!("{:#?}", Value::from(ast))
3+
macro_rules! run_test {
4+
($($F:ident), +,) => {
5+
$(run_test![$F, stringify!($F)];)+
6+
};
7+
($function_name:ident, $file_name:expr) => {
8+
#[test]
9+
fn $function_name() {
10+
let ast = parse_text(include_str!(concat!($file_name, ".json"))).unwrap();
11+
println!("{:#?}", Value::from(ast))
12+
}
13+
};
714
}
815

9-
#[test]
10-
fn json_string() {
11-
let ast = parse("tests/json_compatibility/string.json").unwrap();
12-
println!("{:#?}", Value::from(ast))
13-
}
14-
15-
#[test]
16-
fn json_number() {
17-
let ast = parse("tests/json_compatibility/number.json").unwrap();
18-
println!("{:#?}", Value::from(ast))
19-
}
20-
21-
#[test]
22-
fn json_object() {
23-
let ast = parse("tests/json_compatibility/object.json").unwrap();
24-
println!("{:#?}", Value::from(ast))
25-
}
16+
run_test![
17+
number,
18+
string,
19+
object,
20+
package,
21+
];

0 commit comments

Comments
 (0)