Author: hbelusca
Date: Tue Oct 18 17:44:23 2016
New Revision: 72985

URL: http://svn.reactos.org/svn/reactos?rev=72985&view=rev
Log:
[KERNEL32_APITEST]: SetConsoleWindowInfo test:
- Improve the checks done for the tests;
- Add a new test (Test7) that tests the allowed console window sizes wrt. the 
csbi.dwMaximumWindowSize size.

Modified:
    trunk/rostests/apitests/kernel32/SetConsoleWindowInfo.c

Modified: trunk/rostests/apitests/kernel32/SetConsoleWindowInfo.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/kernel32/SetConsoleWindowInfo.c?rev=72985&r1=72984&r2=72985&view=diff
==============================================================================
--- trunk/rostests/apitests/kernel32/SetConsoleWindowInfo.c     [iso-8859-1] 
(original)
+++ trunk/rostests/apitests/kernel32/SetConsoleWindowInfo.c     [iso-8859-1] 
Tue Oct 18 17:44:23 2016
@@ -166,14 +166,19 @@
     ok(Success, "Getting SB info\n");
     if (Success)
     {
-        ok(csbi2.srWindow.Left == 0, "srWindow.Left = %d, expected 0\n", 
csbi2.srWindow.Left);
-        ok(csbi2.srWindow.Top == 0, "srWindow.Top = %d, expected 0\n", 
csbi2.srWindow.Top);
-
-        /* NOTE that here we compare against the old csbi data! */
-        ok(csbi2.srWindow.Right == csbi.dwSize.X - 2, "srWindow.Right = %d, 
expected %d\n",
-           csbi2.srWindow.Right,   csbi.dwSize.X - 2);
-        ok(csbi2.srWindow.Bottom == csbi.dwSize.Y - 2, "srWindow.Bottom = %d, 
expected %d\n",
-           csbi2.srWindow.Bottom,   csbi.dwSize.Y - 2);
+        ConRect.Right -= ConRect.Left;
+        ConRect.Left = 0;
+        ConRect.Bottom -= ConRect.Top;
+        ConRect.Top = 0;
+
+        ok(csbi2.srWindow.Left == ConRect.Left, "srWindow.Left = %d, expected 
%d\n",
+           csbi2.srWindow.Left, ConRect.Left);
+        ok(csbi2.srWindow.Top == ConRect.Top, "srWindow.Top = %d, expected 
%d\n",
+           csbi2.srWindow.Top, ConRect.Top);
+        ok(csbi2.srWindow.Right == ConRect.Right, "srWindow.Right = %d, 
expected %d\n",
+           csbi2.srWindow.Right, ConRect.Right);
+        ok(csbi2.srWindow.Bottom == ConRect.Bottom, "srWindow.Bottom = %d, 
expected %d\n",
+           csbi2.srWindow.Bottom, ConRect.Bottom);
     }
 
     /* Test 3: Similar to Test 2, but set the Right/Bottom members too large
@@ -195,13 +200,13 @@
     if (Success)
     {
         /* NOTE that here we compare against the old csbi data! */
-        ok(csbi2.srWindow.Left == 0, "srWindow(2).Left = %d, expected equal to 
%d\n",
+        ok(csbi2.srWindow.Left == 0, "srWindow.Left = %d, expected %d\n",
            csbi2.srWindow.Left, 0);
-        ok(csbi2.srWindow.Top == 0, "srWindow(2).Top = %d, expected equal to 
%d\n",
+        ok(csbi2.srWindow.Top == 0, "srWindow.Top = %d, expected %d\n",
            csbi2.srWindow.Top, 0);
-        ok(csbi2.srWindow.Right == csbi.dwSize.X - 2, "srWindow(2).Right = %d, 
expected equal to %d\n",
+        ok(csbi2.srWindow.Right == csbi.dwSize.X - 2, "srWindow.Right = %d, 
expected %d\n",
            csbi2.srWindow.Right, csbi.dwSize.X - 2);
-        ok(csbi2.srWindow.Bottom == csbi.dwSize.Y - 2, "srWindow(2).Bottom = 
%d, expected equal to %d\n",
+        ok(csbi2.srWindow.Bottom == csbi.dwSize.Y - 2, "srWindow.Bottom = %d, 
expected %d\n",
            csbi2.srWindow.Bottom, csbi.dwSize.Y - 2);
     }
 
@@ -224,14 +229,16 @@
     ok(Success, "Getting SB info\n");
     if (Success)
     {
-        ok(csbi2.srWindow.Left == 0, "srWindow.Left = %d, expected 0\n", 
csbi2.srWindow.Left);
-        ok(csbi2.srWindow.Top == 0, "srWindow.Top = %d, expected 0\n", 
csbi2.srWindow.Top);
+        ok(csbi2.srWindow.Left == 0, "srWindow.Left = %d, expected %d\n",
+           csbi2.srWindow.Left, 0);
+        ok(csbi2.srWindow.Top == 0, "srWindow.Top = %d, expected %d\n",
+           csbi2.srWindow.Top, 0);
 
         /* NOTE that here we compare against the old csbi data! */
         ok(csbi2.srWindow.Right == csbi.dwSize.X - 2, "srWindow.Right = %d, 
expected %d\n",
-           csbi2.srWindow.Right,   csbi.dwSize.X - 2);
+           csbi2.srWindow.Right, csbi.dwSize.X - 2);
         ok(csbi2.srWindow.Bottom == csbi.dwSize.Y - 2, "srWindow.Bottom = %d, 
expected %d\n",
-           csbi2.srWindow.Bottom,   csbi.dwSize.Y - 2);
+           csbi2.srWindow.Bottom, csbi.dwSize.Y - 2);
     }
 
     /* Test 5: Set Right/Bottom members strictly smaller than Left/Top members
@@ -248,7 +255,7 @@
        ERROR_INVALID_PARAMETER, dwLastError);
 
     /* Test 6: Set Left/Top members equal to the Right/Bottom members 
respectively
-    * (succeeds, disagrees with MSDN) */
+     * (succeeds, disagrees with MSDN) */
     ConRect.Left = ConRect.Right  = 2;
     ConRect.Top  = ConRect.Bottom = 5;
     SetLastError(0xdeadbeef);
@@ -262,11 +269,82 @@
     ok(Success, "Getting SB info\n");
     if (Success)
     {
-        ok(csbi2.srWindow.Left == 2, "srWindow.Left = %d, expected 2\n", 
csbi2.srWindow.Left);
-        ok(csbi2.srWindow.Right == 2, "srWindow.Right = %d, expected 2\n", 
csbi2.srWindow.Right);
-
-        ok(csbi2.srWindow.Top == 5, "srWindow.Top = %d, expected 5\n", 
csbi2.srWindow.Top);
-        ok(csbi2.srWindow.Bottom == 5, "srWindow.Bottom = %d, expected 5\n", 
csbi2.srWindow.Bottom);
+        ok(csbi2.srWindow.Left == ConRect.Left, "srWindow.Left = %d, expected 
%d\n",
+           csbi2.srWindow.Left, ConRect.Left);
+        ok(csbi2.srWindow.Top == ConRect.Top, "srWindow.Top = %d, expected 
%d\n",
+           csbi2.srWindow.Top, ConRect.Top);
+        ok(csbi2.srWindow.Right == ConRect.Right, "srWindow.Right = %d, 
expected %d\n",
+           csbi2.srWindow.Right, ConRect.Right);
+        ok(csbi2.srWindow.Bottom == ConRect.Bottom, "srWindow.Bottom = %d, 
expected %d\n",
+           csbi2.srWindow.Bottom, ConRect.Bottom);
+    }
+
+    /*
+     * Test 7: Test how large can the console window be, for a given
+     * screen buffer size. For that we set the console screen buffer
+     * to a really large size, hoping that its corresponding window size
+     * is larger than the computer screen. The permitted maximum window
+     * size specified in csbi.dwMaximumWindowSize should be a boundary.
+     */
+    Resolution.X = 500;
+    Resolution.Y = 500;
+    ResizeTextConsole(hConOut, &csbi, Resolution, NULL);
+    /* Be sure that csbi.dwMaximumWindowSize is strictly smaller
+     * than the console screen buffer size, for our matters... */
+    ok((csbi.dwMaximumWindowSize.X < Resolution.X) && 
(csbi.dwMaximumWindowSize.Y < Resolution.Y),
+       "dwMaximumWindowSize = {%d, %d} was expected to be smaller than 
Resolution = {%d, %d}\n",
+       csbi.dwMaximumWindowSize.X, csbi.dwMaximumWindowSize.Y, Resolution.X, 
Resolution.Y);
+
+    /* Now try to set first the console window to a size smaller than the 
maximum size */
+    ConRect.Left   = ConRect.Top = 0;
+    ConRect.Right  = csbi.dwMaximumWindowSize.X - 1;
+    ConRect.Bottom = csbi.dwMaximumWindowSize.Y - 1;
+    SetLastError(0xdeadbeef);
+    Success = SetConsoleWindowInfo(hConOut, TRUE, &ConRect);
+    dwLastError = GetLastError();
+    ok(Success, "Setting console wnd info should have succeeded!\n");
+    ok(dwLastError != ERROR_INVALID_PARAMETER, "GetLastError: %lu\n", 
dwLastError);
+
+    /* Check the new reported window size rect */
+    Success = GetConsoleScreenBufferInfo(hConOut, &csbi2);
+    ok(Success, "Getting SB info\n");
+    if (Success)
+    {
+        ok(csbi2.srWindow.Left == ConRect.Left, "srWindow.Left = %d, expected 
%d\n",
+           csbi2.srWindow.Left, ConRect.Left);
+        ok(csbi2.srWindow.Top == ConRect.Top, "srWindow.Top = %d, expected 
%d\n",
+           csbi2.srWindow.Top, ConRect.Top);
+        ok(csbi2.srWindow.Right == ConRect.Right, "srWindow.Right = %d, 
expected %d\n",
+           csbi2.srWindow.Right, ConRect.Right);
+        ok(csbi2.srWindow.Bottom == ConRect.Bottom, "srWindow.Bottom = %d, 
expected %d\n",
+           csbi2.srWindow.Bottom, ConRect.Bottom);
+    }
+
+    /* And now try to set the console window to a size larger than the maximum 
size.
+     * The SetConsoleWindowInfo call should fail */
+    ConRect.Left   = ConRect.Top = 0;
+    ConRect.Right  = csbi.dwMaximumWindowSize.X + 1;
+    ConRect.Bottom = csbi.dwMaximumWindowSize.Y + 1;
+    SetLastError(0xdeadbeef);
+    Success = SetConsoleWindowInfo(hConOut, TRUE, &ConRect);
+    dwLastError = GetLastError();
+    ok(!Success, "Setting console wnd info should have failed!\n");
+    ok(dwLastError == ERROR_INVALID_PARAMETER, "GetLastError: expecting %u got 
%lu\n",
+       ERROR_INVALID_PARAMETER, dwLastError);
+
+    /* Check the new reported window size rect */
+    Success = GetConsoleScreenBufferInfo(hConOut, &csbi2);
+    ok(Success, "Getting SB info\n");
+    if (Success)
+    {
+        ok(csbi2.srWindow.Left == 0, "srWindow.Left = %d, expected %d\n",
+           csbi2.srWindow.Left, 0);
+        ok(csbi2.srWindow.Top == 0, "srWindow.Top = %d, expected %d\n",
+           csbi2.srWindow.Top, 0);
+        ok(csbi2.srWindow.Right == csbi.dwMaximumWindowSize.X - 1, 
"srWindow.Right = %d, expected %d\n",
+           csbi2.srWindow.Right, csbi.dwMaximumWindowSize.X - 1);
+        ok(csbi2.srWindow.Bottom == csbi.dwMaximumWindowSize.Y - 1, 
"srWindow.Bottom = %d, expected %d\n",
+           csbi2.srWindow.Bottom, csbi.dwMaximumWindowSize.Y - 1);
     }
 
 


Reply via email to