Add test for loading asciicast v3

This commit is contained in:
Marcin Kulik
2025-05-03 15:47:50 +02:00
parent 07af5ec3f0
commit 3c1de97251
5 changed files with 59 additions and 2 deletions

View File

@@ -203,7 +203,8 @@ mod tests {
#[test]
fn open_v2_minimal() {
let Asciicast { header, events } =
super::open_from_path("tests/casts/minimal.cast").unwrap();
super::open_from_path("tests/casts/minimal-v2.cast").unwrap();
let events = events.collect::<Result<Vec<Event>>>().unwrap();
assert_eq!((header.term_cols, header.term_rows), (100, 50));
@@ -215,7 +216,8 @@ mod tests {
#[test]
fn open_v2_full() {
let Asciicast { header, events } = super::open_from_path("tests/casts/full.cast").unwrap();
let Asciicast { header, events } =
super::open_from_path("tests/casts/full-v2.cast").unwrap();
let events = events.take(5).collect::<Result<Vec<Event>>>().unwrap();
let theme = header.term_theme.unwrap();
@@ -235,6 +237,7 @@ mod tests {
assert!(matches!(events[2].data, EventData::Input(ref s) if s == "\n"));
assert_eq!(events[3].time, 5_600_001);
assert!(
matches!(events[3].data, EventData::Resize(ref cols, ref rows) if *cols == 80 && *rows == 40)
);
@@ -243,6 +246,52 @@ mod tests {
assert!(matches!(events[4].data, EventData::Output(ref s) if s == "\r\n"));
}
#[test]
fn open_v3_minimal() {
let Asciicast { header, events } =
super::open_from_path("tests/casts/minimal-v3.cast").unwrap();
let events = events.collect::<Result<Vec<Event>>>().unwrap();
assert_eq!((header.term_cols, header.term_rows), (100, 50));
assert!(header.term_theme.is_none());
assert_eq!(events[0].time, 1230000);
assert!(matches!(events[0].data, EventData::Output(ref s) if s == "hello"));
}
#[test]
fn open_v3_full() {
let Asciicast { header, events } =
super::open_from_path("tests/casts/full-v3.cast").unwrap();
let events = events.take(5).collect::<Result<Vec<Event>>>().unwrap();
let theme = header.term_theme.unwrap();
assert_eq!((header.term_cols, header.term_rows), (100, 50));
assert_eq!(header.timestamp, Some(1509091818));
assert_eq!(theme.fg, RGB8::new(0, 0, 0));
assert_eq!(theme.bg, RGB8::new(0xff, 0xff, 0xff));
assert_eq!(theme.palette[0], RGB8::new(0x24, 0x1f, 0x31));
assert_eq!(events[0].time, 1);
assert!(matches!(events[0].data, EventData::Output(ref s) if s == "ż"));
assert_eq!(events[1].time, 1_000_001);
assert!(matches!(events[1].data, EventData::Output(ref s) if s == "ółć"));
assert_eq!(events[2].time, 1_300_001);
assert!(matches!(events[2].data, EventData::Input(ref s) if s == "\n"));
assert_eq!(events[3].time, 2_900_002);
assert!(
matches!(events[3].data, EventData::Resize(ref cols, ref rows) if *cols == 80 && *rows == 40)
);
assert_eq!(events[4].time, 13_400_002);
assert!(matches!(events[4].data, EventData::Output(ref s) if s == "\r\n"));
}
#[test]
fn encoder() {
let mut data = Vec::new();

6
tests/casts/full-v3.cast Normal file
View File

@@ -0,0 +1,6 @@
{"version":3,"term":{"cols":100,"rows":50,"theme":{"fg":"#000000","bg":"#ffffff","palette":"#241f31:#c01c28:#2ec27e:#f5c211:#1e78e4:#9841bb:#0ab9dc:#c0bfbc:#5e5c64:#ed333b:#57e389:#f8e45c:#51a1ff:#c061cb:#4fd2fd:#f6f5f4"}},"timestamp": 1509091818,"command":"/bin/bash","env":{"TERM":"xterm-256color","SHELL":"/bin/bash"}}
[0.000001, "o", "ż"]
[1.0, "o", "ółć"]
[0.3, "i", "\n"]
[1.600001, "r", "80x40"]
[10.5, "o", "\r\n"]

View File

@@ -0,0 +1,2 @@
{"version":3,"term":{"cols":100,"rows":50}}
[1.23, "o", "hello"]