From 5c492f98e28fd94a4e67391a836df92dee60e42f Mon Sep 17 00:00:00 2001
From: Mattias Andrée <maandree@operamail.com>
Date: Sat, 13 Sep 2014 12:37:19 +0200
Subject: m + doc
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Mattias Andrée <maandree@operamail.com>
---
 src/test/test.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++----------
 1 file changed, 57 insertions(+), 12 deletions(-)

diff --git a/src/test/test.c b/src/test/test.c
index 0bdadf9..161835b 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -30,6 +30,14 @@
 
 
 
+/**
+ * Let the user select adjustment method, site, partition and CRTC.
+ * 
+ * @param   site_state  Output slot for the site.
+ * @param   part_state  Output slot for the partition.
+ * @param   crtc_state  Output slot for the CRTC.
+ * @return              Zero on and only on success.
+ */
 static int select_monitor(libgamma_site_state_t* restrict site_state,
 			  libgamma_partition_state_t* restrict part_state,
 			  libgamma_crtc_state_t* restrict crtc_state)
@@ -40,6 +48,10 @@ static int select_monitor(libgamma_site_state_t* restrict site_state,
   char buf[256];
   int r;
   
+  
+  /* -- Adjustment method -- */
+  
+  /* Let the user select adjustment method. */
   printf("Select adjustment method:\n");
   for (method = 0; method < LIBGAMMA_METHOD_COUNT; method++)
     printf("    %i:  %s\n", method, method_name(method));
@@ -48,6 +60,10 @@ static int select_monitor(libgamma_site_state_t* restrict site_state,
   fgets(buf, sizeof(buf) / sizeof(char), stdin);
   method = atoi(buf);
   
+  
+  /* -- Site -- */
+  
+  /* Let the user select site. */
   printf("Select site: ");
   fflush(stdout);
   fgets(buf, sizeof(buf) / sizeof(char), stdin);
@@ -62,28 +78,39 @@ static int select_monitor(libgamma_site_state_t* restrict site_state,
       memcpy(site, buf, strlen(buf) + 1);
     }
   
+  /* Initialise site state. */
   if ((r = libgamma_site_initialise(site_state, method, site)))
     {
       free(site);
       return libgamma_perror("error", r), 1;
     }
   
+  
+  /* -- Partition -- */
+  
+  /* Check that the site has at least one partition. */
   if (site_state->partitions_available == 0)
     {
       libgamma_site_free(site_state);
       return printf("No partitions found\n"), 1;
     }
   
+  /* Let the user select partition. */
   printf("Select partition [0, %lu]: ", site_state->partitions_available - 1);
   fflush(stdout);
   fgets(buf, sizeof(buf) / sizeof(char), stdin);
   
+  /* Initialise partition state. */
   if ((r = libgamma_partition_initialise(part_state, site_state, (size_t)atoll(buf))))
     {
       libgamma_site_free(site_state);
       return libgamma_perror("error", r), 1;
     }
   
+  
+  /* -- CRTC -- */
+  
+  /* Check that the partition has at least one CRTC. */
   if (part_state->crtcs_available == 0)
     {
       libgamma_partition_free(part_state);
@@ -91,10 +118,12 @@ static int select_monitor(libgamma_site_state_t* restrict site_state,
       return printf("No CRTC:s found\n"), 1;
     }
   
+  /* Let the user select CRTC. */
   printf("Select CRTC [0, %lu]: ", part_state->crtcs_available - 1);
   fflush(stdout);
   fgets(buf, sizeof(buf) / sizeof(char), stdin);
   
+  /* Initialise CRTC state. */
   if ((r = libgamma_crtc_initialise(crtc_state, part_state, (size_t)atoll(buf))))
     {
       libgamma_partition_free(part_state);
@@ -107,6 +136,12 @@ static int select_monitor(libgamma_site_state_t* restrict site_state,
 }
 
 
+/**
+ * Test `libgamma`
+ * 
+ * @return  Non-zero on machine detectable error, it library may still
+ *          be faulty if zero is returned.
+ */
 int main(void)
 {
   /* ramps16 is last because we want to make sure that the gamma ramps are
@@ -114,7 +149,7 @@ int main(void)
 #define LIST_INTEGER_RAMPS  X(ramps8) X(ramps32) X(ramps64) X(ramps16)
 #define LIST_FLOAT_RAMPS  X(rampsf) X(rampsd)
 #define LIST_RAMPS  LIST_FLOAT_RAMPS LIST_INTEGER_RAMPS
-
+  
   libgamma_site_state_t* restrict site_state = malloc(sizeof(libgamma_site_state_t));
   libgamma_partition_state_t* restrict part_state = malloc(sizeof(libgamma_partition_state_t));
   libgamma_crtc_state_t* restrict crtc_state = malloc(sizeof(libgamma_crtc_state_t));
@@ -124,21 +159,26 @@ int main(void)
   LIST_RAMPS
 #undef X
   size_t i, n;
-  int r;
+  int r, rr = 0;
   
+  /* Test miscellaneous parts of the library. */
   list_methods_lists();
   method_availability();
   list_default_sites();
   method_capabilities();
   error_test();
   
+  /* Select monitor for tests over CRTC:s, partitions and sites. */
   if (select_monitor(site_state, part_state, crtc_state))
     return 1;
   
+  /* Test CRTC information functions. */
   crtc_information(crtc_state);
   
+  /* Get the sizes of the gamma ramps for the selected CRTC. */
   libgamma_get_crtc_information(&info, crtc_state, LIBGAMMA_CRTC_INFO_GAMMA_SIZE);
   
+  /* Create gamma ramps for each bit-depth. */
 #define X(R)					\
   old_##R.red_size = info.red_gamma_size;	\
   old_##R.green_size = info.green_gamma_size;	\
@@ -149,9 +189,10 @@ int main(void)
   LIST_RAMPS
 #undef X
   
+  /* Fill gamma ramps, for each bit-depth, with the CRTC:s current ramps. */
 #define X(R)							\
   libgamma_crtc_get_gamma_##R(crtc_state, &old_##R);		\
-  if ((r = libgamma_crtc_get_gamma_##R(crtc_state, &R)))	\
+  if ((rr |= r = libgamma_crtc_get_gamma_##R(crtc_state, &R)))	\
     {								\
       libgamma_perror("libgamma_crtc_get_gamma_" #R, r);	\
       goto done;						\
@@ -159,10 +200,13 @@ int main(void)
   LIST_RAMPS
 #undef X
   
+  /* Test getting and setting gamma ramps. */
 #define X(R)								\
+  /* Get the grand size of the gamma ramps. */				\
   n = R.red_size;							\
   n = n > R.green_size ? n : R.green_size;				\
   n = n > R.blue_size ? n : R.blue_size;				\
+  /* Print the current gamma ramps. */					\
   printf("Current gamma ramps (" #R "):\n");				\
   for (i = 0; i < n; i++)						\
     {									\
@@ -172,17 +216,18 @@ int main(void)
       printf("\n");							\
     }									\
   printf("\n");								\
-									\
+  /* Adjust the gamma ramps for dimming the monitor. */			\
   for (i = 0; i < R.red_size + R.green_size + R.blue_size; i++)		\
     R.red[i] /= 2;							\
-									\
+  /* Dim the monitor for one second and the restore it. */		\
   printf("Dimming monitor for 1 second...\n");				\
-  if ((r = libgamma_crtc_set_gamma_##R(crtc_state, R)))			\
+  if ((rr |= r = libgamma_crtc_set_gamma_##R(crtc_state, R)))		\
     libgamma_perror("libgamma_crtc_set_gamma_" #R, r);			\
   sleep(1);								\
-  if ((r = libgamma_crtc_set_gamma_##R(crtc_state, old_##R)))		\
+  if ((rr |= r = libgamma_crtc_set_gamma_##R(crtc_state, old_##R)))	\
     libgamma_perror("libgamma_crtc_set_gamma_" #R, r);			\
   printf("Done!\n");							\
+  /* Sleep for one second, we have more bit-depths to test. */		\
   printf("Sleeping for 1 second...\n");					\
   sleep(1);
 #define Y(R, C)  printf("  \033[32m%1.8lf\033[00m", (double)(R.C[i]))
@@ -193,20 +238,20 @@ int main(void)
 #undef Y
 #undef X
   
+  /* TODO Test gamma ramp restore functions. */
+  /* TODO Test _f gamma ramp setters. */
+  
  done:
+  /* Release resouces. */
 #define X(R)					\
   libgamma_gamma_##R##_destroy(&R);		\
   libgamma_gamma_##R##_destroy(&old_##R);
   LIST_RAMPS
 #undef X
-  
-  /* TODO Test gamma ramp restore functions. */
-  /* TODO Test _f gamma ramp setters. */
-  
   libgamma_crtc_free(crtc_state);
   libgamma_partition_free(part_state);
   libgamma_site_free(site_state);
-  return r;
+  return rr;
   
 #undef LIST_FLOAT_RAMPS
 #undef LIST_INTEGER_RAMPS
-- 
cgit v1.2.3-70-g09d2