feat(core): Snapshot derives Deserialize + PartialEq for disk persistence
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
use serde::Serialize;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use alacritty_terminal::index::Point;
|
||||
use alacritty_terminal::term::cell::Flags;
|
||||
use alacritty_terminal::vte::ansi::Color;
|
||||
use crate::grid::GridSurface;
|
||||
|
||||
/// Serializable snapshot returned by `attach`.
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||
pub struct Snapshot {
|
||||
/// ANSI byte dump suitable for `xterm.write()`.
|
||||
pub ansi: String,
|
||||
@@ -120,6 +120,18 @@ mod tests {
|
||||
assert_eq!(a.rows, 3);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn snapshot_round_trips_through_json() {
|
||||
let mut g = GridSurface::new(20, 4);
|
||||
g.feed(b"hello");
|
||||
let snap = snapshot_ansi(&g);
|
||||
let json = serde_json::to_string(&snap).unwrap();
|
||||
let back: Snapshot = serde_json::from_str(&json).unwrap();
|
||||
assert_eq!(back.ansi, snap.ansi);
|
||||
assert_eq!((back.cols, back.rows), (snap.cols, snap.rows));
|
||||
assert_eq!((back.cursor_row, back.cursor_col), (snap.cursor_row, snap.cursor_col));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn cursor_is_one_based_after_input() {
|
||||
let mut g = GridSurface::new(10, 3);
|
||||
|
||||
Reference in New Issue
Block a user