Add tests to Video suite
authorAndreas Schiffler <aschiffler@ferzkopp.net>
Sat, 16 Feb 2013 23:09:10 -0800
changeset 6891 177f29ae5279
parent 6890 d87e515b5157
child 6892 bb72759b42a2
Add tests to Video suite
test/testautomation_video.c
--- a/test/testautomation_video.c	Fri Feb 15 15:22:12 2013 -0800
+++ b/test/testautomation_video.c	Sat Feb 16 23:09:10 2013 -0800
@@ -61,15 +61,279 @@
 	return TEST_COMPLETED;
 }
 
+/**
+ * @brief Tests the functionality of the SDL_CreateWindow function using different positions
+ */
+int
+video_createWindowVariousPositions(void *arg)
+{
+  SDL_Window* window;
+  const char* title = "video_createWindowVariousPositions Test Window";
+  int x, y, w, h;
+  int xVariation, yVariation;
+  
+  for (xVariation = 0; xVariation < 6; xVariation++) {
+   for (yVariation = 0; yVariation < 6; yVariation++) {
+    switch(xVariation) {
+     case 0:
+      /* Zero X Position */  
+      x = 0;
+      break;
+     case 1:
+      /* Random X position inside screen */  
+      x = SDLTest_RandomIntegerInRange(1, 100);
+      break;
+     case 2:
+      /* Random X position outside screen (positive) */  
+      x = SDLTest_RandomIntegerInRange(10000, 11000);
+      break;
+     case 3:
+      /* Random X position outside screen (negative) */  
+      x = SDLTest_RandomIntegerInRange(-1000, -100);
+      break;
+     case 4:
+      /* Centered X position */  
+      x = SDL_WINDOWPOS_CENTERED;
+      break;
+     case 5:
+      /* Undefined X position */  
+      x = SDL_WINDOWPOS_UNDEFINED;
+      break;
+    }
+
+    switch(yVariation) {
+     case 0:
+      /* Zero X Position */  
+      y = 0;
+      break;
+     case 1:
+      /* Random X position inside screen */  
+      y = SDLTest_RandomIntegerInRange(1, 100);
+      break;
+     case 2:
+      /* Random X position outside screen (positive) */  
+      y = SDLTest_RandomIntegerInRange(10000, 11000);
+      break;
+     case 3:
+      /* Random Y position outside screen (negative) */  
+      y = SDLTest_RandomIntegerInRange(-1000, -100);
+      break;
+     case 4:
+      /* Centered Y position */  
+      y = SDL_WINDOWPOS_CENTERED;
+      break;
+     case 5:
+      /* Undefined Y position */  
+      y = SDL_WINDOWPOS_UNDEFINED;
+      break;
+    }
+     
+    w = SDLTest_RandomIntegerInRange(32, 96);
+    h = SDLTest_RandomIntegerInRange(32, 96);
+    window = SDL_CreateWindow(title, x, y, w, h, SDL_WINDOW_SHOWN);
+    SDLTest_AssertPass("Call to SDL_CreateWindow('Title',%d,%d,%d,%d,SHOWN)", x, y, w, h);
+    SDLTest_AssertCheck(window != NULL, "Validate that returned window struct is not NULL");
+    if (window != NULL) {
+      SDL_DestroyWindow(window);
+      SDLTest_AssertPass("Call to SDL_DestroyWindow");
+    }
+   }
+  } 
+
+  return TEST_COMPLETED;
+}
+
+/**
+ * @brief Tests the functionality of the SDL_CreateWindow function using different sizes
+ */
+int
+video_createWindowVariousSizes(void *arg)
+{
+  SDL_Window* window;
+  const char* title = "video_createWindowVariousSizes Test Window";
+  int x, y, w, h;
+  int wVariation, hVariation;
+  
+  x = SDLTest_RandomIntegerInRange(1, 100);
+  y = SDLTest_RandomIntegerInRange(1, 100);
+  for (wVariation = 0; wVariation < 3; wVariation++) {
+   for (hVariation = 0; hVariation < 3; hVariation++) {
+    switch(wVariation) {
+     case 0:
+      /* Width of 1 */  
+      w = 1;
+      break;
+     case 1:
+      /* Random "normal" width */  
+      w = SDLTest_RandomIntegerInRange(320, 1920);
+      break;
+     case 2:
+      /* Random "large" width */  
+      w = SDLTest_RandomIntegerInRange(2048, 4095);
+      break;
+    }
+
+    switch(hVariation) {
+     case 0:
+      /* Height of 1 */  
+      h = 1;
+      break;
+     case 1:
+      /* Random "normal" height */  
+      h = SDLTest_RandomIntegerInRange(320, 1080);
+      break;
+     case 2:
+      /* Random "large" height */  
+      h = SDLTest_RandomIntegerInRange(2048, 4095);
+      break;
+     }
+     
+    window = SDL_CreateWindow(title, x, y, w, h, SDL_WINDOW_SHOWN);
+    SDLTest_AssertPass("Call to SDL_CreateWindow('Title',%d,%d,%d,%d,SHOWN)", x, y, w, h);
+    SDLTest_AssertCheck(window != NULL, "Validate that returned window struct is not NULL");
+    if (window != NULL) {
+      SDL_DestroyWindow(window);
+      SDLTest_AssertPass("Call to SDL_DestroyWindow");
+    }
+   }
+  }  
+
+  return TEST_COMPLETED;
+}
+
+/**
+ * @brief Tests the functionality of the SDL_CreateWindow function using different flags
+ */
+int
+video_createWindowVariousFlags(void *arg)
+{
+  SDL_Window* window;
+  const char* title = "video_createWindowVariousFlags Test Window";
+  int x, y, w, h;
+  int fVariation;
+  SDL_WindowFlags flags;
+  
+  /* Standard window */
+  x = SDLTest_RandomIntegerInRange(1, 100);
+  y = SDLTest_RandomIntegerInRange(1, 100);
+  w = SDLTest_RandomIntegerInRange(320, 1024);
+  h = SDLTest_RandomIntegerInRange(320, 768);
+
+  for (fVariation = 0; fVariation < 13; fVariation++) {
+    switch(fVariation) {
+     case 0:
+      flags = SDL_WINDOW_FULLSCREEN;
+      /* Skip - blanks screen; comment out next line to run test */
+      continue;   
+      break;
+     case 1:
+      flags = SDL_WINDOW_FULLSCREEN_DESKTOP;
+      /* Skip - blanks screen; comment out next line to run test */
+      continue;  
+      break;
+     case 2:
+      flags = SDL_WINDOW_OPENGL;
+      break;  
+     case 3:
+      flags = SDL_WINDOW_SHOWN;
+      break;   
+     case 4:    
+      flags = SDL_WINDOW_HIDDEN;
+      break;     
+     case 5:
+      flags = SDL_WINDOW_BORDERLESS;
+      break;       
+     case 6:
+      flags = SDL_WINDOW_RESIZABLE;
+      break;         
+     case 7:
+      flags = SDL_WINDOW_MINIMIZED;
+      break;           
+     case 8:
+      flags = SDL_WINDOW_MAXIMIZED;
+      break;
+     case 9: 
+      flags = SDL_WINDOW_INPUT_GRABBED;
+      break;
+     case 10:              
+      flags = SDL_WINDOW_INPUT_FOCUS;
+      break;                 
+     case 11:                      
+      flags = SDL_WINDOW_MOUSE_FOCUS;
+      break;
+     case 12: 
+      flags = SDL_WINDOW_FOREIGN;
+      break;
+    }
+       
+    window = SDL_CreateWindow(title, x, y, w, h, flags);
+    SDLTest_AssertPass("Call to SDL_CreateWindow('Title',%d,%d,%d,%d,%d)", x, y, w, h, flags);
+    SDLTest_AssertCheck(window != NULL, "Validate that returned window struct is not NULL");
+    if (window != NULL) {
+      SDL_DestroyWindow(window);
+      SDLTest_AssertPass("Call to SDL_DestroyWindow");
+    }   
+  }
+
+  return TEST_COMPLETED;
+}
+
+/**
+ * @brief Tests the functionality of the SDL_GetWindowFlags function
+ */
+int
+video_getWindowFlags(void *arg)
+{
+  SDL_Window* window;
+  const char* title = "video_getWindowFlags Test Window";
+  int x, y, w, h;
+  SDL_WindowFlags flags;
+  Uint32 actualFlags;
+  
+  /* Standard window */
+  x = SDLTest_RandomIntegerInRange(1, 100);
+  y = SDLTest_RandomIntegerInRange(1, 100);
+  w = SDLTest_RandomIntegerInRange(320, 1024);
+  h = SDLTest_RandomIntegerInRange(320, 768);
+  
+  /* Reliable flag */
+  flags = SDL_WINDOW_SHOWN;
+  
+  window = SDL_CreateWindow(title, x, y, w, h, flags);
+  SDLTest_AssertPass("Call to SDL_CreateWindow('Title',%d,%d,%d,%d,%d)", x, y, w, h, flags);
+  SDLTest_AssertCheck(window != NULL, "Validate that returned window struct is not NULL");
+  if (window != NULL) {
+      actualFlags = SDL_GetWindowFlags(window);
+      SDLTest_AssertPass("Call to SDL_GetWindowFlags");
+      SDLTest_AssertCheck((flags & actualFlags) == flags, "Verify returned value has flags %d set, got: %d", flags, actualFlags);
+      SDL_DestroyWindow(window);
+      SDLTest_AssertPass("Call to SDL_DestroyWindow");  
+  }
+
+  return TEST_COMPLETED;
+}
+
 /* ================= Test References ================== */
 
 /* Video test cases */
 static const SDLTest_TestCaseReference videoTest1 =
 		{ (SDLTest_TestCaseFp)video_enableDisableScreensaver, "video_enableDisableScreensaver",  "Enable and disable screenaver while checking state", TEST_ENABLED };
 
+static const SDLTest_TestCaseReference videoTest2 =
+		{ (SDLTest_TestCaseFp)video_createWindowVariousPositions, "video_createWindowVariousPositions",  "Create windows at various locations", TEST_ENABLED };
+
+static const SDLTest_TestCaseReference videoTest3 =
+		{ (SDLTest_TestCaseFp)video_createWindowVariousSizes, "video_createWindowVariousSizes",  "Create windows with various sizes", TEST_ENABLED };
+
+static const SDLTest_TestCaseReference videoTest4 =
+		{ (SDLTest_TestCaseFp)video_createWindowVariousFlags, "video_createWindowVariousFlags",  "Create windows using various flags", TEST_ENABLED };
+
+static const SDLTest_TestCaseReference videoTest5 =
+		{ (SDLTest_TestCaseFp)video_getWindowFlags, "video_getWindowFlags",  "Set and get window flags", TEST_ENABLED };
+
 /* Sequence of Video test cases */
 static const SDLTest_TestCaseReference *videoTests[] =  {
-	&videoTest1, NULL
+	&videoTest1, &videoTest2, &videoTest3, &videoTest4, &videoTest5, NULL
 };
 
 /* Video test suite (global) */