Skip to content

Commit 7ec5d23

Browse files
committed
Initialize Insta Snapshot Testing
- Added snapshot testing for the general serialize tests - updated addStruct test file
1 parent 6ad45f0 commit 7ec5d23

File tree

5 files changed

+80
-20
lines changed

5 files changed

+80
-20
lines changed

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,6 @@ pest_derive = "2.7.14"
1212
rustc-hash = "2.1.0"
1313
thiserror = "2.0.8"
1414
codespan-reporting = "0.11.1"
15+
16+
[dev-dependencies]
17+
insta = { version = "1.41.1", features = ["yaml"] }

src/serialize.rs

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,9 @@ pub fn serialize(out: &mut impl Write, tr: &Transaction, st: &SymbolTable) -> st
184184

185185
#[cfg(test)]
186186
pub mod tests {
187+
use insta::Settings;
188+
use std::path::Path;
189+
187190
use baa::BitVecValue;
188191

189192
use super::*;
@@ -232,32 +235,32 @@ pub mod tests {
232235

233236
// 3) create expressions
234237
let a_expr = add.e(Expr::Sym(a));
235-
add.add_expr_loc(a_expr, 193, 194, add_fileid);
238+
add.add_expr_loc(a_expr, 187, 188, add_fileid);
236239
let b_expr = add.e(Expr::Sym(b));
237-
add.add_expr_loc(b_expr, 208, 209, add_fileid);
240+
add.add_expr_loc(b_expr, 202, 203, add_fileid);
238241
let dut_s_expr = add.e(Expr::Sym(dut_s));
239-
add.add_expr_loc(dut_s_expr, 271, 276, add_fileid);
242+
add.add_expr_loc(dut_s_expr, 265, 270, add_fileid);
240243
let s_expr = add.e(Expr::Sym(s));
241244

242245
// 4) create statements
243246
let a_assign = add.s(Stmt::Assign(dut_a, a_expr));
244-
add.add_stmt_loc(a_assign, 184, 195, add_fileid);
247+
add.add_stmt_loc(a_assign, 178, 189, add_fileid);
245248
let b_assign = add.s(Stmt::Assign(dut_b, b_expr));
246-
add.add_stmt_loc(b_assign, 199, 210, add_fileid);
249+
add.add_stmt_loc(b_assign, 193, 204, add_fileid);
247250
let step = add.s(Stmt::Step);
248-
add.add_stmt_loc(step, 214, 221, add_fileid);
251+
add.add_stmt_loc(step, 208, 215, add_fileid);
249252
let fork = add.s(Stmt::Fork);
250-
add.add_stmt_loc(fork, 225, 232, add_fileid);
253+
add.add_stmt_loc(fork, 219, 226, add_fileid);
251254
let dut_a_assign = add.s(Stmt::Assign(dut_a, add.expr_dont_care()));
252-
add.add_stmt_loc(dut_a_assign, 236, 247, add_fileid);
255+
add.add_stmt_loc(dut_a_assign, 230, 241, add_fileid);
253256
let dut_b_assign = add.s(Stmt::Assign(dut_b, add.expr_dont_care()));
254-
add.add_stmt_loc(dut_b_assign, 251, 262, add_fileid);
257+
add.add_stmt_loc(dut_b_assign, 245, 256, add_fileid);
255258
let s_assign = add.s(Stmt::Assign(s, dut_s_expr));
256-
add.add_stmt_loc(s_assign, 266, 277, add_fileid);
259+
add.add_stmt_loc(s_assign, 260, 271, add_fileid);
257260
let dut_s_assign = add.s(Stmt::Assign(dut_s, a_expr));
258-
add.add_stmt_loc(dut_s_assign, 281, 292, add_fileid);
261+
add.add_stmt_loc(dut_s_assign, 275, 286, add_fileid);
259262
let assert = add.s(Stmt::AssertEq(s_expr, dut_s_expr));
260-
add.add_stmt_loc(assert, 296, 316, add_fileid);
263+
add.add_stmt_loc(assert, 290, 310, add_fileid);
261264
let body = vec![
262265
a_assign,
263266
b_assign,
@@ -361,18 +364,30 @@ pub mod tests {
361364
}
362365

363366
#[test]
364-
fn serialize_add_transaction() {
367+
fn test_serialize_add_transaction() {
365368
let mut handler = DiagnosticHandler::new();
366369
let (add, symbols) = create_add_transaction(&mut handler);
367370

368-
println!("{}", serialize_to_string(&add, &symbols).unwrap());
371+
let content = serialize_to_string(&add, &symbols).unwrap();
372+
373+
let mut settings = Settings::clone_current();
374+
settings.set_snapshot_path(Path::new("../tests/snapshots"));
375+
settings.bind(|| {
376+
insta::assert_snapshot!(content);
377+
});
369378
}
370379

371380
#[test]
372-
fn serialize_calyx_go_down_transaction() {
381+
fn test_serialize_calyx_go_down_transaction() {
373382
let mut handler = DiagnosticHandler::new();
374383
let (calyx_go_done, symbols) = create_calyx_go_down_transaction(&mut handler);
375-
println!("{}", serialize_to_string(&calyx_go_done, &symbols).unwrap());
384+
385+
let content = serialize_to_string(&calyx_go_done, &symbols).unwrap();
386+
let mut settings = Settings::clone_current();
387+
settings.set_snapshot_path(Path::new("../tests/snapshots"));
388+
settings.bind(|| {
389+
insta::assert_snapshot!(content);
390+
});
376391
}
377392

378393
#[test]

tests/addStruct.prot

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// maps to a verilog design, need to implement parsing
22
struct Adder {
3-
in a: u32,
4-
in b: u32,
5-
out s: u32,
3+
in a: u32,
4+
in b: u32,
5+
out s: u32,
66
}
77

88
fn add<DUT: Adder>(in a: u32, in b: u32, out s: u32) {
@@ -15,4 +15,4 @@ fn add<DUT: Adder>(in a: u32, in b: u32, out s: u32) {
1515
s := DUT.s;
1616
DUT.s := a;
1717
assert_eq(s, DUT.s);
18-
}
18+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
source: src/serialize.rs
3+
expression: content
4+
---
5+
struct Adder {
6+
in a: u32,
7+
in b: u32,
8+
out s: u32,
9+
}
10+
11+
fn add<DUT: Adder>(in a: u32, in b: u32, out s: u32) {
12+
DUT.a := a;
13+
DUT.b := b;
14+
step();
15+
fork();
16+
DUT.a := X;
17+
DUT.b := X;
18+
s := DUT.s;
19+
DUT.s := a;
20+
assert_eq(s, DUT.s);
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
source: src/serialize.rs
3+
expression: content
4+
---
5+
struct Calyx {
6+
in ii: u32,
7+
in go: u32,
8+
out done: u1,
9+
out oo: u32,
10+
}
11+
12+
fn calyx_go_done<dut: Calyx>(in ii: u32, out oo: u32) {
13+
dut.ii := ii;
14+
dut.go := 1;
15+
while !(dut.done == 1) {
16+
step();
17+
}
18+
dut.go := 0;
19+
dut.ii := X;
20+
oo := dut.oo;
21+
}

0 commit comments

Comments
 (0)