diff --git a/test/test-automation/tests/testclipboard/testclipboard.c b/test/test-automation/tests/testclipboard/testclipboard.c
index 453844560f63aa53e4c51d97cc75b30783f9e3cd..6fd272b33238b982e495eebc0be114b2999f110a 100644
--- a/test/test-automation/tests/testclipboard/testclipboard.c
+++ b/test/test-automation/tests/testclipboard/testclipboard.c
@@ -5,7 +5,6 @@
 #include "../../include/SDL_test.h"
 
 
-
 /*!
  * Note: Add test for clipboard here
  *
@@ -13,22 +12,157 @@
 
 /* Test cases */
 static const TestCaseReference test1 =
-		(TestCaseReference){ "clipboard_test", "description", TEST_DISABLED, 0, 0 };
+		(TestCaseReference){ "clipboard_testHasClipboardText", "Check call to SDL_HasClipboardText", TEST_ENABLED, 0, 0 };
+
+static const TestCaseReference test2 =
+		(TestCaseReference){ "clipboard_testGetClipboardText", "Check call to SDL_GetClipboardText", TEST_ENABLED, 0, 0 };
+
+static const TestCaseReference test3 =
+		(TestCaseReference){ "clipboard_testSetClipboardText", "Check call to SDL_SetClipboardText", TEST_ENABLED, 0, 0 };
+
+static const TestCaseReference test4 =
+		(TestCaseReference){ "clipboard_testClipboardTextFunctions", "End-to-end test of SDL_xyzClipboardText functions", TEST_ENABLED, 0, 0 };
 
 /* Test suite */
 extern const TestCaseReference *testSuite[] =  {
-	&test1, NULL
+	&test1, &test2, &test3, &test4, NULL
 };
 
 TestCaseReference **QueryTestSuite() {
 	return (TestCaseReference **)testSuite;
 }
 
+void
+SetUp(void *arg)
+{
+  /* Start SDL video */
+  int ret = SDL_InitSubSystem( SDL_INIT_VIDEO );
+  AssertTrue(ret==0, "SDL_Init(SDL_INIT_VIDEO) failed: %s", SDL_GetError());
+}
+                        
+void
+TearDown(void *arg)
+{
+  /* Quit SDL video */
+ SDL_QuitSubSystem(SDL_INIT_VIDEO);
+}
+
 /**
- * @brief Document test case here
+ * \brief Check call to SDL_HasClipboardText
+ *
+ * \sa 
+ * http://wiki.libsdl.org/moin.cgi/SDL_HasClipboardText
  */
 int
-clipboard_test(void *arg)
+clipboard_testHasClipboardText(void *arg)
 {
-	AssertPass("");
+	SDL_bool result;
+	result = SDL_HasClipboardText();
+	AssertPass("Call to SDL_HasClipboardText succeeded");
+}
+
+/**
+ * \brief Check call to SDL_GetClipboardText
+ *
+ * \sa 
+ * http://wiki.libsdl.org/moin.cgi/SDL_GetClipboardText
+ */
+int
+clipboard_testGetClipboardText(void *arg)
+{
+	char *result;
+	result = SDL_GetClipboardText();
+	AssertPass("Call to SDL_GetClipboardText succeeded");
+}
+
+/**
+ * \brief Check call to SDL_SetClipboardText
+ * \sa 
+ * http://wiki.libsdl.org/moin.cgi/SDL_SetClipboardText
+ */
+int
+clipboard_testSetClipboardText(void *arg)
+{
+	char *textRef = RandomAsciiString();
+	char *text = strdup(textRef);
+	int result;
+	result = SDL_SetClipboardText((const char *)text);	
+	AssertTrue(
+		result == 0, 
+		"Call to SDL_SetClipboardText failed with error %i: %s",
+		result, SDL_GetError());
+	AssertTrue(
+		strcmp(textRef, text) == 0, 
+		"SDL_SetClipboardText modified input string: expected %s, got %s",
+		textRef, text);
+		
+        /* Cleanup */
+        if (textRef) free(textRef);
+        if (text) free(text);
+}
+
+
+/**
+ * \brief End-to-end test of SDL_xyzClipboardText functions
+ * \sa 
+ * http://wiki.libsdl.org/moin.cgi/SDL_HasClipboardText
+ * http://wiki.libsdl.org/moin.cgi/SDL_GetClipboardText
+ * http://wiki.libsdl.org/moin.cgi/SDL_SetClipboardText
+ */
+int
+clipboard_testClipboardTextFunctions(void *arg)
+{
+	char *textRef = RandomAsciiString();
+	char *text = strdup(textRef);
+	SDL_bool boolResult;
+	int intResult;
+	char *charResult;
+	
+	/* Clear clipboard text state */
+	boolResult = SDL_HasClipboardText();
+	if (boolResult == SDL_TRUE) {
+             intResult = SDL_SetClipboardText((const char *)NULL);
+	     AssertTrue(
+		intResult == 0, 
+		"Call to SDL_SetClipboardText("") failed with error %i: %s",
+		intResult, SDL_GetError());
+	     charResult = SDL_GetClipboardText();
+	     boolResult = SDL_HasClipboardText();
+	     AssertTrue(
+                boolResult == SDL_FALSE,
+	        "SDL_HasClipboardText returned TRUE, expected FALSE");        
+        }
+        
+        /* Empty clipboard  */        
+	charResult = SDL_GetClipboardText();
+	AssertTrue(
+		charResult != NULL,
+		"SDL_GetClipboardText returned NULL");		
+	AssertTrue(
+		strlen(charResult) == 0,
+		"SDL_GetClipboardText returned string with length >0: got length %i",
+		strlen(charResult));
+        intResult = SDL_SetClipboardText((const char *)text);	
+	AssertTrue(
+		intResult == 0, 
+		"Call to SDL_SetClipboardText failed with error %i: %s",
+		intResult, SDL_GetError());
+	AssertTrue(
+		strcmp(textRef, text) == 0, 
+		"SDL_SetClipboardText modified input string: expected %s, got %s",
+		textRef, text);
+	boolResult = SDL_HasClipboardText();
+	AssertTrue(
+             boolResult == SDL_TRUE,
+	     "SDL_HasClipboardText returned FALSE, expected TRUE");        
+	charResult = SDL_GetClipboardText();
+	AssertTrue(
+		strcmp(textRef, charResult) == 0, 
+		"SDL_GetClipboardText did not return correst string: expected %s, got %s",
+		textRef, charResult);
+
+        /* Cleanup */
+        if (textRef) free(textRef);
+        if (text) free(text);
+        if (charResult) free(charResult);
 }