changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > core / rust/lib/sxp/tests/ser.rs

changeset 8: 1227f932b628
author: ellis <ellis@rwest.io>
date: Tue, 17 Oct 2023 20:36:37 -0400
permissions: -rw-r--r--
description: rust import
1 /// tests/ser.rs --- SER
2 use serde_derive::Serialize;
3 use std::io::BufWriter;
4 use sxp::{to_string, to_vec, to_writer};
5 #[test]
6 fn ser_struct() {
7  #[derive(Serialize)]
8  struct Test {
9  int: u32,
10  seq: Vec<&'static str>,
11  }
12 
13  let test = Test {
14  int: 1,
15  seq: vec!["a", "b"],
16  };
17  let expected = r#"(:int 1 :seq ("a" "b"))"#;
18  assert_eq!(to_string(&test).unwrap(), expected);
19  let mut buf = vec![];
20  to_writer(BufWriter::new(&mut buf), &test).unwrap();
21  assert_eq!(std::str::from_utf8(&buf).unwrap(), expected);
22  assert_eq!(
23  std::str::from_utf8(&to_vec(&test).unwrap()).unwrap(),
24  expected
25  );
26 }
27 
28 #[test]
29 fn ser_enum() {
30  #[derive(Serialize)]
31  enum E {
32  Unit,
33  #[serde(rename = "yoyo")]
34  Yoyo,
35  Newtype(u32),
36  Tuple(u32, u32),
37  Struct {
38  a: u32,
39  },
40  }
41 
42  let u = E::Unit;
43  let expected = r#"Unit"#;
44  assert_eq!(to_string(&u).unwrap(), expected);
45  let y = E::Yoyo;
46  let expected = r#"yoyo"#;
47  assert_eq!(to_string(&y).unwrap(), expected);
48  let n = E::Newtype(1);
49  let expected = r#"(Newtype 1)"#;
50  assert_eq!(to_string(&n).unwrap(), expected);
51 
52  let t = E::Tuple(1, 2);
53  let expected = r#"(Tuple (1 2))"#;
54  assert_eq!(to_string(&t).unwrap(), expected);
55 
56  let s = E::Struct { a: 1 };
57  let expected = r#"(Struct (:a 1))"#;
58  assert_eq!(to_string(&s).unwrap(), expected);
59 
60  let mut buf = vec![];
61  to_writer(BufWriter::new(&mut buf), &s).unwrap();
62  assert_eq!(std::str::from_utf8(&buf).unwrap(), expected);
63  assert_eq!(std::str::from_utf8(&to_vec(&s).unwrap()).unwrap(), expected);
64 }
65 
66 // TODO 2023-07-09
67 #[test]
68 fn ser_form() {}