#! /usr/bin/env guile
-s
!#
;
; string-of-test.scm -- Test the LinkSignatureLink for basic fuction
;
(use-modules (opencog))
(use-modules (opencog test-runner))
(opencog-test-runner)
(define tname "string-of-test")
(test-begin tname)
; -----------
(define node-from-node
(cog-execute! (LinkSignature (Type 'Concept) (Predicate "bar"))))
(format #t "Node from node got ~A\n" node-from-node)
(test-assert "Node-from-node"
(equal? node-from-node (Concept "bar")))
; -----------
(cog-set-value! (Anchor "anch") (Predicate "key")
(StringValue "a" "b" "c"))
(define node-from-string
(cog-execute! (LinkSignature (Type 'Concept)
(ValueOf (Anchor "anch") (Predicate "key")))))
(format #t "Node from string got ~A\n" node-from-string)
(test-assert "Node-from-string"
(equal? node-from-string (Concept "a")))
; -----------
(cog-execute!
(SetValue (Anchor "anch") (Predicate "strkey")
(LinkSignature (Type 'StringValue)
(Concept "do-da"))))
(define string-from-node
(cog-value (Anchor "anch") (Predicate "strkey")))
(format #t "Got string from node ~A\n" string-from-node)
(test-assert "string-from-node"
(equal? string-from-node (StringValue "do-da")))
; -----------
(cog-set-value! (Anchor "anch") (Predicate "flokey")
(StringValue "scoobey"))
(define filter-string
(Filter
(Rule
(Variable "$strv")
(Variable "$strv")
(Edge (Predicate "foobar")
(List
(LinkSignature (Type 'Concept)
(Variable "$strv")))))
(ValueOf (Anchor "anch") (Predicate "flokey"))))
(define flow-string
(cog-execute! filter-string))
(format #t "Flow string got ~A\n" flow-string)
; An earlier filter bug failed to place the filter result in the
; AtomSpace. Check that this works.
(define query
(Meet
(TypedVariable (Variable "$x") (Type 'Concept))
(Edge (Predicate "foobar") (List (Variable "$x")))))
(define atms-contents (cog-execute! query))
(format #t "AtomSpace contents ~A\n" atms-contents)
(test-assert "atms-contents"
(equal? (cog-value-ref atms-contents 0) (Concept "scoobey")))
(test-assert "flow-string"
(equal? flow-string
(Edge (Predicate "foobar")
(List (Concept "scoobey")))))
; -----------
(test-end tname)
(opencog-test-end)