#!/usr/bin/newlisp


(println)
(println "Testing cell block allocation and deallocation:")

b1 b2 b3 b4 initial

(seed (time-of-day))
(define (run)
	(set 'initial (sys-info 0))
	(println "initial cell count:" initial)
	(set 'b1 (sequence 1 (+ 10000 (rand 10000))))
	(println "cell count after b1:" (sys-info 0))
	(set 'b2 (sequence 1 (+ 10000 (rand 10000))))
	(println "cell count after b2:" (sys-info 0))
	(set 'b3 (sequence 1 (+ 10000 (rand 10000))))
	(println "cell count after b3:" (sys-info 0))
	(set 'b4 (sequence 1 (+ 10000 (rand 10000))))
	(println "cell count after b4:" (sys-info 0))

	(set 'b2 nil)
	(println "return b2, cell count:" (sys-info 0) ", block count:" (reset nil))
	(set 'b4 nil)
	(println "return b4, cell count:" (sys-info 0) ", block count:" (reset nil))
	(set 'b1 nil)
	(println "return b1, cell count:" (sys-info 0) ", block count:" (reset nil))
	(set 'b3 nil)
	(println "return b3, cell count:" (sys-info 0) ", block count:" (reset nil))

    (= initial (sys-info 0))
)

(if (run)
	(println ">>>>> Memory allocation/deallocation SUCCESSFUL")
	(println ">>>>> PROBLEM in memory allocation/deallocaton"))
	
(exit)