gegl r2483 - in trunk: . operations/external tests/buffer tests/buffer/tests



Author: ok
Date: Tue Jun 17 21:32:26 2008
New Revision: 2483
URL: http://svn.gnome.org/viewvc/gegl?rev=2483&view=rev

Log:
	* tests/buffer/buffer-test.c: moved the tests into individual .c files
	in the tests subdir.
	* tests/buffer/Makefile: updated to handle test per file architecture.
	* tests/buffer/tests/: new dir (with 37 new files).


Added:
   trunk/tests/buffer/tests/
   trunk/tests/buffer/tests/buffer_inherit_parent_extent.c
   trunk/tests/buffer/tests/buffer_shift_diagonal.c
   trunk/tests/buffer/tests/buffer_shift_horizontal.c
   trunk/tests/buffer/tests/buffer_shift_vertical.c
   trunk/tests/buffer/tests/disabled_abyss.c
   trunk/tests/buffer/tests/get_shifted.c
   trunk/tests/buffer/tests/linear_from_data.c
   trunk/tests/buffer/tests/linear_from_data_rows.c
   trunk/tests/buffer/tests/linear_modify.c
   trunk/tests/buffer/tests/linear_new.c
   trunk/tests/buffer/tests/linear_proxy_modify.c
   trunk/tests/buffer/tests/sub_rect_fills_and_gets.c
   trunk/tests/buffer/tests/sub_sub_fill.c
   trunk/tests/buffer/tests/sub_sub_fill2.c
   trunk/tests/buffer/tests/test_blank.c
   trunk/tests/buffer/tests/test_checkerboard.c
   trunk/tests/buffer/tests/test_gegl_buffer_copy.c
   trunk/tests/buffer/tests/test_gegl_buffer_copy_lower_left.c
   trunk/tests/buffer/tests/test_gegl_buffer_copy_lower_right.c
   trunk/tests/buffer/tests/test_gegl_buffer_copy_self.c
   trunk/tests/buffer/tests/test_gegl_buffer_copy_upper_left.c
   trunk/tests/buffer/tests/test_gegl_buffer_copy_upper_right.c
   trunk/tests/buffer/tests/test_gegl_buffer_duplicate.c
   trunk/tests/buffer/tests/test_gegl_buffer_iterator1.c
   trunk/tests/buffer/tests/test_gegl_buffer_iterator1sub.c
   trunk/tests/buffer/tests/test_gegl_buffer_iterator2.c
   trunk/tests/buffer/tests/test_gegl_buffer_iterator2sub.c
   trunk/tests/buffer/tests/test_gegl_buffer_iterator3.c
   trunk/tests/buffer/tests/test_gegl_buffer_iterator3sub.c
   trunk/tests/buffer/tests/test_gegl_buffer_iterator4.c
   trunk/tests/buffer/tests/test_gegl_buffer_iterator4sub.c
   trunk/tests/buffer/tests/test_get_buffer_scaled.c
   trunk/tests/buffer/tests/test_get_buffer_scaled2.c
   trunk/tests/buffer/tests/test_gray.c
   trunk/tests/buffer/tests/test_rectangle.c
   trunk/tests/buffer/tests/test_sample.c
   trunk/tests/buffer/tests/vertical_gradient.c
Modified:
   trunk/ChangeLog
   trunk/operations/external/text.c
   trunk/tests/buffer/Makefile
   trunk/tests/buffer/buffer-test.c

Modified: trunk/operations/external/text.c
==============================================================================
--- trunk/operations/external/text.c	(original)
+++ trunk/operations/external/text.c	Tue Jun 17 21:32:26 2008
@@ -123,12 +123,12 @@
                                       (guint16) (color[1] * 65535),
                                       (guint16) (color[2] * 65535));
     if (attr)
-    {
-      attr->start_index = 0;
-      attr->end_index   = -1;
-      pango_attr_list_insert (attrs, attr);
-      pango_layout_set_attributes (layout, attrs);
-    }
+      {
+        attr->start_index = 0;
+        attr->end_index   = -1;
+        pango_attr_list_insert (attrs, attr);
+        pango_layout_set_attributes (layout, attrs);
+      }
   }
 
   /* Inform Pango to re-layout the text with the new transformation */

Modified: trunk/tests/buffer/Makefile
==============================================================================
--- trunk/tests/buffer/Makefile	(original)
+++ trunk/tests/buffer/Makefile	Tue Jun 17 21:32:26 2008
@@ -7,16 +7,22 @@
 	@echo `cat report | grep identical | wc -l` of `ls -1 reference | wc -l` tests succesful.
 
 
-buffer-tests.inc: buffer-test.c Makefile
+buffer-tests.inc: buffer-test.c Makefile tests/*.c
 	# extracting list of test functions from .c file before compilation
 	# of c-file itself.
-	echo 'typedef gchar *(*TestFunc) ();TestFunc tests[]={' > $@
-	for TEST in `rgrep '^static gchar.*(' buffer-test.c | sed -e 's/static.*\* *//' -e 's/[(){ ]*$$//'`;do \
+	echo '/* this file is generated by the Makefile */' > $@
+	for TEST in  `ls tests/*.c -1|sed -e s:tests/:: -e s:\\\.c::`; do \
+	     echo "#define TEST() static gchar * $$TEST ()" >> $@;\
+	     echo "#include \"tests/"$$TEST".c\"" >> $@;\
+	     echo "#undef TEST" >> $@;\
+	done;
+	echo 'typedef gchar *(*TestFunc) ();TestFunc tests[]={' >> $@
+	for TEST in  `ls tests/*.c -1|sed -e s:tests/:: -e s:\\\.c::`; do \
 	     echo $$TEST, >> $@;\
 	done;
 	echo '};' >> $@
 	echo 'static gchar *test_names[]={' >> $@
-	for TEST in `rgrep '^static gchar.*(' buffer-test.c | sed -e 's/static.*\* *//' -e 's/[(){ ]*$$//'`;do \
+	for TEST in  `ls tests/*.c -1|sed -e s:tests/:: -e s:\\\.c::`; do \
 	     echo \"$$TEST\", >> $@;\
 	done;
 	echo '};' >> $@

Modified: trunk/tests/buffer/buffer-test.c
==============================================================================
--- trunk/tests/buffer/buffer-test.c	(original)
+++ trunk/tests/buffer/buffer-test.c	Tue Jun 17 21:32:26 2008
@@ -12,6 +12,11 @@
  * tile sizes to make sure the behavior is consistent.
  */
 
+#include "../../gegl/buffer/gegl-buffer-iterator.h"
+#include "../../gegl/buffer/gegl-buffer-linear.h"
+
+
+
 /* helper macros for the output, issue a test_start() after your defined
  * variables and the first logic, use print as your printf and print_buffer to
  * dump a GeglBuffer's contents to the log, issue test_end for the final
@@ -57,835 +62,14 @@
                                    gint        height,
                                    gfloat      value);
 
-
-/***********************************************************************/
-
-static gchar * vertical_gradient ()
-{
-  GeglBuffer    *buffer;
-  GeglRectangle  rect = {0, 0, 20, 20};
-
-  test_start();
-  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
-  vgrad (buffer);
-  print_buffer (buffer);
-  gegl_buffer_destroy (buffer);
-  test_end();
-}
-
-static gchar * test_checkerboard ()
-{
-  GeglBuffer    *buffer;
-  GeglRectangle  rect = {0, 0, 20, 20};
-
-  test_start ();
-
-  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
-  checkerboard (buffer, 3, 0.0, 1.0);
-  print_buffer (buffer);
-  gegl_buffer_destroy (buffer);
-
-  test_end ();
-}
-
-static gchar * test_get_buffer_scaled ()
-{
-  GeglBuffer    *buffer;
-  GeglRectangle  rect = {0, 0, 50, 50};
-  GeglRectangle  getrect = {0, 0, 12, 8};
-  guchar        *buf;
-
-  test_start ();
-
-  buffer = gegl_buffer_new (&rect, babl_format ("Y u8"));
-  checkerboard (buffer, 2, 0.0, 1.0);
-  buf = g_malloc (getrect.width*getrect.height*sizeof(gfloat));
-
-    {
-      gint i;
-
-      for (i=0; i<10; i++)
-        {
-          getrect.x=i;
-          /*getrect.y=i;*/
-          gegl_buffer_get (buffer, 1.2, &getrect, babl_format ("Y u8"), buf, 0);
-          print_linear_buffer_u8 (getrect.width, getrect.height, buf);
-        }
-    }
-
-  gegl_buffer_destroy (buffer);
-
-  g_free (buf);
-  test_end ();
-}
-
-static gchar * test_get_buffer_scaled2 ()
-{
-  GeglBuffer    *buffer;
-  GeglRectangle  rect = {0, 0, 10, 10};
-  GeglRectangle  getrect = {-2, -2, 10, 10};
-  guchar        *buf;
-
-  test_start ();
-
-  buffer = gegl_buffer_new (&rect, babl_format ("Y u8"));
-  checkerboard (buffer, 2, 0.0, 1.0);
-  buf = g_malloc (getrect.width*getrect.height*sizeof(gfloat));
-
-  gegl_buffer_get (buffer, 0.66, &getrect, babl_format ("Y u8"), buf, 0);
-
-
-  print_linear_buffer_u8 (getrect.width, getrect.height, buf);
-  gegl_buffer_destroy (buffer);
-
-  g_free (buf);
-  test_end ();
-}
-
-
-
-
-
-static gchar * test_blank ()
-{
-  GeglBuffer    *buffer;
-  GeglRectangle  rect = {0, 0, 20, 20};
-
-  test_start ();
-
-  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
-  print_buffer (buffer);
-  gegl_buffer_destroy (buffer);
-
-  test_end ();
-}
-
-static gchar * test_gray ()
-{
-  GeglBuffer    *buffer;
-  GeglRectangle  rect = {0, 0, 20, 20};
-
-  test_start ();
-
-  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
-  fill (buffer, 0.5);
-  print_buffer (buffer);
-  gegl_buffer_destroy (buffer);
-
-  test_end ();
-}
-
-static gchar * test_rectangle ()
-{
-  GeglBuffer    *buffer;
-  GeglRectangle  rect = {0, 0, 20, 20};
-
-  test_start ();
-
-  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
-  fill (buffer, 0.5);
-  rectangle (buffer, 5,5, 10, 10, 0.0);
-  print_buffer (buffer);
-  gegl_buffer_destroy (buffer);
-
-  test_end ();
-}
-
-static gchar * sub_rect_fills_and_gets ()
-{
-  GeglBuffer    *buffer, *sub1, *sub2, *sub3;
-  GeglRectangle  subrect1 = {5, 5, 10, 10};
-  GeglRectangle  subrect2 = {8, 8, 30, 30};
-  GeglRectangle  subrect3 = {-2, -2, 24, 24};
-  GeglRectangle  rect = {0, 0, 20, 20};
-  test_start ();
-  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
-  sub1 = gegl_buffer_create_sub_buffer (buffer, &subrect1);
-  sub2 = gegl_buffer_create_sub_buffer (buffer, &subrect2);
-  sub3 = gegl_buffer_create_sub_buffer (buffer, &subrect3);
-
-  fill (sub1, 0.5);
-  print ("root with sub1 filled in:\n");
-  print_buffer (buffer);
-
-  print ("sub2 before fill:\n");
-  print_buffer (sub2);
-  fill (sub2, 1.0);
-  print ("final root:\n");
-  print_buffer (buffer);
-  print ("final sub1:\n");
-  print_buffer (sub1);
-  print ("final sub3:\n");
-  print_buffer (sub3);
-
-  gegl_buffer_destroy (sub1);
-  gegl_buffer_destroy (sub2);
-  gegl_buffer_destroy (sub3);
-  gegl_buffer_destroy (buffer);
-  test_end ();
-}
-
-static gchar * sub_sub_fill2 ()
-{
-  GeglBuffer    *buffer, *sub, *subsub;
-  GeglRectangle  subrect =    {5, 5, 10, 10};
-  GeglRectangle  subsubrect = {3, 3, 4, 4};
-  GeglRectangle  rect =       {0, 0, 20, 20};
-  test_start ();
-  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
-  fill (buffer, 0.8);
-  sub = gegl_buffer_create_sub_buffer (buffer, &subrect);
-
-  fill (sub, 0.5);
-
-  subsub = gegl_buffer_create_sub_buffer (sub, &subsubrect);
-  fill (subsub, 1.0);
-  print_buffer (buffer);
-  print_buffer (subsub);
-  gegl_buffer_destroy (sub);
-  gegl_buffer_destroy (subsub);
-  gegl_buffer_destroy (buffer);
-  test_end ();
-}
-
-static gchar * sub_sub_fill ()
-{
-  GeglBuffer    *buffer, *sub, *subsub;
-  GeglRectangle  subrect =    {5, 5, 10, 10};
-  GeglRectangle  subsubrect = {3, 3, 4, 4};
-  GeglRectangle  rect =       {0, 0, 20, 20};
-  test_start ();
-  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
-  sub = gegl_buffer_create_sub_buffer (buffer, &subrect);
-
-  fill (sub, 0.5);
-
-  subsub = gegl_buffer_create_sub_buffer (sub, &subsubrect);
-  fill (subsub, 1.0);
-  print_buffer (buffer);
-  gegl_buffer_destroy (sub);
-  gegl_buffer_destroy (subsub);
-  gegl_buffer_destroy (buffer);
-  test_end ();
-}
-
-static gchar * test_sample ()
-{
-  GeglBuffer    *buffer, *sub, *subsub, *subsubsub;
-  GeglRectangle  subrect       = {5, 5, 10, 10};
-  GeglRectangle  subsubrect    = {3, 3, 14, 14};
-  GeglRectangle  subsubsubrect = {5, 3, 2, 2};
-  GeglRectangle  rect =       {0, 0, 20, 20};
-  test_start ();
-  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
-
-  vgrad (buffer);
-
-  sub = gegl_buffer_create_sub_buffer (buffer, &subrect);
-
-  fill (sub, 0.5);
-
-  subsub = gegl_buffer_create_sub_buffer (sub, &subsubrect);
-  fill (subsub, 1.0);
-  subsubsub = gegl_buffer_create_sub_buffer (buffer, &subsubsubrect);
-  fill (subsubsub, 1.0);
-
-  print_buffer (buffer);
-  gegl_buffer_destroy (sub);
-  gegl_buffer_destroy (subsub);
-  gegl_buffer_destroy (subsubsub);
-  gegl_buffer_destroy (buffer);
-  test_end ();
-}
-
-/* this functionality is not accesible through the normal (non gobject
- * constructor properties based) API
- */
-static gchar * disabled_abyss ()
-{
-  GeglBuffer    *buffer, *sub, *subsub;
-  GeglRectangle  subrect =    {5, 5, 10, 10};
-  GeglRectangle  subsubrect = {3, 3, 4, 4};
-  GeglRectangle  rect =       {0, 0, 20, 20};
-  test_start ();
-  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
-
-  sub = g_object_new (GEGL_TYPE_BUFFER,
-                         "source", buffer,
-                         "x", subrect.x,
-                         "y", subrect.y,
-                         "width", subrect.width,
-                         "height", subrect.height,
-                         "abyss-width", -1,
-                         "abyss-height", -1,
-                         NULL);
-  fill (sub, 0.5);
-  subsub = g_object_new (GEGL_TYPE_BUFFER,
-                         "source", sub,
-                         "x", subsubrect.x,
-                         "y", subsubrect.y,
-                         "width", subsubrect.width,
-                         "height", subsubrect.height,
-                         "abyss-width", -1,
-                         "abyss-height", -1,
-                         NULL);
-
-  fill (subsub, 1.0);
-  print_buffer (buffer);
-  gegl_buffer_destroy (sub);
-  gegl_buffer_destroy (subsub);
-  gegl_buffer_destroy (buffer);
-  test_end ();
-}
-
-static gchar * buffer_inherit_parent_extent ()
-{
-  GeglBuffer    *buffer, *sub, *subsub;
-  GeglRectangle  subrect =    {5, 5, 10, 10};
-  GeglRectangle  subsubrect = {0, 0, -1, -1};
-  GeglRectangle  rect =       {0, 0, 20, 20};
-  test_start ();
-  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
-
-  sub = gegl_buffer_create_sub_buffer (buffer, &subrect);
-  fill (sub, 0.5);
-  subsub = gegl_buffer_create_sub_buffer (sub, &subsubrect);
-  fill (subsub, 1.0);
-  print_buffer (buffer);
-
-  gegl_buffer_destroy (sub);
-  gegl_buffer_destroy (subsub);
-  gegl_buffer_destroy (buffer);
-  test_end ();
-}
-
-static gchar * buffer_shift_vertical ()
-{
-  GeglBuffer    *buffer, *sub, *subsub;
-  GeglRectangle  subrect =    {5, 5, 10, 10};
-  GeglRectangle  rect =       {0, 0, 20, 20};
-  test_start ();
-  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
-
-  sub = gegl_buffer_create_sub_buffer (buffer, &subrect);
-  fill (sub, 0.5);
-  subsub = g_object_new (GEGL_TYPE_BUFFER,
-                         "source", sub,
-                         "x", 5,
-                         "y", 5,
-                         "width", 4,
-                         "height", 4,
-                         "shift-y", 5,
-                         "shift-x", 0,
-                         NULL);
-
-  fill (subsub, 1.0);
-  print_buffer (buffer);
-  gegl_buffer_destroy (sub);
-  gegl_buffer_destroy (subsub);
-  gegl_buffer_destroy (buffer);
-  test_end ();
-}
-
-static gchar * buffer_shift_horizontal ()
-{
-  GeglBuffer    *buffer, *sub, *subsub;
-  GeglRectangle  subrect =    {5, 5, 10, 10};
-  GeglRectangle  rect =       {0, 0, 20, 20};
-  test_start ();
-  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
-
-  sub = gegl_buffer_create_sub_buffer (buffer, &subrect);
-  fill (sub, 0.5);
-  subsub = g_object_new (GEGL_TYPE_BUFFER,
-                         "source", sub,
-                         "x", 5,
-                         "y", 5,
-                         "width", 6,
-                         "height", 6,
-                         "shift-x", 8,
-                         NULL);
-
-  fill (subsub, 1.0);
-  print_buffer (buffer);
-  gegl_buffer_destroy (sub);
-  gegl_buffer_destroy (subsub);
-  gegl_buffer_destroy (buffer);
-  test_end ();
-}
-
-static gchar * buffer_shift_diagonal ()
-{
-  GeglBuffer    *buffer, *sub, *subsub;
-  GeglRectangle  subrect =    {5, 5, 10, 10};
-  GeglRectangle  rect =       {0, 0, 20, 20};
-  test_start ();
-  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
-
-  sub = gegl_buffer_create_sub_buffer (buffer, &subrect);
-  fill (sub, 0.5);
-  subsub = g_object_new (GEGL_TYPE_BUFFER,
-                         "source", sub,
-                         "x", 3,
-                         "y", 3,
-                         "width", 4,
-                         "height", 4,
-                         "shift-x", 6,
-                         "shift-y", 6,
-                         NULL);
-
-  fill (subsub, 0.2);
-  print_buffer (buffer);
-  gegl_buffer_destroy (sub);
-  gegl_buffer_destroy (subsub);
-  gegl_buffer_destroy (buffer);
-  test_end ();
-}
-
-static gchar * get_shifted ()
-{
-  GeglBuffer    *buffer, *sub, *subsub, *foo;
-  GeglRectangle  subrect =    {5, 5, 10, 10};
-  GeglRectangle  foor =  {0, 0, 10, 10};
-  GeglRectangle  rect =  {0, 0, 20, 20};
-  test_start ();
-  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
-
-  sub = gegl_buffer_create_sub_buffer (buffer, &subrect);
-  vgrad (buffer);
-  vgrad (sub);
-  subsub = g_object_new (GEGL_TYPE_BUFFER,
-                         "source", sub,
-                         "x", 0,
-                         "y", 0,
-                         "width", 40,
-                         "height", 40,
-                         "shift-x", 0,
-                         "shift-y", 0,
-                         NULL);
-  foo = gegl_buffer_create_sub_buffer (subsub, &foor);
-
-  /*fill (subsub, 0.2);*/
-  print_buffer (buffer);
-  print_buffer (foo);
-  gegl_buffer_destroy (sub);
-  gegl_buffer_destroy (subsub);
-  gegl_buffer_destroy (buffer);
-  gegl_buffer_destroy (foo);
-  test_end ();
-}
-
-
-static gchar * test_gegl_buffer_copy_self ()
-{
-  GeglBuffer    *buffer;
-  GeglRectangle  source = {2, 2, 2, 2};
-  GeglRectangle  dest  = {15, 15, 1, 1};
-  GeglRectangle  rect = {0, 0, 20, 20};
-  test_start ();
-  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
-
-  vgrad (buffer);
-  gegl_buffer_copy (buffer, &source, buffer, &dest); /* copying to self */
-  print_buffer (buffer);
-  gegl_buffer_destroy (buffer);
-  test_end ();
-}
-
-
-static gchar * test_gegl_buffer_copy ()
-{
-  GeglBuffer    *buffer, *buffer2;
-  GeglRectangle  bound = {0, 0, 20, 20};
-  GeglRectangle  source = {2, 2, 5, 5};
-  GeglRectangle  dest = {10, 10, 5, 5};
-  test_start ();
-  buffer = gegl_buffer_new (&bound, babl_format ("Y float"));
-  buffer2 = gegl_buffer_new (&bound, babl_format ("Y float"));
-
-  vgrad (buffer);
-  gegl_buffer_copy (buffer, &source, buffer2, &dest); 
-  print_buffer (buffer2);
-  gegl_buffer_destroy (buffer);
-  gegl_buffer_destroy (buffer2);
-  test_end ();
-}
-
-static gchar * test_gegl_buffer_copy_upper_left ()
-{
-  GeglBuffer    *buffer, *buffer2;
-  GeglRectangle  bound = {0, 0, 20, 20};
-  test_start ();
-  buffer = gegl_buffer_new (&bound, babl_format ("Y float"));
-  vgrad (buffer);
-  {
-    GeglRectangle rect = *gegl_buffer_get_extent(buffer);
-
-    rect.width-=10;
-    rect.height-=10;
-  buffer2 = gegl_buffer_new (gegl_buffer_get_extent (buffer), gegl_buffer_get_format (buffer));
-  gegl_buffer_copy (buffer, &rect, buffer2, &rect);
-  }
-  print_buffer (buffer2);
-  gegl_buffer_destroy (buffer);
-  gegl_buffer_destroy (buffer2);
-  test_end ();
-}
-
-
-static gchar * test_gegl_buffer_copy_upper_right ()
-{
-  GeglBuffer    *buffer, *buffer2;
-  GeglRectangle  bound = {0, 0, 20, 20};
-  test_start ();
-  buffer = gegl_buffer_new (&bound, babl_format ("Y float"));
-  vgrad (buffer);
-  {
-    GeglRectangle rect = *gegl_buffer_get_extent(buffer);
-
-    rect.x=10;
-    rect.width-=10;
-    rect.height-=10;
-  buffer2 = gegl_buffer_new (gegl_buffer_get_extent (buffer), gegl_buffer_get_format (buffer));
-  gegl_buffer_copy (buffer, &rect, buffer2, &rect);
-  }
-  print_buffer (buffer2);
-  gegl_buffer_destroy (buffer);
-  gegl_buffer_destroy (buffer2);
-  test_end ();
-}
-
-static gchar * test_gegl_buffer_copy_lower_right ()
-{
-  GeglBuffer    *buffer, *buffer2;
-  GeglRectangle  bound = {0, 0, 20, 20};
-  test_start ();
-  buffer = gegl_buffer_new (&bound, babl_format ("Y float"));
-  vgrad (buffer);
-  {
-    GeglRectangle rect = *gegl_buffer_get_extent(buffer);
-
-    rect.x=10;
-    rect.y=10;
-    rect.width-=10;
-    rect.height-=10;
-  buffer2 = gegl_buffer_new (gegl_buffer_get_extent (buffer), gegl_buffer_get_format (buffer));
-  gegl_buffer_copy (buffer, &rect, buffer2, &rect);
-  }
-  print_buffer (buffer2);
-  gegl_buffer_destroy (buffer);
-  gegl_buffer_destroy (buffer2);
-  test_end ();
-}
-
-static gchar * test_gegl_buffer_copy_lower_left ()
-{
-  GeglBuffer    *buffer, *buffer2;
-  GeglRectangle  bound = {0, 0, 20, 20};
-  test_start ();
-  buffer = gegl_buffer_new (&bound, babl_format ("Y float"));
-  vgrad (buffer);
-  {
-    GeglRectangle rect = *gegl_buffer_get_extent(buffer);
-
-    rect.x=0;
-    rect.y=10;
-    rect.width-=10;
-    rect.height-=10;
-  buffer2 = gegl_buffer_new (gegl_buffer_get_extent (buffer), gegl_buffer_get_format (buffer));
-  gegl_buffer_copy (buffer, &rect, buffer2, &rect);
-  }
-  print_buffer (buffer2);
-  gegl_buffer_destroy (buffer);
-  gegl_buffer_destroy (buffer2);
-  test_end ();
-}
-
-
-static gchar * test_gegl_buffer_duplicate ()
-{
-  GeglBuffer    *buffer, *buffer2;
-  GeglRectangle  bound = {0, 0, 20, 20};
-  test_start ();
-  buffer = gegl_buffer_new (&bound, babl_format ("Y float"));
-  vgrad (buffer);
-  buffer2 = gegl_buffer_dup (buffer);
-  print_buffer (buffer2);
-  gegl_buffer_destroy (buffer);
-  gegl_buffer_destroy (buffer2);
-  test_end ();
-}
-
-#include "../../gegl/buffer/gegl-buffer-iterator.h"
-
 static void fill_rect (GeglBuffer          *buffer,
                        const GeglRectangle *roi,
                        gfloat               value
-                       )
-{
-  GeglBufferIterator *gi;
-  gi = gegl_buffer_iterator_new (buffer, roi, NULL, GEGL_BUFFER_WRITE);
-  while (gegl_buffer_iterator_next (gi))
-    {
-      gfloat *buf = gi->data[0];
-      gint    i;
-      for (i=0; i<gi->length; i++)
-        {
-          buf[i]=value;
-        }
-    }
-}
+                       );
 
-static gchar * test_gegl_buffer_iterator1 ()
-{
-  GeglBuffer   *buffer;
-  GeglRectangle extent = {0,0,20,20};
-  GeglRectangle roi = {0,0,20,20};
-  test_start();
-  buffer = gegl_buffer_new (&extent, babl_format ("Y float"));
-  fill_rect (buffer, &roi, 0.5);
-  print_buffer (buffer);
-  test_end ();
-  gegl_buffer_destroy (buffer);
-}
-static gchar * test_gegl_buffer_iterator2 ()
-{
-  GeglBuffer   *buffer;
-  GeglRectangle extent = {0,0,20,20};
-  GeglRectangle roi = {0,0,10,10};
-  test_start();
-  buffer = gegl_buffer_new (&extent, babl_format ("Y float"));
-  fill_rect (buffer, &roi, 0.5);
-  print_buffer (buffer);
-  test_end ();
-  gegl_buffer_destroy (buffer);
-}
-static gchar * test_gegl_buffer_iterator3 ()
-{
-  GeglBuffer   *buffer;
-  GeglRectangle extent = {0,0,20,20};
-  GeglRectangle roi = {5,5,10,10};
-  test_start();
-  buffer = gegl_buffer_new (&extent, babl_format ("Y float"));
-  fill_rect (buffer, &roi, 0.5);
-  print_buffer (buffer);
-  test_end ();
-  gegl_buffer_destroy (buffer);
-}
-static gchar * test_gegl_buffer_iterator4 ()
-{
-  GeglBuffer   *buffer;
-  GeglRectangle extent = {0,0,20,20};
-  GeglRectangle roi = {1,1,10,10};
-  test_start();
-  buffer = gegl_buffer_new (&extent, babl_format ("Y float"));
-  fill_rect (buffer, &roi, 0.5);
-  print_buffer (buffer);
-  test_end ();
-  gegl_buffer_destroy (buffer);
-}
-
-
-static gchar * test_gegl_buffer_iterator1sub ()
-{
-  GeglBuffer   *buffer;
-  GeglBuffer   *sub;
-  GeglRectangle extent = {0,0,20,20};
-  GeglRectangle sextent = {2,2,20,20};
-  GeglRectangle roi = {0,0,20,20};
-  test_start();
-  buffer = gegl_buffer_new (&extent, babl_format ("Y float"));
-  sub = gegl_buffer_create_sub_buffer (buffer, &sextent);
-
-  fill_rect (sub, &roi, 0.5);
-  print_buffer (buffer);
-  test_end ();
-  gegl_buffer_destroy (sub);
-  gegl_buffer_destroy (buffer);
-}
-static gchar * test_gegl_buffer_iterator2sub ()
-{
-  GeglBuffer   *buffer;
-  GeglBuffer   *sub;
-  GeglRectangle extent = {0,0,20,20};
-  GeglRectangle sextent = {2,2,20,20};
-  GeglRectangle roi = {0,0,10,10};
-  test_start();
-  buffer = gegl_buffer_new (&extent, babl_format ("Y float"));
-  sub = gegl_buffer_create_sub_buffer (buffer, &sextent);
-  fill_rect (sub, &roi, 0.5);
-  print_buffer (buffer);
-  test_end ();
-  gegl_buffer_destroy (sub);
-  gegl_buffer_destroy (buffer);
-}
-static gchar * test_gegl_buffer_iterator3sub ()
-{
-  GeglBuffer   *buffer;
-  GeglBuffer   *sub;
-  GeglRectangle extent = {0,0,20,20};
-  GeglRectangle sextent = {2,2,20,20};
-  GeglRectangle roi = {5,5,10,10};
-  test_start();
-  buffer = gegl_buffer_new (&extent, babl_format ("Y float"));
-  sub = gegl_buffer_create_sub_buffer (buffer, &sextent);
-  fill_rect (sub, &roi, 0.5);
-  print_buffer (buffer);
-  test_end ();
-  gegl_buffer_destroy (sub);
-  gegl_buffer_destroy (buffer);
-}
-static gchar * test_gegl_buffer_iterator4sub ()
-{
-  GeglBuffer   *buffer;
-  GeglBuffer   *sub;
-  GeglRectangle extent = {0,0,20,20};
-  GeglRectangle sextent = {2,2,20,20};
-  GeglRectangle roi = {1,1,10,10};
-  test_start();
-  buffer = gegl_buffer_new (&extent, babl_format ("Y float"));
-  sub = gegl_buffer_create_sub_buffer (buffer, &sextent);
-  fill_rect (sub, &roi, 0.5);
-  print_buffer (buffer);
-  test_end ();
-  gegl_buffer_destroy (sub);
-  gegl_buffer_destroy (buffer);
-}
-
-#include "../../gegl/buffer/gegl-buffer-private.h"
-
-static gchar * linear_new ()
-{
-  GeglBuffer   *buffer;
-  GeglRectangle extent = {0,0,40,20};
-  GeglRectangle roi = {1,1,30,10};
-  test_start();
-  g_print ("foo!\n");
-  buffer = gegl_buffer_linear_new (&extent, babl_format ("Y float"));
-  fill_rect (buffer, &roi, 0.5);
-  roi.y+=3;
-  roi.x+=20;
-  fill_rect (buffer, &roi, 0.2);
-  print_buffer (buffer);
-  test_end ();
-  gegl_buffer_destroy (buffer);
-}
-
-
-static gchar * linear_modify ()
-{
-  GeglBuffer   *buffer;
-  GeglRectangle extent = {0,0,40,20};
-  GeglRectangle roi = {1,1,30,10};
-  test_start();
-  buffer = gegl_buffer_linear_new (&extent, babl_format ("Y float"));
-  fill_rect (buffer, &roi, 0.5);
-  roi.y+=3;
-  roi.x+=20;
-
-  {
-    gint    rowstride;
-    gfloat *buf;
-    gint    x, y, i;
-
-    buf = (gpointer)gegl_buffer_linear_open (buffer, &extent, &rowstride, NULL);
-    g_assert (buf);
-
-    i=0;
-    for (y=0;y<extent.height;y++)
-      for (x=0;x<extent.width;x++)
-        {
-          buf[i++]= ((x+y)*1.0) / extent.width;
-        }
-    gegl_buffer_linear_close (buffer, buf);
-  }
-  fill_rect (buffer, &roi, 0.2);
-
-  print_buffer (buffer);
-  test_end ();
-  gegl_buffer_destroy (buffer);
-}
-
-static gchar * linear_from_data ()
-{
-  GeglBuffer   *buffer;
-  GeglRectangle extent = {0,0, 10, 10};
-  gfloat       *buf;
-  test_start();
-
-  buf = g_malloc (sizeof (float) * 10 * 10);
-  gint i;
-  for (i=0;i<100;i++)
-    buf[i]=i/100.0;
-
-  buffer = gegl_buffer_linear_new_from_data (buf, babl_format ("Y float"),
-                                             &extent,
-                                             10 * 4,
-                                             G_CALLBACK(g_free), /* destroy_notify */
-                                             NULL   /* destroy_notify_data */);
-  print_buffer (buffer);
-  test_end ();
-  gegl_buffer_destroy (buffer);
-}
-
-static gchar * linear_from_data_rows ()
-{
-  GeglBuffer   *buffer;
-  GeglRectangle extent = {0,0, 10, 10};
-  gfloat       *buf;
-  test_start();
-
-  buf = g_malloc (sizeof (float) * 12 * 10);
-  gint i;
-  for (i=0;i<120;i++)
-    buf[i]=i%12==5?0.5:0.0;
-
-  buffer = gegl_buffer_linear_new_from_data (buf, babl_format ("Y float"),
-                                             &extent,
-                                             12 * 4,
-                                             G_CALLBACK(g_free), /* destroy_notify */
-                                             NULL   /* destroy_notify_data */);
-  print_buffer (buffer);
-  test_end ();
-  gegl_buffer_destroy (buffer);
-}
-
-
-static gchar * linear_proxy_modify ()
-{
-  GeglBuffer   *buffer;
-  GeglRectangle extent = {0,0,40,20};
-  GeglRectangle roi = {1,1,30,10};
-  test_start();
-  buffer = gegl_buffer_new (&extent, babl_format ("Y float"));
-  fill_rect (buffer, &roi, 0.5);
-  roi.y+=3;
-  roi.x+=20;
-
-  {
-    gint    rowstride;
-    gfloat *buf;
-    gint    x, y, i;
-
-    buf = (gpointer)gegl_buffer_linear_open (buffer, &extent, &rowstride, NULL);
-    g_assert (buf);
-
-    i=0;
-    for (y=0;y<extent.height;y++)
-      for (x=0;x<extent.width;x++)
-        {
-          buf[i++]= ((x+y)*1.0) / extent.width;
-        }
-    gegl_buffer_linear_close (buffer, buf);
-  }
-  fill_rect (buffer, &roi, 0.2);
-
-  print_buffer (buffer);
-  test_end ();
-  gegl_buffer_destroy (buffer);
-}
 
 
+/***********************************************************************/
 /**************************************************************************/
 
 static void
@@ -894,7 +78,7 @@
                                     gint        height,
                                     gfloat     *buf)
 {
-  gchar *scale[]={" ", "â", "â", "â", "â", "â", "!"};
+  gchar *scale[]={" ", "â", "â", "â", "â", "â"};
   gint x,y;
   print ("â");
   for (x=0;x<width;x++)
@@ -1063,6 +247,24 @@
   g_free (buf);
 }
 
+static void fill_rect (GeglBuffer          *buffer,
+                       const GeglRectangle *roi,
+                       gfloat               value
+                       )
+{
+  GeglBufferIterator *gi;
+  gi = gegl_buffer_iterator_new (buffer, roi, NULL, GEGL_BUFFER_WRITE);
+  while (gegl_buffer_iterator_next (gi))
+    {
+      gfloat *buf = gi->data[0];
+      gint    i;
+      for (i=0; i<gi->length; i++)
+        {
+          buf[i]=value;
+        }
+    }
+}
+
 void rectangle (GeglBuffer *buffer,
                 gint        x,
                 gint        y,

Added: trunk/tests/buffer/tests/buffer_inherit_parent_extent.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/buffer_inherit_parent_extent.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,21 @@
+TEST ()
+{
+  GeglBuffer    *buffer, *sub, *subsub;
+  GeglRectangle  subrect =    {5, 5, 10, 10};
+  GeglRectangle  subsubrect = {0, 0, -1, -1};
+  GeglRectangle  rect =       {0, 0, 20, 20};
+  test_start ();
+  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
+
+  sub = gegl_buffer_create_sub_buffer (buffer, &subrect);
+  fill (sub, 0.5);
+  subsub = gegl_buffer_create_sub_buffer (sub, &subsubrect);
+  fill (subsub, 1.0);
+  print_buffer (buffer);
+
+  gegl_buffer_destroy (sub);
+  gegl_buffer_destroy (subsub);
+  gegl_buffer_destroy (buffer);
+  test_end ();
+}
+

Added: trunk/tests/buffer/tests/buffer_shift_diagonal.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/buffer_shift_diagonal.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,27 @@
+TEST ()
+{
+  GeglBuffer    *buffer, *sub, *subsub;
+  GeglRectangle  subrect =    {5, 5, 10, 10};
+  GeglRectangle  rect =       {0, 0, 20, 20};
+  test_start ();
+  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
+
+  sub = gegl_buffer_create_sub_buffer (buffer, &subrect);
+  fill (sub, 0.5);
+  subsub = g_object_new (GEGL_TYPE_BUFFER,
+                         "source", sub,
+                         "x", 3,
+                         "y", 3,
+                         "width", 4,
+                         "height", 4,
+                         "shift-x", 6,
+                         "shift-y", 6,
+                         NULL);
+
+  fill (subsub, 0.2);
+  print_buffer (buffer);
+  gegl_buffer_destroy (sub);
+  gegl_buffer_destroy (subsub);
+  gegl_buffer_destroy (buffer);
+  test_end ();
+}

Added: trunk/tests/buffer/tests/buffer_shift_horizontal.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/buffer_shift_horizontal.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,26 @@
+TEST ()
+{
+  GeglBuffer    *buffer, *sub, *subsub;
+  GeglRectangle  subrect =    {5, 5, 10, 10};
+  GeglRectangle  rect =       {0, 0, 20, 20};
+  test_start ();
+  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
+
+  sub = gegl_buffer_create_sub_buffer (buffer, &subrect);
+  fill (sub, 0.5);
+  subsub = g_object_new (GEGL_TYPE_BUFFER,
+                         "source", sub,
+                         "x", 5,
+                         "y", 5,
+                         "width", 6,
+                         "height", 6,
+                         "shift-x", 8,
+                         NULL);
+
+  fill (subsub, 1.0);
+  print_buffer (buffer);
+  gegl_buffer_destroy (sub);
+  gegl_buffer_destroy (subsub);
+  gegl_buffer_destroy (buffer);
+  test_end ();
+}

Added: trunk/tests/buffer/tests/buffer_shift_vertical.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/buffer_shift_vertical.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,27 @@
+TEST ()
+{
+  GeglBuffer    *buffer, *sub, *subsub;
+  GeglRectangle  subrect =    {5, 5, 10, 10};
+  GeglRectangle  rect =       {0, 0, 20, 20};
+  test_start ();
+  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
+
+  sub = gegl_buffer_create_sub_buffer (buffer, &subrect);
+  fill (sub, 0.5);
+  subsub = g_object_new (GEGL_TYPE_BUFFER,
+                         "source", sub,
+                         "x", 5,
+                         "y", 5,
+                         "width", 4,
+                         "height", 4,
+                         "shift-y", 5,
+                         "shift-x", 0,
+                         NULL);
+
+  fill (subsub, 1.0);
+  print_buffer (buffer);
+  gegl_buffer_destroy (sub);
+  gegl_buffer_destroy (subsub);
+  gegl_buffer_destroy (buffer);
+  test_end ();
+}

Added: trunk/tests/buffer/tests/disabled_abyss.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/disabled_abyss.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,40 @@
+/* this functionality is not accesible through the normal (non gobject
+ * constructor properties based) API
+ */
+
+TEST ()
+{
+  GeglBuffer    *buffer, *sub, *subsub;
+  GeglRectangle  subrect =    {5, 5, 10, 10};
+  GeglRectangle  subsubrect = {3, 3, 4, 4};
+  GeglRectangle  rect =       {0, 0, 20, 20};
+  test_start ();
+  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
+
+  sub = g_object_new (GEGL_TYPE_BUFFER,
+                         "source", buffer,
+                         "x", subrect.x,
+                         "y", subrect.y,
+                         "width", subrect.width,
+                         "height", subrect.height,
+                         "abyss-width", -1,
+                         "abyss-height", -1,
+                         NULL);
+  fill (sub, 0.5);
+  subsub = g_object_new (GEGL_TYPE_BUFFER,
+                         "source", sub,
+                         "x", subsubrect.x,
+                         "y", subsubrect.y,
+                         "width", subsubrect.width,
+                         "height", subsubrect.height,
+                         "abyss-width", -1,
+                         "abyss-height", -1,
+                         NULL);
+
+  fill (subsub, 1.0);
+  print_buffer (buffer);
+  gegl_buffer_destroy (sub);
+  gegl_buffer_destroy (subsub);
+  gegl_buffer_destroy (buffer);
+  test_end ();
+}

Added: trunk/tests/buffer/tests/get_shifted.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/get_shifted.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,32 @@
+TEST ()
+{
+  GeglBuffer    *buffer, *sub, *subsub, *foo;
+  GeglRectangle  subrect =    {5, 5, 10, 10};
+  GeglRectangle  foor =  {0, 0, 10, 10};
+  GeglRectangle  rect =  {0, 0, 20, 20};
+  test_start ();
+  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
+
+  sub = gegl_buffer_create_sub_buffer (buffer, &subrect);
+  vgrad (buffer);
+  vgrad (sub);
+  subsub = g_object_new (GEGL_TYPE_BUFFER,
+                         "source", sub,
+                         "x", 0,
+                         "y", 0,
+                         "width", 40,
+                         "height", 40,
+                         "shift-x", 0,
+                         "shift-y", 0,
+                         NULL);
+  foo = gegl_buffer_create_sub_buffer (subsub, &foor);
+
+  /*fill (subsub, 0.2);*/
+  print_buffer (buffer);
+  print_buffer (foo);
+  gegl_buffer_destroy (sub);
+  gegl_buffer_destroy (subsub);
+  gegl_buffer_destroy (buffer);
+  gegl_buffer_destroy (foo);
+  test_end ();
+}

Added: trunk/tests/buffer/tests/linear_from_data.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/linear_from_data.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,21 @@
+TEST ()
+{
+  GeglBuffer   *buffer;
+  GeglRectangle extent = {0,0, 10, 10};
+  gfloat       *buf;
+  test_start();
+
+  buf = g_malloc (sizeof (float) * 10 * 10);
+  gint i;
+  for (i=0;i<100;i++)
+    buf[i]=i/100.0;
+
+  buffer = gegl_buffer_linear_new_from_data (buf, babl_format ("Y float"),
+                                             &extent,
+                                             10 * 4,
+                                             G_CALLBACK(g_free), /* destroy_notify */
+                                             NULL   /* destroy_notify_data */);
+  print_buffer (buffer);
+  test_end ();
+  gegl_buffer_destroy (buffer);
+}

Added: trunk/tests/buffer/tests/linear_from_data_rows.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/linear_from_data_rows.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,21 @@
+TEST ()
+{
+  GeglBuffer   *buffer;
+  GeglRectangle extent = {0,0, 10, 10};
+  gfloat       *buf;
+  test_start();
+
+  buf = g_malloc (sizeof (float) * 12 * 10);
+  gint i;
+  for (i=0;i<120;i++)
+    buf[i]=i%12==5?0.5:0.0;
+
+  buffer = gegl_buffer_linear_new_from_data (buf, babl_format ("Y float"),
+                                             &extent,
+                                             12 * 4,
+                                             G_CALLBACK(g_free), /* destroy_notify */
+                                             NULL   /* destroy_notify_data */);
+  print_buffer (buffer);
+  test_end ();
+  gegl_buffer_destroy (buffer);
+}

Added: trunk/tests/buffer/tests/linear_modify.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/linear_modify.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,33 @@
+TEST ()
+{
+  GeglBuffer   *buffer;
+  GeglRectangle extent = {0,0,40,20};
+  GeglRectangle roi = {1,1,30,10};
+  test_start();
+  buffer = gegl_buffer_linear_new (&extent, babl_format ("Y float"));
+  fill_rect (buffer, &roi, 0.5);
+  roi.y+=3;
+  roi.x+=20;
+
+  {
+    gint    rowstride;
+    gfloat *buf;
+    gint    x, y, i;
+
+    buf = (gpointer)gegl_buffer_linear_open (buffer, &extent, &rowstride, NULL);
+    g_assert (buf);
+
+    i=0;
+    for (y=0;y<extent.height;y++)
+      for (x=0;x<extent.width;x++)
+        {
+          buf[i++]= ((x+y)*1.0) / extent.width;
+        }
+    gegl_buffer_linear_close (buffer, buf);
+  }
+  fill_rect (buffer, &roi, 0.2);
+
+  print_buffer (buffer);
+  test_end ();
+  gegl_buffer_destroy (buffer);
+}

Added: trunk/tests/buffer/tests/linear_new.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/linear_new.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,16 @@
+TEST ()
+{
+  GeglBuffer   *buffer;
+  GeglRectangle extent = {0,0,40,20};
+  GeglRectangle roi = {1,1,30,10};
+  test_start();
+  g_print ("foo!\n");
+  buffer = gegl_buffer_linear_new (&extent, babl_format ("Y float"));
+  fill_rect (buffer, &roi, 0.5);
+  roi.y+=3;
+  roi.x+=20;
+  fill_rect (buffer, &roi, 0.2);
+  print_buffer (buffer);
+  test_end ();
+  gegl_buffer_destroy (buffer);
+}

Added: trunk/tests/buffer/tests/linear_proxy_modify.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/linear_proxy_modify.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,33 @@
+TEST ()
+{
+  GeglBuffer   *buffer;
+  GeglRectangle extent = {0,0,40,20};
+  GeglRectangle roi = {1,1,30,10};
+  test_start();
+  buffer = gegl_buffer_new (&extent, babl_format ("Y float"));
+  fill_rect (buffer, &roi, 0.5);
+  roi.y+=3;
+  roi.x+=20;
+
+  {
+    gint    rowstride;
+    gfloat *buf;
+    gint    x, y, i;
+
+    buf = (gpointer)gegl_buffer_linear_open (buffer, &extent, &rowstride, NULL);
+    g_assert (buf);
+
+    i=0;
+    for (y=0;y<extent.height;y++)
+      for (x=0;x<extent.width;x++)
+        {
+          buf[i++]= ((x+y)*1.0) / extent.width;
+        }
+    gegl_buffer_linear_close (buffer, buf);
+  }
+  fill_rect (buffer, &roi, 0.2);
+
+  print_buffer (buffer);
+  test_end ();
+  gegl_buffer_destroy (buffer);
+}

Added: trunk/tests/buffer/tests/sub_rect_fills_and_gets.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/sub_rect_fills_and_gets.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,33 @@
+TEST ()
+{
+  GeglBuffer    *buffer, *sub1, *sub2, *sub3;
+  GeglRectangle  subrect1 = {5, 5, 10, 10};
+  GeglRectangle  subrect2 = {8, 8, 30, 30};
+  GeglRectangle  subrect3 = {-2, -2, 24, 24};
+  GeglRectangle  rect = {0, 0, 20, 20};
+  test_start ();
+  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
+  sub1 = gegl_buffer_create_sub_buffer (buffer, &subrect1);
+  sub2 = gegl_buffer_create_sub_buffer (buffer, &subrect2);
+  sub3 = gegl_buffer_create_sub_buffer (buffer, &subrect3);
+
+  fill (sub1, 0.5);
+  print ("root with sub1 filled in:\n");
+  print_buffer (buffer);
+
+  print ("sub2 before fill:\n");
+  print_buffer (sub2);
+  fill (sub2, 1.0);
+  print ("final root:\n");
+  print_buffer (buffer);
+  print ("final sub1:\n");
+  print_buffer (sub1);
+  print ("final sub3:\n");
+  print_buffer (sub3);
+
+  gegl_buffer_destroy (sub1);
+  gegl_buffer_destroy (sub2);
+  gegl_buffer_destroy (sub3);
+  gegl_buffer_destroy (buffer);
+  test_end ();
+}

Added: trunk/tests/buffer/tests/sub_sub_fill.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/sub_sub_fill.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,20 @@
+TEST ()
+{
+  GeglBuffer    *buffer, *sub, *subsub;
+  GeglRectangle  subrect =    {5, 5, 10, 10};
+  GeglRectangle  subsubrect = {3, 3, 4, 4};
+  GeglRectangle  rect =       {0, 0, 20, 20};
+  test_start ();
+  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
+  sub = gegl_buffer_create_sub_buffer (buffer, &subrect);
+
+  fill (sub, 0.5);
+
+  subsub = gegl_buffer_create_sub_buffer (sub, &subsubrect);
+  fill (subsub, 1.0);
+  print_buffer (buffer);
+  gegl_buffer_destroy (sub);
+  gegl_buffer_destroy (subsub);
+  gegl_buffer_destroy (buffer);
+  test_end ();
+}

Added: trunk/tests/buffer/tests/sub_sub_fill2.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/sub_sub_fill2.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,22 @@
+TEST ()
+{
+  GeglBuffer    *buffer, *sub, *subsub;
+  GeglRectangle  subrect =    {5, 5, 10, 10};
+  GeglRectangle  subsubrect = {3, 3, 4, 4};
+  GeglRectangle  rect =       {0, 0, 20, 20};
+  test_start ();
+  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
+  fill (buffer, 0.8);
+  sub = gegl_buffer_create_sub_buffer (buffer, &subrect);
+
+  fill (sub, 0.5);
+
+  subsub = gegl_buffer_create_sub_buffer (sub, &subsubrect);
+  fill (subsub, 1.0);
+  print_buffer (buffer);
+  print_buffer (subsub);
+  gegl_buffer_destroy (sub);
+  gegl_buffer_destroy (subsub);
+  gegl_buffer_destroy (buffer);
+  test_end ();
+}

Added: trunk/tests/buffer/tests/test_blank.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_blank.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,13 @@
+TEST ()
+{
+  GeglBuffer    *buffer;
+  GeglRectangle  rect = {0, 0, 20, 20};
+
+  test_start ();
+
+  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
+  print_buffer (buffer);
+  gegl_buffer_destroy (buffer);
+
+  test_end ();
+}

Added: trunk/tests/buffer/tests/test_checkerboard.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_checkerboard.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,14 @@
+TEST ()
+{
+  GeglBuffer    *buffer;
+  GeglRectangle  rect = {0, 0, 20, 20};
+
+  test_start ();
+
+  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
+  checkerboard (buffer, 3, 0.0, 1.0);
+  print_buffer (buffer);
+  gegl_buffer_destroy (buffer);
+
+  test_end ();
+}

Added: trunk/tests/buffer/tests/test_gegl_buffer_copy.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_gegl_buffer_copy.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,17 @@
+TEST ()
+{
+  GeglBuffer    *buffer, *buffer2;
+  GeglRectangle  bound = {0, 0, 20, 20};
+  GeglRectangle  source = {2, 2, 5, 5};
+  GeglRectangle  dest = {10, 10, 5, 5};
+  test_start ();
+  buffer = gegl_buffer_new (&bound, babl_format ("Y float"));
+  buffer2 = gegl_buffer_new (&bound, babl_format ("Y float"));
+
+  vgrad (buffer);
+  gegl_buffer_copy (buffer, &source, buffer2, &dest); 
+  print_buffer (buffer2);
+  gegl_buffer_destroy (buffer);
+  gegl_buffer_destroy (buffer2);
+  test_end ();
+}

Added: trunk/tests/buffer/tests/test_gegl_buffer_copy_lower_left.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_gegl_buffer_copy_lower_left.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,22 @@
+TEST ()
+{
+  GeglBuffer    *buffer, *buffer2;
+  GeglRectangle  bound = {0, 0, 20, 20};
+  test_start ();
+  buffer = gegl_buffer_new (&bound, babl_format ("Y float"));
+  vgrad (buffer);
+  {
+    GeglRectangle rect = *gegl_buffer_get_extent(buffer);
+
+    rect.x=0;
+    rect.y=10;
+    rect.width-=10;
+    rect.height-=10;
+  buffer2 = gegl_buffer_new (gegl_buffer_get_extent (buffer), gegl_buffer_get_format (buffer));
+  gegl_buffer_copy (buffer, &rect, buffer2, &rect);
+  }
+  print_buffer (buffer2);
+  gegl_buffer_destroy (buffer);
+  gegl_buffer_destroy (buffer2);
+  test_end ();
+}

Added: trunk/tests/buffer/tests/test_gegl_buffer_copy_lower_right.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_gegl_buffer_copy_lower_right.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,23 @@
+TEST ()
+{
+  GeglBuffer    *buffer, *buffer2;
+  GeglRectangle  bound = {0, 0, 20, 20};
+  test_start ();
+  buffer = gegl_buffer_new (&bound, babl_format ("Y float"));
+  vgrad (buffer);
+  {
+    GeglRectangle rect = *gegl_buffer_get_extent(buffer);
+
+    rect.x=10;
+    rect.y=10;
+    rect.width-=10;
+    rect.height-=10;
+  buffer2 = gegl_buffer_new (gegl_buffer_get_extent (buffer), gegl_buffer_get_format (buffer));
+  gegl_buffer_copy (buffer, &rect, buffer2, &rect);
+  }
+  print_buffer (buffer2);
+  gegl_buffer_destroy (buffer);
+  gegl_buffer_destroy (buffer2);
+  test_end ();
+}
+

Added: trunk/tests/buffer/tests/test_gegl_buffer_copy_self.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_gegl_buffer_copy_self.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,15 @@
+TEST ()
+{
+  GeglBuffer    *buffer;
+  GeglRectangle  source = {2, 2, 2, 2};
+  GeglRectangle  dest  = {15, 15, 1, 1};
+  GeglRectangle  rect = {0, 0, 20, 20};
+  test_start ();
+  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
+
+  vgrad (buffer);
+  gegl_buffer_copy (buffer, &source, buffer, &dest); /* copying to self */
+  print_buffer (buffer);
+  gegl_buffer_destroy (buffer);
+  test_end ();
+}

Added: trunk/tests/buffer/tests/test_gegl_buffer_copy_upper_left.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_gegl_buffer_copy_upper_left.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,20 @@
+TEST ()
+{
+  GeglBuffer    *buffer, *buffer2;
+  GeglRectangle  bound = {0, 0, 20, 20};
+  test_start ();
+  buffer = gegl_buffer_new (&bound, babl_format ("Y float"));
+  vgrad (buffer);
+  {
+    GeglRectangle rect = *gegl_buffer_get_extent(buffer);
+
+    rect.width-=10;
+    rect.height-=10;
+  buffer2 = gegl_buffer_new (gegl_buffer_get_extent (buffer), gegl_buffer_get_format (buffer));
+  gegl_buffer_copy (buffer, &rect, buffer2, &rect);
+  }
+  print_buffer (buffer2);
+  gegl_buffer_destroy (buffer);
+  gegl_buffer_destroy (buffer2);
+  test_end ();
+}

Added: trunk/tests/buffer/tests/test_gegl_buffer_copy_upper_right.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_gegl_buffer_copy_upper_right.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,21 @@
+TEST ()
+{
+  GeglBuffer    *buffer, *buffer2;
+  GeglRectangle  bound = {0, 0, 20, 20};
+  test_start ();
+  buffer = gegl_buffer_new (&bound, babl_format ("Y float"));
+  vgrad (buffer);
+  {
+    GeglRectangle rect = *gegl_buffer_get_extent(buffer);
+
+    rect.x=10;
+    rect.width-=10;
+    rect.height-=10;
+  buffer2 = gegl_buffer_new (gegl_buffer_get_extent (buffer), gegl_buffer_get_format (buffer));
+  gegl_buffer_copy (buffer, &rect, buffer2, &rect);
+  }
+  print_buffer (buffer2);
+  gegl_buffer_destroy (buffer);
+  gegl_buffer_destroy (buffer2);
+  test_end ();
+}

Added: trunk/tests/buffer/tests/test_gegl_buffer_duplicate.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_gegl_buffer_duplicate.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,13 @@
+TEST ()
+{
+  GeglBuffer    *buffer, *buffer2;
+  GeglRectangle  bound = {0, 0, 20, 20};
+  test_start ();
+  buffer = gegl_buffer_new (&bound, babl_format ("Y float"));
+  vgrad (buffer);
+  buffer2 = gegl_buffer_dup (buffer);
+  print_buffer (buffer2);
+  gegl_buffer_destroy (buffer);
+  gegl_buffer_destroy (buffer2);
+  test_end ();
+}

Added: trunk/tests/buffer/tests/test_gegl_buffer_iterator1.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_gegl_buffer_iterator1.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,12 @@
+TEST ()
+{
+  GeglBuffer   *buffer;
+  GeglRectangle extent = {0,0,20,20};
+  GeglRectangle roi = {0,0,20,20};
+  test_start();
+  buffer = gegl_buffer_new (&extent, babl_format ("Y float"));
+  fill_rect (buffer, &roi, 0.5);
+  print_buffer (buffer);
+  gegl_buffer_destroy (buffer);
+  test_end ();
+}

Added: trunk/tests/buffer/tests/test_gegl_buffer_iterator1sub.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_gegl_buffer_iterator1sub.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,17 @@
+TEST ()
+{
+  GeglBuffer   *buffer;
+  GeglBuffer   *sub;
+  GeglRectangle extent = {0,0,20,20};
+  GeglRectangle sextent = {2,2,20,20};
+  GeglRectangle roi = {0,0,20,20};
+  test_start();
+  buffer = gegl_buffer_new (&extent, babl_format ("Y float"));
+  sub = gegl_buffer_create_sub_buffer (buffer, &sextent);
+
+  fill_rect (sub, &roi, 0.5);
+  print_buffer (buffer);
+  test_end ();
+  gegl_buffer_destroy (sub);
+  gegl_buffer_destroy (buffer);
+}

Added: trunk/tests/buffer/tests/test_gegl_buffer_iterator2.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_gegl_buffer_iterator2.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,12 @@
+TEST ()
+{
+  GeglBuffer   *buffer;
+  GeglRectangle extent = {0,0,20,20};
+  GeglRectangle roi = {0,0,10,10};
+  test_start();
+  buffer = gegl_buffer_new (&extent, babl_format ("Y float"));
+  fill_rect (buffer, &roi, 0.5);
+  print_buffer (buffer);
+  test_end ();
+  gegl_buffer_destroy (buffer);
+}

Added: trunk/tests/buffer/tests/test_gegl_buffer_iterator2sub.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_gegl_buffer_iterator2sub.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,16 @@
+TEST ()
+{
+  GeglBuffer   *buffer;
+  GeglBuffer   *sub;
+  GeglRectangle extent = {0,0,20,20};
+  GeglRectangle sextent = {2,2,20,20};
+  GeglRectangle roi = {0,0,10,10};
+  test_start();
+  buffer = gegl_buffer_new (&extent, babl_format ("Y float"));
+  sub = gegl_buffer_create_sub_buffer (buffer, &sextent);
+  fill_rect (sub, &roi, 0.5);
+  print_buffer (buffer);
+  test_end ();
+  gegl_buffer_destroy (sub);
+  gegl_buffer_destroy (buffer);
+}

Added: trunk/tests/buffer/tests/test_gegl_buffer_iterator3.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_gegl_buffer_iterator3.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,12 @@
+TEST ()
+{
+  GeglBuffer   *buffer;
+  GeglRectangle extent = {0,0,20,20};
+  GeglRectangle roi = {5,5,10,10};
+  test_start();
+  buffer = gegl_buffer_new (&extent, babl_format ("Y float"));
+  fill_rect (buffer, &roi, 0.5);
+  print_buffer (buffer);
+  test_end ();
+  gegl_buffer_destroy (buffer);
+}

Added: trunk/tests/buffer/tests/test_gegl_buffer_iterator3sub.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_gegl_buffer_iterator3sub.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,16 @@
+TEST ()
+{
+  GeglBuffer   *buffer;
+  GeglBuffer   *sub;
+  GeglRectangle extent = {0,0,20,20};
+  GeglRectangle sextent = {2,2,20,20};
+  GeglRectangle roi = {5,5,10,10};
+  test_start();
+  buffer = gegl_buffer_new (&extent, babl_format ("Y float"));
+  sub = gegl_buffer_create_sub_buffer (buffer, &sextent);
+  fill_rect (sub, &roi, 0.5);
+  print_buffer (buffer);
+  test_end ();
+  gegl_buffer_destroy (sub);
+  gegl_buffer_destroy (buffer);
+}

Added: trunk/tests/buffer/tests/test_gegl_buffer_iterator4.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_gegl_buffer_iterator4.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,12 @@
+TEST ()
+{
+  GeglBuffer   *buffer;
+  GeglRectangle extent = {0,0,20,20};
+  GeglRectangle roi = {1,1,10,10};
+  test_start();
+  buffer = gegl_buffer_new (&extent, babl_format ("Y float"));
+  fill_rect (buffer, &roi, 0.5);
+  print_buffer (buffer);
+  test_end ();
+  gegl_buffer_destroy (buffer);
+}

Added: trunk/tests/buffer/tests/test_gegl_buffer_iterator4sub.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_gegl_buffer_iterator4sub.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,16 @@
+TEST ()
+{
+  GeglBuffer   *buffer;
+  GeglBuffer   *sub;
+  GeglRectangle extent = {0,0,20,20};
+  GeglRectangle sextent = {2,2,20,20};
+  GeglRectangle roi = {1,1,10,10};
+  test_start();
+  buffer = gegl_buffer_new (&extent, babl_format ("Y float"));
+  sub = gegl_buffer_create_sub_buffer (buffer, &sextent);
+  fill_rect (sub, &roi, 0.5);
+  print_buffer (buffer);
+  test_end ();
+  gegl_buffer_destroy (sub);
+  gegl_buffer_destroy (buffer);
+}

Added: trunk/tests/buffer/tests/test_get_buffer_scaled.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_get_buffer_scaled.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,30 @@
+TEST ()
+{
+  GeglBuffer    *buffer;
+  GeglRectangle  rect = {0, 0, 50, 50};
+  GeglRectangle  getrect = {0, 0, 12, 8};
+  guchar        *buf;
+
+  test_start ();
+
+  buffer = gegl_buffer_new (&rect, babl_format ("Y u8"));
+  checkerboard (buffer, 2, 0.0, 1.0);
+  buf = g_malloc (getrect.width*getrect.height*sizeof(gfloat));
+
+    {
+      gint i;
+
+      for (i=0; i<10; i++)
+        {
+          getrect.x=i;
+          /*getrect.y=i;*/
+          gegl_buffer_get (buffer, 1.2, &getrect, babl_format ("Y u8"), buf, 0);
+          print_linear_buffer_u8 (getrect.width, getrect.height, buf);
+        }
+    }
+
+  gegl_buffer_destroy (buffer);
+
+  g_free (buf);
+  test_end ();
+}

Added: trunk/tests/buffer/tests/test_get_buffer_scaled2.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_get_buffer_scaled2.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,22 @@
+TEST ()
+{
+  GeglBuffer    *buffer;
+  GeglRectangle  rect = {0, 0, 10, 10};
+  GeglRectangle  getrect = {-2, -2, 10, 10};
+  guchar        *buf;
+
+  test_start ();
+
+  buffer = gegl_buffer_new (&rect, babl_format ("Y u8"));
+  checkerboard (buffer, 2, 0.0, 1.0);
+  buf = g_malloc (getrect.width*getrect.height*sizeof(gfloat));
+
+  gegl_buffer_get (buffer, 0.66, &getrect, babl_format ("Y u8"), buf, 0);
+
+
+  print_linear_buffer_u8 (getrect.width, getrect.height, buf);
+  gegl_buffer_destroy (buffer);
+
+  g_free (buf);
+  test_end ();
+}

Added: trunk/tests/buffer/tests/test_gray.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_gray.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,14 @@
+TEST ()
+{
+  GeglBuffer    *buffer;
+  GeglRectangle  rect = {0, 0, 20, 20};
+
+  test_start ();
+
+  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
+  fill (buffer, 0.5);
+  print_buffer (buffer);
+  gegl_buffer_destroy (buffer);
+
+  test_end ();
+}

Added: trunk/tests/buffer/tests/test_rectangle.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_rectangle.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,15 @@
+TEST ()
+{
+  GeglBuffer    *buffer;
+  GeglRectangle  rect = {0, 0, 20, 20};
+
+  test_start ();
+
+  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
+  fill (buffer, 0.5);
+  rectangle (buffer, 5,5, 10, 10, 0.0);
+  print_buffer (buffer);
+  gegl_buffer_destroy (buffer);
+
+  test_end ();
+}

Added: trunk/tests/buffer/tests/test_sample.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/test_sample.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,28 @@
+TEST ()
+{
+  GeglBuffer    *buffer, *sub, *subsub, *subsubsub;
+  GeglRectangle  subrect       = {5, 5, 10, 10};
+  GeglRectangle  subsubrect    = {3, 3, 14, 14};
+  GeglRectangle  subsubsubrect = {5, 3, 2, 2};
+  GeglRectangle  rect =       {0, 0, 20, 20};
+  test_start ();
+  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
+
+  vgrad (buffer);
+
+  sub = gegl_buffer_create_sub_buffer (buffer, &subrect);
+
+  fill (sub, 0.5);
+
+  subsub = gegl_buffer_create_sub_buffer (sub, &subsubrect);
+  fill (subsub, 1.0);
+  subsubsub = gegl_buffer_create_sub_buffer (buffer, &subsubsubrect);
+  fill (subsubsub, 1.0);
+
+  print_buffer (buffer);
+  gegl_buffer_destroy (sub);
+  gegl_buffer_destroy (subsub);
+  gegl_buffer_destroy (subsubsub);
+  gegl_buffer_destroy (buffer);
+  test_end ();
+}

Added: trunk/tests/buffer/tests/vertical_gradient.c
==============================================================================
--- (empty file)
+++ trunk/tests/buffer/tests/vertical_gradient.c	Tue Jun 17 21:32:26 2008
@@ -0,0 +1,12 @@
+TEST ()
+{
+  GeglBuffer    *buffer;
+  GeglRectangle  rect = {0, 0, 20, 20};
+
+  test_start();
+  buffer = gegl_buffer_new (&rect, babl_format ("Y float"));
+  vgrad (buffer);
+  print_buffer (buffer);
+  gegl_buffer_destroy (buffer);
+  test_end();
+}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]