OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-atomspace / tests / atoms / flow / filter-strings-test.scm

58 lines · scm ref:
#! /usr/bin/env guile
-s
!#
;
; filter-strings-test.scm -- Unit test for filter-strings.scm example.
;

(use-modules (opencog))
(use-modules (opencog test-runner))

(opencog-test-runner)
(define tname "filter-strings-test")
(test-begin tname)

; -----------

; A mockup of a stream of data to be filtered.
(define stream (LinkValue
	(LinkValue (StringValue "/usr") (StringValue "dir"))
	(LinkValue (StringValue "/usr/lib") (StringValue "dir"))
	(LinkValue (StringValue "/etc") (StringValue "dir"))
	(LinkValue (StringValue "/etc/motd") (StringValue "reg"))
	(LinkValue (StringValue "/dev/sda") (StringValue "block"))
	(LinkValue (StringValue "/dev/tty0") (StringValue "char"))))

; Place the stream where it can be found.
(cog-set-value! (Anchor "rock") (Predicate "key") stream)

; A search pattern to filter the stream.
(define find-files
	(Filter
		(Rule
			(Variable "$filename")

			(LinkSignature (Type 'LinkValue)
				(Variable "$filename")
				(LinkSignature (Type 'StringValue) (Node "reg")))

			(Edge
				(Predicate "is-a file URL")
				(LinkSignature (Type 'ItemNode) (Variable "$filename"))))

		(ValueOf (Anchor "rock") (Predicate "key"))))

; Apply the filter to the input stream.
(define fili (cog-execute! find-files))

(test-assert "find-files  rule"
	(equal? fili (LinkValue
		(Edge
			(Predicate "is-a file URL")
			(Item "/etc/motd")))))

; -----------

(test-end tname)
(opencog-test-end)