23 lines
693 B
Nim
23 lines
693 B
Nim
|
# SPDX-FileCopyrightText: ☭ Emery Hemingway
|
||
|
# SPDX-License-Identifier: Unlicense
|
||
|
|
||
|
import std/unittest
|
||
|
|
||
|
import preserves, syndicate
|
||
|
from syndicate/protocols/dataspace import Observe
|
||
|
type Observe = dataspace.Observe[Ref]
|
||
|
|
||
|
import ./test_schema
|
||
|
|
||
|
|
||
|
test "patterns":
|
||
|
let observerPat = ?Observe(pattern: !Foo) ?? {0: grab()}
|
||
|
check($observerPat == """<rec Observe [<rec rec [<lit foo> <arr [<bind <_>> <_> <_>]>]> <_>]>""")
|
||
|
|
||
|
let
|
||
|
value = @["alles", "in", "ordnung"]
|
||
|
observer = toPreserve(Observe(pattern: inject(?Foo, { 0: ?value })), Ref)
|
||
|
have = capture(observerPat, observer).toPreserve(Ref).unpackLiterals
|
||
|
want = [value.toPreserve(Ref)].toPreserve(Ref)
|
||
|
check(have == want)
|