OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-atomspace / tests / atoms / flow / set-value-flow.scm

59 lines · scm ref:
;
; value-flows.scm -- Flowing Values unit test.
; Copy of /examples/atomspace/flows.scm

(use-modules (opencog))

(define foo (Concept "foo"))
(define bar (Concept "bar"))
(define baz (Concept "baz"))
(define key (Predicate "some key"))
(define kee (Predicate "other key"))
(define kay (Predicate "third key"))

; Expected results
(define seq (FloatValue 1 2 3 4 5))
(define squ (FloatValue 1 4 9 16 25))
(define tri (FloatValue 1 3 6 10 15))

(cog-set-value! foo key seq)

; Copy from foo to bar
(define set-value (SetValue bar kee (FloatValueOf foo key)))

; Try out some math
(define square (SetValue bar kee
	(Times (FloatValueOf foo key) (FloatValueOf foo key))))

(DefineLink
   (DefinedProcedure "triangle numbers")
	(Lambda
		(Variable "$X")
		(Divide
			(Times (Variable "$X") (Plus (Variable "$X") (Number 1)))
			(Number 2))))

(define triangle
	(SetValue bar kee
		(DefinedProcedure "triangle numbers")
		(FloatValueOf foo key)))

; ============================================================
; Test SetValueOn - returns Atom instead of Value
; ============================================================

; SetValueOn copy test - should return the Atom (baz), not the Value
(define set-value-on (SetValueOn baz kee (FloatValueOf foo key)))

; SetValueOn with math - should return the Atom (baz), not the Value
(define square-on (SetValueOn baz kay
	(Times (FloatValueOf foo key) (FloatValueOf foo key))))

; SetValueOn with formula - should return the Atom (baz), not the Value
(define triangle-on
	(SetValueOn baz kay
		(DefinedProcedure "triangle numbers")
		(FloatValueOf foo key)))
;
; -------- THE END -----------