tidos 0.7.6

Tidos is a component framework that can be served by any web framework.
Documentation
mod control_tags;

use tidos::view;

#[test]
fn a_simple_conditional() {
	assert_eq!(
		&view! {
			{#if true}
				<p>Hello world</p>
			{/if}
		},
		"<p>Hello world</p>"
	);

	assert_eq!(
		&view! {
			{#if false}
				<p>Hello world</p>
			{/if}
		},
		""
	);
}

#[test]
fn a_simple_conditional_with_an_else() {
	assert_eq!(
		&view! {
			{#if true}
				<p>Hello world</p>
			{:else}
				<p>Hello mars</p>
			{/if}
		},
		"<p>Hello world</p>"
	);

	assert_eq!(
		&view! {
			{#if false}
				<p>Hello world</p>
			{:else}
				<p>Hello mars</p>
			{/if}
		},
		"<p>Hello mars</p>"
	);
}

#[test]
fn a_simple_conditional_with_if_else_chain() {
	fn view_component(n: usize) -> String {
		view! {
			{#if n == 0}
				<p>0</p>
			{:else if n == 1}
				<p>1</p>
			{/if}
		}
	}

	for i in 0..=1 {
		assert_eq!(view_component(i), format!("<p>{}</p>", i));
	}
	assert_eq!(&view_component(2), "");

	fn view_component_multiple_if_else(n: usize) -> String {
		view! {
			{#if n == 0}
				<p>0</p>
			{:else if n == 1}
				<p>1</p>
			{:else if n == 2}
				<p>2</p>
			{/if}
		}
	}

	for i in 0..=2 {
		assert_eq!(view_component_multiple_if_else(i), format!("<p>{}</p>", i));
	}
	assert_eq!(&view_component_multiple_if_else(3), "");

	fn view_component_with_else(n: usize) -> String {
		view! {
			{#if n == 0}
				<p>0</p>
			{:else if n == 1}
				<p>1</p>
			{:else}
				<p>Hello world</p>
			{/if}
		}
	}

	for i in 0..=1 {
		assert_eq!(view_component_with_else(i), format!("<p>{}</p>", i));
	}
	assert_eq!(&view_component_with_else(2), "<p>Hello world</p>");

	fn view_component_multiple_if_else_with_else(n: usize) -> String {
		view! {
			{#if n == 0}
				<p>0</p>
			{:else if n == 1}
				<p>1</p>
			{:else if n == 2}
				<p>2</p>
			{:else}
				<p>Hello world</p>
			{/if}
		}
	}

	for i in 0..=2 {
		assert_eq!(
			view_component_multiple_if_else_with_else(i),
			format!("<p>{}</p>", i)
		);
	}
	assert_eq!(
		&view_component_multiple_if_else_with_else(3),
		"<p>Hello world</p>"
	);
}

#[test]
fn missing_closing_if_statement() {
	let t = trybuild::TestCases::new();
	t.compile_fail("tests/control_tags/panics/missing_end_control_tag.rs");
}

#[test]
fn else_before_else_if() {
	let t = trybuild::TestCases::new();
	t.compile_fail("tests/control_tags/panics/else_before_else_if.rs");
}

#[test]
fn double_else() {
	let t = trybuild::TestCases::new();
	t.compile_fail("tests/control_tags/panics/double_else.rs");
}