csskit_derives 0.0.30

Derive macros for CSS parsing, visiting, and AST operations.
Documentation
use super::{assert_derive_snapshot, to_deriveinput};
use crate::semantic_eq;

macro_rules! assert_semantic_eq_snapshot {
	( $data:ident, $name:literal) => {
		assert_derive_snapshot!(semantic_eq::derive, $data, $name)
	};
}

#[test]
fn semantic_eq_tuple_struct_single_field() {
	let data = to_deriveinput! {
		struct Length(Number);
	};
	assert_semantic_eq_snapshot!(data, "semantic_eq_tuple_struct_single_field");
}

#[test]
fn semantic_eq_enum_single_field_variants() {
	let data = to_deriveinput! {
		enum Display {
			Block(Ident),
			Inline(Ident),
			None(Ident),
		}
	};
	assert_semantic_eq_snapshot!(data, "semantic_eq_enum_single_field_variants");
}

#[test]
fn semantic_eq_enum_with_named_struct_variant_single_field() {
	let data = to_deriveinput! {
		enum BorderStyle {
			Solid,
			Dashed { width: Length },
		}
	};
	assert_semantic_eq_snapshot!(data, "semantic_eq_enum_with_named_struct_variant_single_field");
}

#[test]
fn semantic_eq_enum_with_named_struct_variant_multiple_fields() {
	let data = to_deriveinput! {
		enum BorderStyle {
			Solid,
			Dotted { radius: Length, spacing: Length },
		}
	};
	assert_semantic_eq_snapshot!(data, "semantic_eq_enum_with_named_struct_variant_multiple_fields");
}

#[test]
fn semantic_eq_struct_skip_field() {
	let data = to_deriveinput! {
		struct StringFunction {
			name: Ident,
			#[semantic_eq(skip)]
			close: T![')'],
		}
	};
	assert_semantic_eq_snapshot!(data, "semantic_eq_struct_skip_field");
}

#[test]
fn semantic_eq_enum_skip_field() {
	let data = to_deriveinput! {
		enum Foo {
			Bar {
				name: Ident,
				#[semantic_eq(skip)]
				close: T![')'],
			},
		}
	};
	assert_semantic_eq_snapshot!(data, "semantic_eq_enum_skip_field");
}

#[test]
fn semantic_eq_enum_mixed_variants() {
	let data = to_deriveinput! {
		enum FlexWrap {
			Nowrap(Ident),
			Wrap { wrap: Option<Ident>, balance: Option<Ident> },
			WrapReverse { wrap_reverse: Option<Ident>, balance: Option<Ident> },
		}
	};
	assert_semantic_eq_snapshot!(data, "semantic_eq_enum_mixed_variants");
}