summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
Diffstat (limited to 'macros')
-rw-r--r--macros/Cargo.toml3
-rw-r--r--macros/src/lib.rs34
2 files changed, 36 insertions, 1 deletions
diff --git a/macros/Cargo.toml b/macros/Cargo.toml
index 00efccf..818cf8c 100644
--- a/macros/Cargo.toml
+++ b/macros/Cargo.toml
@@ -11,3 +11,6 @@ quote = "1.0.26"
syn = { version = "1.0.109", features = ["full", "printing"] }
proc-macro-error = "1.0.4"
proc-macro2 = "1.0.52"
+
+[dev-dependencies]
+ridicule = { version = "0.1.0", path = ".." }
diff --git a/macros/src/lib.rs b/macros/src/lib.rs
index 8106a8c..f11c064 100644
--- a/macros/src/lib.rs
+++ b/macros/src/lib.rs
@@ -1,4 +1,5 @@
-#![deny(clippy::all, clippy::pedantic)]
+//! Macros for Ridicule, a mocking library supporting non-static generics.
+#![deny(clippy::all, clippy::pedantic, missing_docs)]
use proc_macro::TokenStream;
use proc_macro_error::{proc_macro_error, ResultExt};
use quote::{format_ident, quote};
@@ -14,6 +15,37 @@ mod mock_input;
mod syn_ext;
mod util;
+/// Creates a mock.
+///
+/// # Examples
+/// ```
+/// use ridicule::mock;
+///
+/// trait Foo
+/// {
+/// fn bar<A, B>(&self, a: A) -> B;
+/// }
+///
+/// mock! {
+/// MockFoo {}
+///
+/// impl Foo for MockFoo
+/// {
+/// fn bar<A, B>(&self, a: A) -> B;
+/// }
+/// }
+///
+/// fn main()
+/// {
+/// let mut mock_foo = MockFoo::new();
+///
+/// mock_foo
+/// .expect_bar()
+/// .returning(|foo, a: u32| format!("Hello {a}"));
+///
+/// assert_eq!(mock_foo.bar::<u32, String>(123), "Hello 123");
+/// }
+/// ```
#[proc_macro]
#[proc_macro_error]
pub fn mock(input_stream: TokenStream) -> TokenStream