CINXE.COM

IPLD ♦

<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="/css/layout.css?1738557326388"> <link rel="stylesheet" href="/css/nav.css?1738557326388"> <link rel="stylesheet" href="/css/style.css?1738557326388"> <link rel="stylesheet" href="/css/prismjs@1.24-themes-prism.css"> <title>IPLD ♦ </title> </head> <body> <header> <div class="sidebar-button" onclick="document.getElementById('sidebar').classList.toggle('sidebar-open')"> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"> <path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path> </svg> </div> <a href="/" class="logo">IPLD</a> <aside id=breadcrumbs> <ul> <li><a href="/specs">specs</a></li> <li><a href="/specs/patch">patch</a></li> <li><a href="/specs/patch/fixtures">fixtures</a></li> <li><a href="/specs/patch/fixtures/fixtures-1/">fixtures-1</a></li> </ul> </aside> </header> <aside id=sidebar> <nav> <ul> <li> <a href="/docs/">Docs</a><ul> <li> <a href="/docs/intro/">Intro</a><ul> <li> <a href="/docs/intro/hello-world/">Hello, World</a></li> <li> <a href="/docs/intro/primer/">The Brief Primer</a></li> <li> <a href="/docs/intro/ecosystem/">InterPlanetary Ecosystem Overview</a></li> <li> <a href="/docs/intro/community/">Finding Community</a></li></ul></li> <li> <a href="/docs/motivation/">Motivation</a><ul> <li> <a href="/docs/motivation/benefits-of-content-addressing/">Benefits of Content Addressing</a></li> <li> <a href="/docs/motivation/data-to-data-structures/">From Data to Data Structures</a></li></ul></li> <li> <a href="/docs/codecs/">Codecs</a><ul> <li> <a href="/docs/codecs/known/">Known Codecs</a><ul> <li> <a href="/docs/codecs/known/dag-cbor/">DAG-CBOR</a></li> <li> <a href="/docs/codecs/known/dag-json/">DAG-JSON</a></li> <li> <a href="/docs/codecs/known/dag-pb/">DAG-PB</a></li></ul></li></ul></li> <li> <a href="/docs/data-model/">Data Model</a><ul> <li> <a href="/docs/data-model/node/">Nodes</a></li> <li> <a href="/docs/data-model/kinds/">Kinds</a></li> <li> <a href="/docs/data-model/pathing/">Pathing</a></li> <li> <a href="/docs/data-model/traversal/">Traversal</a></li></ul></li> <li> <a href="/docs/advanced-data-layouts/">Advanced Data Layouts</a><ul> <li> <a href="/docs/advanced-data-layouts/intro/">Intro to ADLs</a></li> <li> <a href="/docs/advanced-data-layouts/naming/">ADL Naming</a></li> <li> <a href="/docs/advanced-data-layouts/signalling/">Signalling ADLs</a></li> <li> <a href="/docs/advanced-data-layouts/dynamic-loading/">Dynamic Loading</a></li> <li> <a href="/docs/advanced-data-layouts/known/">Known ADLs</a></li></ul></li> <li> <a href="/docs/schemas/">Schemas</a><ul> <li> <a href="/docs/schemas/intro/">Introduction</a><ul> <li> <a href="/docs/schemas/intro/compare/">compare</a></li> <li> <a href="/docs/schemas/intro/goals/">Goals</a></li> <li> <a href="/docs/schemas/intro/feature-summary/">Feature Summary</a></li></ul></li> <li> <a href="/docs/schemas/features/">Features</a><ul> <li> <a href="/docs/schemas/features/typekinds/">Type Kinds</a></li> <li> <a href="/docs/schemas/features/representation-strategies/">Representation Strategies</a></li> <li> <a href="/docs/schemas/features/links/">Links</a></li> <li> <a href="/docs/schemas/features/indicating-adls/">Using ADLs in Schemas</a></li></ul></li> <li> <a href="/docs/schemas/using/">Using Wisely</a><ul> <li> <a href="/docs/schemas/using/authoring-guide/">Authoring Guide</a></li> <li> <a href="/docs/schemas/using/migrations/">Migrations</a></li></ul></li></ul></li> <li> <a href="/docs/synthesis/">Synthesis</a><ul> <li> <a href="/docs/synthesis/gtd/">Getting Things Done</a></li> <li> <a href="/docs/synthesis/building-in-alignment/">Building in Alignment</a></li> <li> <a href="/docs/synthesis/how-ipfs-web-gateways-work/">How IPFS Web Gateways Work</a></li> <li> <a href="/docs/synthesis/encryption/">Working With Encryption</a></li></ul></li></ul></li> <li> <a href="/specs/">Specs</a><ul> <li> <a href="/specs/about/">About the Specifications</a></li> <li> <a href="/specs/codecs/">Codecs</a><ul> <li> <a href="/specs/codecs/dag-cbor/">DAG-CBOR</a><ul> <li> <a href="/specs/codecs/dag-cbor/spec/">Spec</a></li> <li> <a href="/specs/codecs/dag-cbor/fixtures/">DAG-CBOR Test Fixtures</a><ul> <li> <a href="/specs/codecs/dag-cbor/fixtures/cross-codec/">cross-codec</a></li></ul></li></ul></li> <li> <a href="/specs/codecs/dag-cosmos/">DAG-COSMOS</a><ul> <li> <a href="/specs/codecs/dag-cosmos/basic_types/">basic_types</a></li> <li> <a href="/specs/codecs/dag-cosmos/cosmos_state/">cosmos_state</a></li> <li> <a href="/specs/codecs/dag-cosmos/crypto_types/">crypto_types</a></li> <li> <a href="/specs/codecs/dag-cosmos/tendermint_chain/">tendermint_chain</a></li> <li> <a href="/specs/codecs/dag-cosmos/typed_protobuf/">typed_protobuf</a></li></ul></li> <li> <a href="/specs/codecs/dag-eth/">DAG-ETH</a><ul> <li> <a href="/specs/codecs/dag-eth/basic_types/">basic_types</a></li> <li> <a href="/specs/codecs/dag-eth/chain/">chain</a></li> <li> <a href="/specs/codecs/dag-eth/convenience_types/">convenience_types</a></li> <li> <a href="/specs/codecs/dag-eth/state/">state</a></li></ul></li> <li> <a href="/specs/codecs/dag-jose/">DAG-JOSE</a><ul> <li> <a href="/specs/codecs/dag-jose/spec/">Spec</a></li> <li> <a href="/specs/codecs/dag-jose/fixtures/">fixtures</a></li></ul></li> <li> <a href="/specs/codecs/dag-json/">DAG-JSON</a><ul> <li> <a href="/specs/codecs/dag-json/spec/">Spec</a></li> <li> <a href="/specs/codecs/dag-json/fixtures/">DAG-JSON Test Fixtures</a><ul> <li> <a href="/specs/codecs/dag-json/fixtures/cross-codec/">cross-codec</a></li></ul></li></ul></li> <li> <a href="/specs/codecs/dag-pb/">DAG-PB</a><ul> <li> <a href="/specs/codecs/dag-pb/spec/">Spec</a></li> <li> <a href="/specs/codecs/dag-pb/fixtures/">DAG-PB Test Fixtures</a><ul> <li> <a href="/specs/codecs/dag-pb/fixtures/cross-codec/">cross-codec</a></li></ul></li></ul></li></ul></li> <li> <a href="/specs/advanced-data-layouts/">Advanced Data Layouts</a><ul> <li> <a href="/specs/advanced-data-layouts/fbl/">FBL ADL</a><ul> <li> <a href="/specs/advanced-data-layouts/fbl/spec/">spec</a></li></ul></li> <li> <a href="/specs/advanced-data-layouts/hamt/">HAMT ADL</a><ul> <li> <a href="/specs/advanced-data-layouts/hamt/spec/">spec</a></li> <li> <a href="/specs/advanced-data-layouts/hamt/fixture/">HashMap (HAMT) Test Fixtures</a><ul> <li> <a href="/specs/advanced-data-layouts/hamt/fixture/alice-words/">alice-words</a></li></ul></li></ul></li></ul></li> <li> <a href="/specs/schemas/">Schemas</a><ul> <li> <a href="/specs/schemas/prelude/">prelude</a></li></ul></li> <li> <a href="/specs/transport/">Transports</a><ul> <li> <a href="/specs/transport/car/">CAR</a><ul> <li> <a href="/specs/transport/car/carv1/">CARv1 Specification</a></li> <li> <a href="/specs/transport/car/carv2/">CARv2 Specification</a></li> <li> <a href="/specs/transport/car/fixture/">CAR Test Fixtures</a><ul> <li> <a href="/specs/transport/car/fixture/carv1-basic/">carv1-basic</a></li> <li> <a href="/specs/transport/car/fixture/carv2-basic/">carv2-basic</a></li></ul></li></ul></li> <li> <a href="/specs/transport/graphsync/">Graphsync</a><ul> <li> <a href="/specs/transport/graphsync/known_extensions/">known_extensions</a></li></ul></li> <li> <a href="/specs/transport/trustless-pathing/">Trustless Pathing</a><ul> <li> <a href="/specs/transport/trustless-pathing/fixtures/">Trustless Pathing Fixtures</a><ul> <li> <a href="/specs/transport/trustless-pathing/fixtures/unixfs_20m_variety/">unixfs_20m_variety</a></li></ul></li></ul></li></ul></li> <li> <a href="/specs/selectors/">Selectors</a><ul> <li> <a href="/specs/selectors/fixtures/">fixtures</a><ul> <li> <a href="/specs/selectors/fixtures/selector-fixtures-1/">selector-fixtures-1</a></li> <li> <a href="/specs/selectors/fixtures/selector-fixtures-adl/">selector-fixtures-adl</a></li> <li> <a href="/specs/selectors/fixtures/selector-fixtures-recursion/">selector-fixtures-recursion</a></li></ul></li></ul></li> <li> <a href="/specs/patch/">Patch</a><ul> <li> <a href="/specs/patch/fixtures/">IPLD Patch Test Fixtures</a><ul> <li class="active-page"> <a href="/specs/patch/fixtures/fixtures-1/">fixtures-1</a></li></ul></li></ul></li></ul></li> <li> <a href="/libraries/">Libraries</a><ul> <li> <a href="/libraries/golang/">Golang</a></li> <li> <a href="/libraries/java/">Java</a></li> <li> <a href="/libraries/javascript/">JavaScript</a></li> <li> <a href="/libraries/python/">Python</a></li> <li> <a href="/libraries/rust/">Rust</a></li></ul></li> <li> <a href="/design/">Design</a><ul> <li> <a href="/design/objectives/">Objectives</a></li> <li> <a href="/design/concepts/">Concepts</a><ul> <li> <a href="/design/concepts/type-theory-glossary/">type-theory-glossary</a></li></ul></li> <li> <a href="/design/libraries/">Libraries</a><ul> <li> <a href="/design/libraries/nodes-and-kinds/">nodes-and-kinds</a></li></ul></li> <li> <a href="/design/tricky-choices/">Tricky Choices</a><ul> <li> <a href="/design/tricky-choices/dag-pb-forms-impl-and-use/">dag-pb-forms-impl-and-use</a></li> <li> <a href="/design/tricky-choices/map-key-domain/">map-key-domain</a></li> <li> <a href="/design/tricky-choices/numeric-domain/">numeric-domain</a></li> <li> <a href="/design/tricky-choices/ordering/">ordering</a></li> <li> <a href="/design/tricky-choices/string-domain/">string-domain</a></li></ul></li> <li> <a href="/design/open-research/">Open Research</a><ul> <li> <a href="/design/open-research/ADL-autoexecution/">ADL autoexecution</a></li></ul></li></ul></li> <li> <a href="/tools/">Tools</a></li> <li> <a href="/glossary/">Glossary</a></li> <li> <a href="/media/">Media</a></li> <li> <a href="/FAQ/">FAQ</a></li></ul> </nav> </aside> <main> <div class=content> <h1>Patch Fixtures 1</h1> <p>This file contains a bunch of fixtures for the Patch system. These are suitable both as mechanical test fixtures, and as examples for humans.</p> <h3 id="whats-covered" tabindex="-1"><a class="header-anchor" href="#whats-covered">What's covered?</a></h3> <p>All the fixtures in this file are operating on single blocks -- the data can still be a tree (maps, lists, etc), but contains no links. (Other fixtures cover data that spans multiple blocks by use of links.)</p> <h3 id="whats-the-fixture-format" tabindex="-1"><a class="header-anchor" href="#whats-the-fixture-format">What's the fixture format?</a></h3> <p>This is the <a href="https://github.com/warpfork/go-testmark">testmark format</a>; it can be consumed programmatically. (Note that you probably <em>can't</em> see these labels as this page is rendered on the website; you'll have to find the markdown <a href="/specs/about/#source">source</a>.)</p> <h3 id="this-doesnt-have-to-be-json" tabindex="-1"><a class="header-anchor" href="#this-doesnt-have-to-be-json">This doesn't have to be JSON!</a></h3> <p>We've used JSON (representing the DAG-JSON format) here for the initial data, as well as the patch instructions and the results. However, this is a totally stylistic choice. We're just using JSON here because it's convenient and it's human-readable. You can equally well express all of these objects in DAG-CBOR, or other <a href="/docs/codecs/">codecs</a>; it makes no difference to IPLD. The patch instruction and the subject data don't even have to be in the same codec, either.</p> <h2 id="fixtures" tabindex="-1"><a class="header-anchor" href="#fixtures">Fixtures</a></h2> <h3 id="adding-an-entry-to-a-map" tabindex="-1"><a class="header-anchor" href="#adding-an-entry-to-a-map">Adding an entry to a map</a></h3> <p>Given an initial document:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span><span class="token property">"foo"</span><span class="token operator">:</span> <span class="token string">"bar"</span><span class="token punctuation">}</span></code></pre> <p>and a Patch OperationSequence:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">[</span> <span class="token punctuation">{</span> <span class="token property">"op"</span><span class="token operator">:</span> <span class="token string">"add"</span><span class="token punctuation">,</span> <span class="token property">"path"</span><span class="token operator">:</span> <span class="token string">"/baz"</span><span class="token punctuation">,</span> <span class="token property">"value"</span><span class="token operator">:</span> <span class="token string">"qux"</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span></code></pre> <p>The following document should result:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span> <span class="token property">"foo"</span><span class="token operator">:</span> <span class="token string">"bar"</span><span class="token punctuation">,</span> <span class="token property">"baz"</span><span class="token operator">:</span> <span class="token string">"qux"</span> <span class="token punctuation">}</span></code></pre> <p>Note that if order is sensitive, the additions are considered to go at the end of map.</p> <h3 id="inserting-into-a-list" tabindex="-1"><a class="header-anchor" href="#inserting-into-a-list">Inserting into a list</a></h3> <p>Given an initial document:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">[</span><span class="token string">"bar"</span><span class="token punctuation">,</span> <span class="token string">"baz"</span><span class="token punctuation">]</span></code></pre> <p>and a Patch OperationSequence:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">[</span> <span class="token punctuation">{</span> <span class="token property">"op"</span><span class="token operator">:</span> <span class="token string">"add"</span><span class="token punctuation">,</span> <span class="token property">"path"</span><span class="token operator">:</span> <span class="token string">"/1"</span><span class="token punctuation">,</span> <span class="token property">"value"</span><span class="token operator">:</span> <span class="token string">"qux"</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span></code></pre> <p>The following document should result:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">[</span> <span class="token string">"bar"</span><span class="token punctuation">,</span> <span class="token string">"qux"</span><span class="token punctuation">,</span> <span class="token string">"baz"</span> <span class="token punctuation">]</span></code></pre> <h3 id="removing-an-entry-from-a-map" tabindex="-1"><a class="header-anchor" href="#removing-an-entry-from-a-map">Removing an entry from a map</a></h3> <p>Given an initial document:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span> <span class="token property">"baz"</span><span class="token operator">:</span> <span class="token string">"qux"</span><span class="token punctuation">,</span> <span class="token property">"foo"</span><span class="token operator">:</span> <span class="token string">"bar"</span> <span class="token punctuation">}</span></code></pre> <p>and a Patch OperationSequence:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">[</span> <span class="token punctuation">{</span> <span class="token property">"op"</span><span class="token operator">:</span> <span class="token string">"remove"</span><span class="token punctuation">,</span> <span class="token property">"path"</span><span class="token operator">:</span> <span class="token string">"/baz"</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span></code></pre> <p>The following document should result:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span> <span class="token property">"foo"</span><span class="token operator">:</span> <span class="token string">"bar"</span> <span class="token punctuation">}</span></code></pre> <h3 id="replacing-an-entry-from-a-map" tabindex="-1"><a class="header-anchor" href="#replacing-an-entry-from-a-map">Replacing an entry from a map</a></h3> <p>Given an initial document:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span> <span class="token property">"baz"</span><span class="token operator">:</span> <span class="token string">"qux"</span><span class="token punctuation">,</span> <span class="token property">"foo"</span><span class="token operator">:</span> <span class="token string">"bar"</span> <span class="token punctuation">}</span></code></pre> <p>and a Patch OperationSequence:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">[</span> <span class="token punctuation">{</span> <span class="token property">"op"</span><span class="token operator">:</span> <span class="token string">"replace"</span><span class="token punctuation">,</span> <span class="token property">"path"</span><span class="token operator">:</span> <span class="token string">"/baz"</span><span class="token punctuation">,</span> <span class="token property">"value"</span><span class="token operator">:</span> <span class="token string">"boo"</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span></code></pre> <p>The following document should result:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span> <span class="token property">"baz"</span><span class="token operator">:</span> <span class="token string">"boo"</span><span class="token punctuation">,</span> <span class="token property">"foo"</span><span class="token operator">:</span> <span class="token string">"bar"</span> <span class="token punctuation">}</span></code></pre> <h3 id="copying-a-value" tabindex="-1"><a class="header-anchor" href="#copying-a-value">Copying a value</a></h3> <p>Given an initial document:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span> <span class="token property">"foo"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token property">"bar"</span><span class="token operator">:</span> <span class="token string">"baz"</span><span class="token punctuation">,</span> <span class="token property">"waldo"</span><span class="token operator">:</span> <span class="token string">"fred"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token property">"qux"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token property">"corge"</span><span class="token operator">:</span> <span class="token string">"grault"</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span></code></pre> <p>and a Patch OperationSequence:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">[</span> <span class="token punctuation">{</span> <span class="token property">"op"</span><span class="token operator">:</span> <span class="token string">"copy"</span><span class="token punctuation">,</span> <span class="token property">"from"</span><span class="token operator">:</span> <span class="token string">"/foo/waldo"</span><span class="token punctuation">,</span> <span class="token property">"path"</span><span class="token operator">:</span> <span class="token string">"/qux/thud"</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span></code></pre> <p>The following document should result:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span> <span class="token property">"foo"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token property">"bar"</span><span class="token operator">:</span> <span class="token string">"baz"</span><span class="token punctuation">,</span> <span class="token property">"waldo"</span><span class="token operator">:</span> <span class="token string">"fred"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token property">"qux"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token property">"corge"</span><span class="token operator">:</span> <span class="token string">"grault"</span><span class="token punctuation">,</span> <span class="token property">"thud"</span><span class="token operator">:</span> <span class="token string">"fred"</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span></code></pre> <h3 id="moving-a-value" tabindex="-1"><a class="header-anchor" href="#moving-a-value">Moving a value</a></h3> <p>Given an initial document:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span> <span class="token property">"foo"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token property">"bar"</span><span class="token operator">:</span> <span class="token string">"baz"</span><span class="token punctuation">,</span> <span class="token property">"waldo"</span><span class="token operator">:</span> <span class="token string">"fred"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token property">"qux"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token property">"corge"</span><span class="token operator">:</span> <span class="token string">"grault"</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span></code></pre> <p>and a Patch OperationSequence:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">[</span> <span class="token punctuation">{</span> <span class="token property">"op"</span><span class="token operator">:</span> <span class="token string">"move"</span><span class="token punctuation">,</span> <span class="token property">"from"</span><span class="token operator">:</span> <span class="token string">"/foo/waldo"</span><span class="token punctuation">,</span> <span class="token property">"path"</span><span class="token operator">:</span> <span class="token string">"/qux/thud"</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span></code></pre> <p>The following document should result:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span> <span class="token property">"foo"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token property">"bar"</span><span class="token operator">:</span> <span class="token string">"baz"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token property">"qux"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token property">"corge"</span><span class="token operator">:</span> <span class="token string">"grault"</span><span class="token punctuation">,</span> <span class="token property">"thud"</span><span class="token operator">:</span> <span class="token string">"fred"</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span></code></pre> <h3 id="testing-and-conditional-modification" tabindex="-1"><a class="header-anchor" href="#testing-and-conditional-modification">Testing and conditional modification</a></h3> <p>Given an initial document:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span> <span class="token property">"baz"</span><span class="token operator">:</span> <span class="token string">"qux"</span><span class="token punctuation">,</span> <span class="token property">"foo"</span><span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token string">"a"</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">"c"</span> <span class="token punctuation">]</span> <span class="token punctuation">}</span></code></pre> <p>and a Patch OperationSequence:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">[</span> <span class="token punctuation">{</span> <span class="token property">"op"</span><span class="token operator">:</span> <span class="token string">"test"</span><span class="token punctuation">,</span> <span class="token property">"path"</span><span class="token operator">:</span> <span class="token string">"/baz"</span><span class="token punctuation">,</span> <span class="token property">"value"</span><span class="token operator">:</span> <span class="token string">"qux"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token property">"op"</span><span class="token operator">:</span> <span class="token string">"test"</span><span class="token punctuation">,</span> <span class="token property">"path"</span><span class="token operator">:</span> <span class="token string">"/foo/1"</span><span class="token punctuation">,</span> <span class="token property">"value"</span><span class="token operator">:</span> <span class="token number">2</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token property">"op"</span><span class="token operator">:</span> <span class="token string">"add"</span><span class="token punctuation">,</span> <span class="token property">"path"</span><span class="token operator">:</span> <span class="token string">"/bar"</span><span class="token punctuation">,</span> <span class="token property">"value"</span><span class="token operator">:</span> <span class="token string">"zar"</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span></code></pre> <p>(Note that this contains both test operations as well as a subsequent add operation! The add operation should only apply if the test operations yield true.)</p> <p>The following document should result:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span> <span class="token property">"baz"</span><span class="token operator">:</span> <span class="token string">"qux"</span><span class="token punctuation">,</span> <span class="token property">"foo"</span><span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token string">"a"</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">"c"</span> <span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token property">"bar"</span><span class="token operator">:</span> <span class="token string">"zar"</span> <span class="token punctuation">}</span></code></pre> <h3 id="testing-and-conditional-modification---failing-case" tabindex="-1"><a class="header-anchor" href="#testing-and-conditional-modification---failing-case">Testing and conditional modification - Failing case</a></h3> <p>Given an initial document:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span> <span class="token property">"baz"</span><span class="token operator">:</span> <span class="token string">"qux"</span><span class="token punctuation">,</span> <span class="token property">"foo"</span><span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token string">"a"</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">"c"</span> <span class="token punctuation">]</span> <span class="token punctuation">}</span></code></pre> <p>and a Patch OperationSequence:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">[</span> <span class="token punctuation">{</span> <span class="token property">"op"</span><span class="token operator">:</span> <span class="token string">"test"</span><span class="token punctuation">,</span> <span class="token property">"path"</span><span class="token operator">:</span> <span class="token string">"/baz"</span><span class="token punctuation">,</span> <span class="token property">"value"</span><span class="token operator">:</span> <span class="token string">"qux"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token property">"op"</span><span class="token operator">:</span> <span class="token string">"test"</span><span class="token punctuation">,</span> <span class="token property">"path"</span><span class="token operator">:</span> <span class="token string">"/foo/1"</span><span class="token punctuation">,</span> <span class="token property">"value"</span><span class="token operator">:</span> <span class="token number">3</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token property">"op"</span><span class="token operator">:</span> <span class="token string">"add"</span><span class="token punctuation">,</span> <span class="token property">"path"</span><span class="token operator">:</span> <span class="token string">"/bar"</span><span class="token punctuation">,</span> <span class="token property">"value"</span><span class="token operator">:</span> <span class="token string">"zar"</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span></code></pre> <p>The operation should abort and the document should remain as:</p> <pre class="language-json"><code class="language-json"><span class="token punctuation">{</span> <span class="token property">"baz"</span><span class="token operator">:</span> <span class="token string">"qux"</span><span class="token punctuation">,</span> <span class="token property">"foo"</span><span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token string">"a"</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token string">"c"</span> <span class="token punctuation">]</span> <span class="token punctuation">}</span></code></pre> </div> </main> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10