summaryrefslogtreecommitdiffstats
path: root/tests/dimension/csg.sh
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@gmail.com>2010-04-10 22:09:45 -0400
committerTavian Barnes <tavianator@gmail.com>2010-04-10 22:27:56 -0400
commit26a6f5d017be9ec0ec03cd20d082546a4e435746 (patch)
tree75dc9e989945e5b15909328d5a910646bf72abaa /tests/dimension/csg.sh
parent0f356fe6d666b7f43b5b6f4565fe0b890228a75d (diff)
downloaddimension-26a6f5d017be9ec0ec03cd20d082546a4e435746.tar.xz
Improve CSG and light handling.
- Lights can be inside CSG objects - Lights can be modified by transformations - CSG objects can contain only one object
Diffstat (limited to 'tests/dimension/csg.sh')
-rwxr-xr-xtests/dimension/csg.sh85
1 files changed, 85 insertions, 0 deletions
diff --git a/tests/dimension/csg.sh b/tests/dimension/csg.sh
new file mode 100755
index 0000000..c27e448
--- /dev/null
+++ b/tests/dimension/csg.sh
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+#########################################################################
+# Copyright (C) 2010 Tavian Barnes <tavianator@gmail.com> #
+# #
+# This file is part of The Dimension Test Suite. #
+# #
+# The Dimension Test Suite 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. #
+# #
+# The Dimension Test Suite 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 this program. If not, see <http://www.gnu.org/licenses/>. #
+#########################################################################
+
+csg=$(${top_builddir}/dimension/dimension --parse ${srcdir}/csg.pov)
+csg_exp="$(echo -n \
+'((camera
+ perspective
+ (location (vector (integer 0) (integer 0) (integer -4)
+ (integer 0) (integer 0)))
+ (right (vector (float 1.6) (float 0) (float 0) (float 0) (float 0)))
+ (look_at (vector (integer 0) (integer 0) (integer 0)
+ (integer 0) (integer 0))))
+ (background
+ (vector (integer 0) (float 0.1) (float 0.2) (float 0.1) (integer 0)))
+ (union
+ (array
+ (sphere
+ (vector (float -1.5) (float 0) (float 0) (float 0) (float 0))
+ (integer 1)
+ (object-modifiers
+ (pigment
+ (vector (integer 1) (integer 0) (integer 0)
+ (integer 0) (integer 0))))))
+ object-modifiers)
+ (union
+ (array
+ (light_source
+ (vector (integer 0) (integer 20) (integer 0) (integer 0) (integer 0))
+ (vector (float 0.5) (float 0.5) (float 0.5) (integer 0) (integer 0))
+ object-modifiers))
+ object-modifiers)
+ (difference
+ (array
+ (light_source
+ (vector (integer -15) (integer 0) (integer 0) (integer 0) (integer 0))
+ (vector (float 0.5) (float 0.5) (float 0.5) (integer 0) (integer 0))
+ object-modifiers)
+ (sphere
+ (vector (float 1.5) (float -20) (float 0) (float 0) (float 0))
+ (integer 1)
+ (object-modifiers
+ (pigment
+ (vector (integer 0) (integer 1) (integer 0)
+ (integer 0) (integer 0)))))
+ (light_source
+ (vector (integer 15) (integer 0) (integer 0) (integer 0) (integer 0))
+ (vector (float 0.5) (float 0.5) (float 0.5) (integer 0) (integer 0))
+ object-modifiers)
+ (box
+ (vector (float 0.7) (float -20.8) (float -0.8) (integer 0) (integer 0))
+ (vector (float 2.3) (float -19.2) (float 0.8) (integer 0) (integer 0))
+ (object-modifiers
+ (pigment
+ (vector (integer 0) (integer 0) (integer 1)
+ (integer 0) (integer 0))))))
+ (object-modifiers
+ (translate (vector (integer 0) (integer 20) (integer 0)
+ (integer 0) (integer 0))))))' \
+| tr '\n' ' ' | sed -r 's/[[:space:]]+/ /g')"
+
+if [ "$csg" != "$csg_exp" ]; then
+ echo "csg.pov parsed as \"$csg\"" >&2
+ echo " -- expected \"$csg_exp\"" >&2
+ exit 1
+fi
+
+${top_builddir}/dimension/dimension -w768 -h480 -o csg.png ${srcdir}/csg.pov