#![allow(non_snake_case)]
#![allow(dead_code)]
use py_rs::PY;
#[derive(PY)]
#[py(export, export_to = "struct_rename/", rename_all = "UPPERCASE")]
struct RenameAllUpper {
a: i32,
b: i32,
}
#[test]
fn rename_all() {
assert_eq!(RenameAllUpper::inline(), "{ A: number, B: number, }");
}
#[derive(PY)]
#[py(export, export_to = "struct_rename/", rename_all = "camelCase")]
struct RenameAllCamel {
crc32c_hash: i32,
b: i32,
alreadyCamelCase: i32,
}
#[test]
fn rename_all_camel_case() {
assert_eq!(
RenameAllCamel::inline(),
"{ crc32cHash: number, b: number, alreadyCamelCase: number, }"
);
}
#[derive(PY)]
#[py(export, export_to = "struct_rename/", rename_all = "PascalCase")]
struct RenameAllPascal {
crc32c_hash: i32,
b: i32,
}
#[test]
fn rename_all_pascal_case() {
assert_eq!(
RenameAllPascal::inline(),
"{ Crc32cHash: number, B: number, }"
);
}
#[derive(PY, Default, serde::Serialize)]
#[py(export, export_to = "struct_rename/")]
#[cfg_attr(feature = "serde-compat", serde(rename_all = "SCREAMING-KEBAB-CASE"))]
#[cfg_attr(not(feature = "serde-compat"), py(rename_all = "SCREAMING-KEBAB-CASE"))]
struct RenameAllScreamingKebab {
crc32c_hash: i32,
some_field: i32,
some_other_field: i32,
}
#[test]
fn rename_all_screaming_kebab_case() {
let rename_all = RenameAllScreamingKebab::default();
assert_eq!(
RenameAllScreamingKebab::inline(),
r#"{ "CRC32C-HASH": number, "SOME-FIELD": number, "SOME-OTHER-FIELD": number, }"#
);
}
#[derive(serde::Serialize, PY)]
#[py(export, export_to = "struct_rename/", rename_all = "camelCase")]
struct RenameSerdeSpecialChar {
#[serde(rename = "a/b")]
b: i32,
}
#[cfg(feature = "serde-compat")]
#[test]
fn serde_rename_special_char() {
assert_eq!(RenameSerdeSpecialChar::inline(), r#"{ "a/b": number, }"#);
}