askama/testing/tests/source-in-code.rs
2024-08-20 11:50:30 +02:00

285 lines
5.7 KiB
Rust

#![cfg(feature = "code-in-doc")]
// Regarding `#[rustfmt::skip]`: `cargo fmt` strips extraneous newlines in code block,
// but we want to test if `rinja_derive` works with extraneous newlines.
use rinja::Template;
#[rustfmt::skip]
#[test]
fn test_code_in_comment_only() {
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/// ```rinja
/// Hello world!
/// ```
struct Tmpl;
assert_eq!(Tmpl.to_string(), "Hello world!");
}
#[rustfmt::skip]
#[test]
fn test_code_in_comment_with_line_break() {
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/// ```rinja
/// Hello
/// world!
/// ```
struct Tmpl1;
assert_eq!(Tmpl1.to_string(), "Hello\nworld!");
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/// ```rinja
/// Hello
///
/// world!
/// ```
struct Tmpl2;
assert_eq!(Tmpl2.to_string(), "Hello\n\nworld!");
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/// ```rinja
///
/// Hello
///
/// world!
/// ```
struct Tmpl3;
assert_eq!(Tmpl3.to_string(), "\nHello\n\nworld!");
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/// ```rinja
/// Hello
///
/// world!
///
/// ```
struct Tmpl4;
assert_eq!(Tmpl4.to_string(), "Hello\n\nworld!\n");
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/// ```rinja
///
///
/// Hello
///
///
/// world!
///
///
/// ```
struct Tmpl5;
assert_eq!(Tmpl5.to_string(), "\n\nHello\n\n\nworld!\n\n");
}
#[rustfmt::skip]
#[test]
fn test_code_in_comment_with_derive_in_between() {
/// ```rinja
/// Hello
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/// world!
/// ```
struct Tmpl1;
assert_eq!(Tmpl1.to_string(), "Hello\nworld!");
/// This template greets the whole world
///
/// ```rinja
/// Hello
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/// world!
/// ```
///
/// Some more text.
struct Tmpl2;
assert_eq!(Tmpl2.to_string(), "Hello\nworld!");
}
#[rustfmt::skip]
#[test]
fn test_code_in_comment_split_up() {
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/// Text1
/// ```rinja
/// Hello
/// ```
/// Text2
/// ```rinja
/// world!
/// ```
/// Text3
struct Tmpl1;
assert_eq!(Tmpl1.to_string(), "Hello\nworld!");
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/// Text1
///
/// ```rinja
/// Hello
/// ```
///
/// Text2
///
/// ```rinja
/// world!
/// ```
///
/// Text3
struct Tmpl2;
assert_eq!(Tmpl2.to_string(), "Hello\nworld!");
}
#[rustfmt::skip]
#[test]
fn test_code_in_comment_doc() {
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
#[doc = "```rinja\nHello world!\n```"]
struct Tmpl1;
assert_eq!(Tmpl1.to_string(), "Hello world!");
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
#[doc = "```rinja"]
#[doc = "Hello world!"]
#[doc = "```"]
struct Tmpl2;
assert_eq!(Tmpl2.to_string(), "Hello world!");
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
#[doc = "```rinja\nHello world!"]
#[doc = "```"]
struct Tmpl3;
assert_eq!(Tmpl3.to_string(), "Hello world!");
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
#[doc = "```rinja"]
#[doc = "Hello world!\n```"]
struct Tmpl4;
assert_eq!(Tmpl4.to_string(), "Hello world!");
}
#[rustfmt::skip]
#[test]
fn test_code_in_comment_multiline() {
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/**
```rinja
Hello world!
```
*/
struct Tmpl1;
assert_eq!(Tmpl1.to_string(), "Hello world!");
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/**
```rinja
Hello
world!
```
*/
struct Tmpl2;
assert_eq!(Tmpl2.to_string(), "Hello\nworld!");
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/**
```rinja
Hello
world!
```
*/
struct Tmpl3;
assert_eq!(Tmpl3.to_string(), "\nHello\nworld!");
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/**
```rinja
Hello
world!
```
*/
struct Tmpl4;
assert_eq!(Tmpl4.to_string(), "Hello\nworld!\n");
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/**
```rinja
Hello
world!
```
*/
struct Tmpl5;
assert_eq!(Tmpl5.to_string(), "\nHello\n\nworld!\n");
}
#[rustfmt::skip]
#[test]
fn test_code_in_comment_backticks() {
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/// ````rinja
/// Hello
/// ````
struct Tmpl1;
assert_eq!(Tmpl1.to_string(), "Hello");
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/// `````rinja
/// Hello
/// `````
struct Tmpl2;
assert_eq!(Tmpl2.to_string(), "Hello");
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/// ``````````````````````````````````````````````````````````````````````````````````````rinja
/// Hello
/// ``````````````````````````````````````````````````````````````````````````````````````
struct Tmpl3;
assert_eq!(Tmpl3.to_string(), "Hello");
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/// ```rinja
/// `````
/// Hello
/// `````
/// ```
struct Tmpl4;
assert_eq!(Tmpl4.to_string(), "");
#[derive(Template)]
#[template(ext = "txt", in_doc = true)]
/// `````rinja
/// ```
/// Hello
/// ```
/// `````
struct Tmpl5;
assert_eq!(Tmpl5.to_string(), "```\nHello\n```");
}