OverviewFilesCommitsIssuesDocsReleasesPeers

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

70 lines · scm ref:
#! /usr/bin/env guile
-s
!#
;
; filter-rule-test.scm -- Test of filters with rules.
;
(use-modules (opencog))
(use-modules (opencog test-runner))

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

(cog-set-value! (Concept "a") (Predicate "k")
	(LinkValue (Concept "baz") (Concept "ni") (Concept "goh")))

; -----------
(define fthree
	(Filter
		(LinkSignature (Type 'LinkValue)
			(Variable "$from") (Variable "$to") (Variable "$msg"))
		(LinkSignature (Type 'LinkValue)
			(ValueOf (Concept "a") (Predicate "k")))))

(define e-fthree (cog-execute! fthree))
(test-assert "filter three"
	(equal? e-fthree (LinkValue
		(LinkValue (Concept "baz") (Concept "ni") (Concept "goh")))))

; -----------
(define frule
	(Filter
		(Rule
			(LinkSignature (Type 'LinkValue)
				(Variable "$from") (Variable "$to") (Variable "$msg"))
			(LinkSignature (Type 'LinkValue)
				(Item "PRIVMSG")
				(Variable "$from")
				(Item "you said: ")
				(Variable "$msg")))
		(LinkSignature (Type 'LinkValue)
			(ValueOf (Concept "a") (Predicate "k")))))

(define e-frule (cog-execute! frule))
(test-assert "filter rule"
	(equal? e-frule (LinkValue
		(LinkValue
			(Item "PRIVMSG")
			(Concept "baz")
			(Item "you said: ")
			(Concept "goh")))))

(cog-set-value! (Concept "a") (Predicate "k")
	(LinkValue (StringValue "first") (StringValue "sec") (StringValue "third")))

(define e-srule (cog-execute! frule))
(test-assert "filter string rule"
	(equal? e-srule (LinkValue
		(LinkValue
			(Item "PRIVMSG")
			(StringValue "first")
			(Item "you said: ")
			(StringValue "third")))))

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

(test-end tname)

(opencog-test-end)