#! /usr/bin/env guile
-s
!#
;
; mono-value-store-test.scm
; Verify that only the top values are stored.
;
(use-modules (srfi srfi-1))
(use-modules (opencog) (opencog test-runner))
(use-modules (opencog persist) (opencog persist-mono))
(include "../rocks/test-utils.scm")
(whack "/tmp/cog-mono-value-store-test")
(opencog-test-runner)
; -------------------------------------------------------------------
; Common setup, used by all tests.
(define (setup-and-store)
; Splatter some atoms into the atomspace.
(set-cnt! (Concept "foo") (FloatValue 1 0 3))
(set-cnt! (Concept "bar") (FloatValue 1 0 4))
(set-cnt! (ListLink (Concept "bar")) (FloatValue 1 0 5))
(set-cnt! (ListLink (Concept "foo") (List (Concept "bar"))) (FloatValue 1 0 6))
; Store the content. Store only the top-most link.
(define storage (MonoStorageNode "monospace:///tmp/cog-mono-value-store-test"))
(cog-set-value! storage (*-open-*))
(cog-set-value! storage (*-store-atom-*) (ListLink (Concept "foo") (List (Concept "bar"))))
(cog-set-value! storage (*-close-*))
; Clear out the space, start with a clean slate.
(cog-atomspace-clear (cog-atomspace))
)
; -------------------------------------------------------------------
; Test that only the top link was stored.
(define (test-store-link)
(setup-and-store)
; Start with a blank slate.
(cog-atomspace-clear (cog-atomspace))
; Load everything.
(define storage (MonoStorageNode "monospace:///tmp/cog-mono-value-store-test"))
(cog-set-value! storage (*-open-*))
; (cog-mono-stats storage)
; (cog-mono-print storage "")
(cog-set-value! storage (*-load-atomspace-*) (cog-atomspace))
(cog-set-value! storage (*-close-*))
; Verify the ListLink is as expected.
(define lilly (ListLink (Concept "foo") (List (Concept "bar"))))
; Verify appropriate values
(test-equal "link-tv" 6 (get-cnt lilly))
(test-equal "foo-tv" #f (cog-value (cog-node 'Concept "foo") pk))
(test-equal "bar-tv" #f (cog-value (cog-node 'Concept "bar") pk))
(test-equal "link-bar-tv" #f (cog-value (cog-link 'List (Concept "bar")) pk))
)
(define store-link "test store link")
(test-begin store-link)
(test-store-link)
(test-end store-link)
; ===================================================================
(whack "/tmp/cog-mono-value-store-test")
(opencog-test-end)