Ejemplo n.º 1
0
TEST(GetExtentsAlongAxis, Box)
{
	Box box(Vector3(1,2,3));
	float a, b;

	box.GetExtentsAlongAxis(Vector4(1,0,0,0), a, b);
	FLOATS_EQUAL(-1, a);
	FLOATS_EQUAL(1, b);

	box.SetOrientation(Quaternion(M_PI_2, Vector3(0,0,1)));
	box.GetExtentsAlongAxis(Vector4(1,0,0,0), a, b);
	FLOATS_EQUAL(-2, a);
	FLOATS_EQUAL(2, b);

	box.SetOrientation(Quaternion::IDENTITY);
	box.GetExtentsAlongAxis(Vector4(1,0,0,3), a, b);
	FLOATS_EQUAL(2, a);
	FLOATS_EQUAL(4, b);

	box.GetExtentsAlongAxis(Vector4(sqrtf(0.5f),sqrtf(0.5f),0,0), a, b);
	FLOATS_EQUAL(-3*sqrtf(0.5f), a);
	FLOATS_EQUAL(3*sqrtf(0.5f), b);
}
static gboolean
test_change_processor_rect_do_test (GeglProcessor       *processor,
                                    const GeglRectangle *rect,
                                    GeglNode            *sink)
{
  gint        i                         = 0;
  gboolean    result                    = TRUE;
  float       expected_result_buffer[4] = { 1.0, 1.0, 1.0, 1.0 };
  float       result_buffer[4]          = { 0, };
  GeglBuffer *buffer                    = NULL;

  gegl_node_set (sink,
                 "buffer", &buffer,
                 NULL);
  
  gegl_processor_set_rectangle (processor, rect);

  while (gegl_processor_work (processor, NULL));

  gegl_buffer_get (buffer,
                   rect,
                   1.0,
                   babl_format ("RGBA float"),
                   result_buffer,
                   GEGL_AUTO_ROWSTRIDE,
                   GEGL_ABYSS_NONE);

  /* Compare with a small epsilon to account for accumulated error */
  for(i = 0; i < G_N_ELEMENTS (expected_result_buffer); i++)
    result = result && FLOATS_EQUAL (expected_result_buffer[i], result_buffer[i]);

  gegl_node_set (sink,
                 "buffer", NULL,
                 NULL);

  g_object_unref (buffer);

  return result;
}