automerge/automerge_test/macro.assert_doc.html
2023-03-09 15:11:59 +00:00

46 lines
No EOL
7.7 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="This macro makes it easy to make assertions about a document. It is called with two arguments, the first is a reference to an `automerge::Automerge`, the second is an instance of `RealizedObject&lt;ExportableOpId&gt;`."><meta name="keywords" content="rust, rustlang, rust-lang, assert_doc"><title>assert_doc in automerge_test - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-93196c7a1c3542a8.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../static.files/light-4743e13df3dfe8c4.css"><link rel="stylesheet" disabled href="../static.files/dark-0e1b889528bd466b.css"><link rel="stylesheet" disabled href="../static.files/ayu-65289d5d067c7c66.css"><script id="default-settings" ></script><script src="../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-3367e395607fafc1.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc macro"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="logo-container" href="../automerge_test/index.html"><img class="rust-logo" src="../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2></h2></nav><nav class="sidebar"><a class="logo-container" href="../automerge_test/index.html"><img class="rust-logo" src="../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><div class="sidebar-elems"><h2><a href="index.html">In automerge_test</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Macro <a href="index.html">automerge_test</a>::<wbr><a class="macro" href="#">assert_doc</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/automerge_test/lib.rs.html#90-99">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><div class="item-decl"><div class="example-wrap"><pre class="rust macro"><code><span class="macro">macro_rules! </span>assert_doc {
(<span class="macro-nonterminal">$doc</span>: expr, <span class="macro-nonterminal">$expected</span>: expr) =&gt; { ... };
}</code></pre></div>
</div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>This macro makes it easy to make assertions about a document. It is called with two arguments,
the first is a reference to an <code>automerge::Automerge</code>, the second is an instance of
<code>RealizedObject&lt;ExportableOpId&gt;</code>.</p>
<p>What - I hear you ask - is a <code>RealizedObject</code>? Its a fully hydrated version of the contents of
an automerge document. You dont need to think about this too much though because you can
easily construct one with the <code>map!</code> and <code>list!</code> macros. Heres an example:</p>
<h3 id="constructing-documents"><a href="#constructing-documents">Constructing documents</a></h3>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>doc = automerge::AutoCommit::new();
<span class="kw">let </span>todos = doc.put_object(automerge::ROOT, <span class="string">&quot;todos&quot;</span>, automerge::ObjType::List).unwrap();
<span class="kw">let </span>todo = doc.insert_object(todos, <span class="number">0</span>, automerge::ObjType::Map).unwrap();
<span class="kw">let </span>title = doc.put(todo, <span class="string">&quot;title&quot;</span>, <span class="string">&quot;water plants&quot;</span>).unwrap();
<span class="macro">assert_doc!</span>(
<span class="kw-2">&amp;</span>doc,
<span class="macro">map!</span>{
<span class="string">&quot;todos&quot; </span>=&gt; {
<span class="macro">list!</span>[
{ <span class="macro">map!</span>{ <span class="string">&quot;title&quot; </span>=&gt; { <span class="string">&quot;water plants&quot; </span>} } }
]
}
}
);
</code></pre></div>
<p>This might look more complicated than you were expecting. Why is the first element in the list
wrapped in braces? Because every property in an automerge document can have multiple
conflicting values we must capture all of these.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code>
<span class="kw">let </span><span class="kw-2">mut </span>doc1 = automerge::AutoCommit::new();
<span class="kw">let </span><span class="kw-2">mut </span>doc2 = automerge::AutoCommit::new();
doc1.put(automerge::ROOT, <span class="string">&quot;field&quot;</span>, <span class="string">&quot;one&quot;</span>).unwrap();
doc2.put(automerge::ROOT, <span class="string">&quot;field&quot;</span>, <span class="string">&quot;two&quot;</span>).unwrap();
doc1.merge(<span class="kw-2">&amp;mut </span>doc2);
<span class="macro">assert_doc!</span>(
doc1.document(),
<span class="macro">map!</span>{
<span class="string">&quot;field&quot; </span>=&gt; {
<span class="string">&quot;one&quot;</span>,
<span class="string">&quot;two&quot;
</span>}
}
);</code></pre></div>
</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="automerge_test" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0 (2c8cc3432 2023-03-06)" data-search-js="search-98d53477a794af0b.js" data-settings-js="settings-c3c521c753752a1a.js" data-settings-css="settings-08ddfdda51b8ee2e.css" ></div></body></html>