From c035a59094ee603e6f938ca9217cc040d78d0296 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Thu, 27 Oct 2016 21:00:08 +0200 Subject: [PATCH] Add sicp garbage example: tests/gc-1.test. --- mes.c | 2 +- tests/base.test | 1 + tests/gc-0.test | 4 ++-- tests/gc-1.test | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 52 insertions(+), 3 deletions(-) create mode 100755 tests/gc-1.test diff --git a/mes.c b/mes.c index 5e62a14e..53d88cce 100644 --- a/mes.c +++ b/mes.c @@ -37,7 +37,7 @@ int ARENA_SIZE = 28000; // sizeof(scm) = 24 int GC_SAFETY = 1000; #else // testing -int ARENA_SIZE = 10; +int ARENA_SIZE = 11; int GC_SAFETY = 0; #endif diff --git a/tests/base.test b/tests/base.test index cd3d7e58..f467ecbe 100755 --- a/tests/base.test +++ b/tests/base.test @@ -1,5 +1,6 @@ #! /bin/sh # -*-scheme-*- +set -x echo ' ()' | cat $($(dirname $0)/../scripts/include.mes $0) $0 /dev/stdin | $(dirname $0)/../scripts/mes "$@" #paredit:|| exit $? diff --git a/tests/gc-0.test b/tests/gc-0.test index 1c19e8ac..d98a630a 100755 --- a/tests/gc-0.test +++ b/tests/gc-0.test @@ -27,14 +27,14 @@ exit $? (define zero (gc-make-cell 2 0 0)) (define one (gc-make-cell 2 0 1)) -(display %the-cells) (newline) (define pair (gc-make-cell 3 zero one)) -(display "cells:") (display %the-cells) (newline) (define zero-list (gc-make-cell 3 zero '())) (define v (gc-make-vector 1)) (vector-set! v 0 88) (define zero-v-list (gc-make-cell 3 v zero-list)) (define list (gc-make-cell 3 (gc-make-cell 3 zero one) zero-v-list)) +(display "list: ") (display list) (newline) +(display "cells:") (display %the-cells) (newline) (gc list) (display "gc done\n") (display "scm old:") (display %new-cells) (newline) diff --git a/tests/gc-1.test b/tests/gc-1.test new file mode 100755 index 00000000..873b2ddd --- /dev/null +++ b/tests/gc-1.test @@ -0,0 +1,48 @@ +#! /bin/sh +# -*-scheme-*- +echo ' ()' | cat $($(dirname $0)/../scripts/include.mes $0) $0 /dev/stdin | $(dirname $0)/../scripts/mes "$@" +#paredit:|| +exit $? +!# + +;;; -*-scheme-*- + +;;; Mes --- Maxwell Equations of Software +;;; Copyright © 2016 Jan Nieuwenhuizen +;;; +;;; This file is part of Mes. +;;; +;;; Mes is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; Mes is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with Mes. If not, see . + +(define first (gc-make-cell 0 0 #\F)) (newline) + +(define one (gc-make-cell 2 0 1)) +(display "\n one=") (display one) (newline) +(define two (gc-make-cell 2 0 2)) +(define pair2-nil (gc-make-cell 3 two '())) +(display "\npair2-nil=") (display pair2-nil) (newline) +(gc-show) + +(define list1-2 (gc-make-cell 3 one pair2-nil)) +(display "\nlist1-2=") (display list1-2) (newline) +(gc-show) + +(define three (gc-make-cell 2 0 3)) +(define four (gc-make-cell 2 0 4)) +(define pair4-nil (gc-make-cell 3 four '())) +(define list3-4 (gc-make-cell 3 three pair4-nil)) +(define list1234 (gc-make-cell 3 list1-2 list3-4)) +(gc-show) +(gc list1234) +(gc-show)