OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-atomspace / tests / atoms / flow / collection-of-test.scm

78 lines · scm ref:
#! /usr/bin/env guile
-s
!#
;
; collection-of-test.scm -- Verify that CollectionOf works.
;

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

(opencog-test-runner)
(define tname "collection-of-test")
(test-begin tname)

(Evaluation (Predicate "foo") (Concept "bar"))

; -------------------------------------------------------------
; Base function: static non-executable stuff.

(define set-abc
	(CollectionOf
		(List (Concept "a") (Concept "b") (Concept "c"))))

(test-assert "set-abc"
	(equal? (cog-execute! set-abc)
		(Set (Concept "a") (Concept "b") (Concept "c"))))

(define unordered-abc
	(CollectionOf
		(Type 'UnorderedLink)
		(List (Concept "a") (Concept "b") (Concept "c"))))

(test-assert "unordered-abc"
	(equal? (cog-execute! unordered-abc)
		(Unordered (Concept "a") (Concept "b") (Concept "c"))))

(define link-value-abc
	(CollectionOf
		(Type 'LinkValue)
		(List (Concept "a") (Concept "b") (Concept "c"))))

(test-assert "link-value-abc"
	(equal? (cog-execute! link-value-abc)
		(LinkValue (Concept "a") (Concept "b") (Concept "c"))))

; -------------------------------------------------------------
; Base function: convert to set.

(define set-qry
	(CollectionOf
		(Meet
			(TypedVariable (Variable "X") (Type 'Concept))
			(Evaluation (Predicate "foo") (Variable "X")))))

(test-assert "collection set"
	(equal? (cog-execute! set-qry) (Set (Concept "bar"))))

; -------------------------------------------------------------
; Same as above, but do type conversion.

(define meet-qry-edge
	(CollectionOf
		(Type 'EdgeLink)
		(Meet
			(TypedVariable (Variable "X") (Type 'Concept))
			(Evaluation (Predicate "foo") (Variable "X")))))

(define meet-edge (cog-execute! meet-qry-edge))
(format #t "Meet edge is ~A" meet-edge)

(test-assert "meet edge"
	(equal? meet-edge (Edge (Concept "bar"))))

; -------------------------------------------------------------
(test-end tname)

(opencog-test-end)