https://git.reactos.org/?p=reactos.git;a=commitdiff;h=1816e4f6cbc6f034397c28dbffca54698a38088c

commit 1816e4f6cbc6f034397c28dbffca54698a38088c
Author:     Katayama Hirofumi MZ <[email protected]>
AuthorDate: Tue Mar 17 23:24:11 2020 +0900
Commit:     GitHub <[email protected]>
CommitDate: Tue Mar 17 23:24:11 2020 +0900

    [USER32_APITEST] Strengthen DrawText testcase (#2450)
    
    Add uFormat and pszText parameters into user32_apitest DrawText testcase. 
CORE-16753
---
 modules/rostests/apitests/user32/DrawText.c | 477 +++++++++++++++++++++-------
 1 file changed, 358 insertions(+), 119 deletions(-)

diff --git a/modules/rostests/apitests/user32/DrawText.c 
b/modules/rostests/apitests/user32/DrawText.c
index 600f0828a34..e560fa8c75c 100644
--- a/modules/rostests/apitests/user32/DrawText.c
+++ b/modules/rostests/apitests/user32/DrawText.c
@@ -2,7 +2,7 @@
  * PROJECT:     ReactOS API tests
  * LICENSE:     LGPL-2.1+ (https://spdx.org/licenses/LGPL-2.1+)
  * PURPOSE:     Test for DrawText
- * COPYRIGHT:   Copyright 2019 Katayama Hirofumi MZ 
<[email protected]>
+ * COPYRIGHT:   Copyright 2019-2020 Katayama Hirofumi MZ 
<[email protected]>
  */
 
 #include "precomp.h"
@@ -16,137 +16,336 @@ typedef struct YY
 typedef struct TEST_ENTRY
 {
     INT line;
+    UINT uFormat;
+    LPCSTR pszText;
     INT ret;
     LONG font_height;
-    YY input;
+    RECT input;
     YY output;
 } TEST_ENTRY;
 
+#define DT_1 (DT_CALCRECT | DT_SINGLELINE | DT_LEFT | DT_TOP)
+#define DT_2 (DT_CALCRECT | DT_SINGLELINE | DT_LEFT | DT_VCENTER)
+#define DT_3 (DT_CALCRECT | DT_LEFT | DT_TOP)
+#define DT_4 (DT_CALCRECT | DT_LEFT | DT_VCENTER)
+#define DT_5 (DT_CALCRECT | DT_LEFT | DT_TOP | DT_EDITCONTROL)
+
+#define DT_6 (DT_SINGLELINE | DT_LEFT | DT_TOP)
+#define DT_7 (DT_SINGLELINE | DT_LEFT | DT_VCENTER)
+#define DT_8 (DT_LEFT | DT_TOP)
+#define DT_9 (DT_LEFT | DT_VCENTER)
+#define DT_10 (DT_LEFT | DT_TOP | DT_EDITCONTROL)
+
 static const TEST_ENTRY s_entries[] =
 {
-    { __LINE__, 5, -10, { 0, -2 }, { 0, 5 } },
-    { __LINE__, 6, -10, { 0, -1 }, { 0, 6 } },
-    { __LINE__, 6, -10, { 0, 0 }, { 0, 6 } },
-    { __LINE__, 7, -10, { 0, 1 }, { 0, 7 } },
-    { __LINE__, 7, -10, { 0, 2 }, { 0, 7 } },
-    { __LINE__, 8, -10, { 0, 3 }, { 0, 8 } },
-    { __LINE__, 8, -10, { 0, 4 }, { 0, 8 } },
-    { __LINE__, 9, -10, { 0, 5 }, { 0, 9 } },
-    { __LINE__, 9, -10, { 0, 6 }, { 0, 9 } },
-    { __LINE__, 10, -10, { 0, 7 }, { 0, 10 } },
-    { __LINE__, 10, -10, { 0, 8 }, { 0, 10 } },
-    { __LINE__, 11, -10, { 0, 9 }, { 0, 11 } },
-    { __LINE__, 11, -10, { 0, 10 }, { 0, 11 } },
-    { __LINE__, 12, -10, { 0, 11 }, { 0, 12 } },
-    { __LINE__, 12, -10, { 0, 12 }, { 0, 12 } },
-    { __LINE__, 12, -10, { 0, 13 }, { 0, 12 } },
-    { __LINE__, 13, -10, { 0, 14 }, { 0, 13 } },
-    { __LINE__, 13, -10, { 0, 15 }, { 0, 13 } },
-
-    { __LINE__, 5, -10, { 1, -2 }, { 1, 6 } },
-    { __LINE__, 5, -10, { 1, -1 }, { 1, 6 } },
-    { __LINE__, 6, -10, { 1, 0 }, { 1, 7 } },
-    { __LINE__, 6, -10, { 1, 1 }, { 1, 7 } },
-    { __LINE__, 7, -10, { 1, 2 }, { 1, 8 } },
-    { __LINE__, 7, -10, { 1, 3 }, { 1, 8 } },
-    { __LINE__, 8, -10, { 1, 4 }, { 1, 9 } },
-    { __LINE__, 8, -10, { 1, 5 }, { 1, 9 } },
-    { __LINE__, 9, -10, { 1, 6 }, { 1, 10 } },
-    { __LINE__, 9, -10, { 1, 7 }, { 1, 10 } },
-    { __LINE__, 10, -10, { 1, 8 }, { 1, 11 } },
-    { __LINE__, 10, -10, { 1, 9 }, { 1, 11 } },
-    { __LINE__, 11, -10, { 1, 10 }, { 1, 12 } },
-    { __LINE__, 11, -10, { 1, 11 }, { 1, 12 } },
-    { __LINE__, 12, -10, { 1, 12 }, { 1, 13 } },
-    { __LINE__, 12, -10, { 1, 13 }, { 1, 13 } },
-    { __LINE__, 12, -10, { 1, 14 }, { 1, 13 } },
-    { __LINE__, 13, -10, { 1, 15 }, { 1, 14 } },
-
-    { __LINE__, 6, -11, { 0, -2 }, { 0, 6 } },
-    { __LINE__, 6, -11, { 0, -1 }, { 0, 6 } },
-    { __LINE__, 7, -11, { 0, 0 }, { 0, 7 } },
-    { __LINE__, 7, -11, { 0, 1 }, { 0, 7 } },
-    { __LINE__, 8, -11, { 0, 2 }, { 0, 8 } },
-    { __LINE__, 8, -11, { 0, 3 }, { 0, 8 } },
-    { __LINE__, 9, -11, { 0, 4 }, { 0, 9 } },
-    { __LINE__, 9, -11, { 0, 5 }, { 0, 9 } },
-    { __LINE__, 10, -11, { 0, 6 }, { 0, 10 } },
-    { __LINE__, 10, -11, { 0, 7 }, { 0, 10 } },
-    { __LINE__, 11, -11, { 0, 8 }, { 0, 11 } },
-    { __LINE__, 11, -11, { 0, 9 }, { 0, 11 } },
-    { __LINE__, 12, -11, { 0, 10 }, { 0, 12 } },
-    { __LINE__, 12, -11, { 0, 11 }, { 0, 12 } },
-    { __LINE__, 13, -11, { 0, 12 }, { 0, 13 } },
-    { __LINE__, 13, -11, { 0, 13 }, { 0, 13 } },
-    { __LINE__, 13, -11, { 0, 13 }, { 0, 13 } },
-    { __LINE__, 14, -11, { 0, 15 }, { 0, 14 } },
-
-    { __LINE__, 5, -11, { 1, -2 }, { 1, 6 } },
-    { __LINE__, 6, -11, { 1, -1 }, { 1, 7 } },
-    { __LINE__, 6, -11, { 1, 0 }, { 1, 7 } },
-    { __LINE__, 7, -11, { 1, 1 }, { 1, 8 } },
-    { __LINE__, 7, -11, { 1, 2 }, { 1, 8 } },
-    { __LINE__, 8, -11, { 1, 3 }, { 1, 9 } },
-    { __LINE__, 8, -11, { 1, 4 }, { 1, 9 } },
-    { __LINE__, 9, -11, { 1, 5 }, { 1, 10 } },
-    { __LINE__, 9, -11, { 1, 6 }, { 1, 10 } },
-    { __LINE__, 10, -11, { 1, 7 }, { 1, 11 } },
-    { __LINE__, 10, -11, { 1, 8 }, { 1, 11 } },
-    { __LINE__, 11, -11, { 1, 9 }, { 1, 12 } },
-    { __LINE__, 11, -11, { 1, 10 }, { 1, 12 } },
-    { __LINE__, 12, -11, { 1, 11 }, { 1, 13 } },
-    { __LINE__, 12, -11, { 1, 12 }, { 1, 13 } },
-    { __LINE__, 13, -11, { 1, 13 }, { 1, 14 } },
-    { __LINE__, 13, -11, { 1, 14 }, { 1, 14 } },
-    { __LINE__, 13, -11, { 1, 15 }, { 1, 14 } },
-
-    { __LINE__, 6, -12, { 0, -2 }, { 0, 6 } },
-    { __LINE__, 7, -12, { 0, -1 }, { 0, 7 } },
-    { __LINE__, 7, -12, { 0, 0 }, { 0, 7 } },
-    { __LINE__, 8, -12, { 0, 1 }, { 0, 8 } },
-    { __LINE__, 8, -12, { 0, 2 }, { 0, 8 } },
-    { __LINE__, 9, -12, { 0, 3 }, { 0, 9 } },
-    { __LINE__, 9, -12, { 0, 4 }, { 0, 9 } },
-    { __LINE__, 10, -12, { 0, 5 }, { 0, 10 } },
-    { __LINE__, 10, -12, { 0, 6 }, { 0, 10 } },
-    { __LINE__, 11, -12, { 0, 7 }, { 0, 11 } },
-    { __LINE__, 11, -12, { 0, 8 }, { 0, 11 } },
-    { __LINE__, 12, -12, { 0, 9 }, { 0, 12 } },
-    { __LINE__, 12, -12, { 0, 10 }, { 0, 12 } },
-    { __LINE__, 13, -12, { 0, 11 }, { 0, 13 } },
-    { __LINE__, 13, -12, { 0, 12 }, { 0, 13 } },
-    { __LINE__, 14, -12, { 0, 13 }, { 0, 14 } },
-    { __LINE__, 14, -12, { 0, 14 }, { 0, 14 } },
-    { __LINE__, 14, -12, { 0, 15 }, { 0, 14 } },
-
-    { __LINE__, 6, -12, { 1, -2 }, { 1, 7 } },
-    { __LINE__, 6, -12, { 1, -1 }, { 1, 7 } },
-    { __LINE__, 7, -12, { 1, 0 }, { 1, 8 } },
-    { __LINE__, 7, -12, { 1, 1 }, { 1, 8 } },
-    { __LINE__, 8, -12, { 1, 2 }, { 1, 9 } },
-    { __LINE__, 8, -12, { 1, 3 }, { 1, 9 } },
-    { __LINE__, 9, -12, { 1, 4 }, { 1, 10 } },
-    { __LINE__, 9, -12, { 1, 5 }, { 1, 10 } },
-    { __LINE__, 10, -12, { 1, 6 }, { 1, 11 } },
-    { __LINE__, 10, -12, { 1, 7 }, { 1, 11 } },
-    { __LINE__, 11, -12, { 1, 8 }, { 1, 12 } },
-    { __LINE__, 11, -12, { 1, 9 }, { 1, 12 } },
-    { __LINE__, 12, -12, { 1, 10 }, { 1, 13 } },
-    { __LINE__, 12, -12, { 1, 11 }, { 1, 13 } },
-    { __LINE__, 13, -12, { 1, 12 }, { 1, 14 } },
-    { __LINE__, 13, -12, { 1, 13 }, { 1, 14 } },
-    { __LINE__, 14, -12, { 1, 14 }, { 1, 15 } },
-    { __LINE__, 14, -12, { 1, 15 }, { 1, 15 } },
+    { __LINE__, DT_1, "ABCabc123g", 12, -10, { 0, 0, 0, -2 }, { 0, 12 } },
+    { __LINE__, DT_1, "ABCabc123g", 12, -10, { 0, 0, 0, -1 }, { 0, 12 } },
+    { __LINE__, DT_1, "ABCabc123g", 12, -10, { 0, 0, 0, 0 }, { 0, 12 } },
+    { __LINE__, DT_1, "ABCabc123g", 12, -10, { 0, 0, 0, 1 }, { 0, 12 } },
+    { __LINE__, DT_1, "ABCabc123g", 12, -10, { 0, 0, 0, 2 }, { 0, 12 } },
+    { __LINE__, DT_1, "ABCabc123g", 12, -10, { 0, 0, 0, 3 }, { 0, 12 } },
+    { __LINE__, DT_1, "ABCabc123g", 12, -10, { 0, 0, 0, 4 }, { 0, 12 } },
+    { __LINE__, DT_1, "ABCabc123g", 12, -10, { 0, 0, 0, 5 }, { 0, 12 } },
+    { __LINE__, DT_1, "ABCabc123g", 12, -10, { 0, 0, 0, 6 }, { 0, 12 } },
+
+    { __LINE__, DT_1, "ABCabc123g", 13, -11, { 0, 0, 0, -2 }, { 0, 13 } },
+    { __LINE__, DT_1, "ABCabc123g", 13, -11, { 0, 0, 0, -1 }, { 0, 13 } },
+    { __LINE__, DT_1, "ABCabc123g", 13, -11, { 0, 0, 0, 0 }, { 0, 13 } },
+    { __LINE__, DT_1, "ABCabc123g", 13, -11, { 0, 0, 0, 1 }, { 0, 13 } },
+    { __LINE__, DT_1, "ABCabc123g", 13, -11, { 0, 0, 0, 2 }, { 0, 13 } },
+    { __LINE__, DT_1, "ABCabc123g", 13, -11, { 0, 0, 0, 3 }, { 0, 13 } },
+    { __LINE__, DT_1, "ABCabc123g", 13, -11, { 0, 0, 0, 4 }, { 0, 13 } },
+    { __LINE__, DT_1, "ABCabc123g", 13, -11, { 0, 0, 0, 5 }, { 0, 13 } },
+    { __LINE__, DT_1, "ABCabc123g", 13, -11, { 0, 0, 0, 6 }, { 0, 13 } },
+
+    { __LINE__, DT_1, "ABCabc123g", 14, -12, { 0, 0, 0, -2 }, { 0, 14 } },
+    { __LINE__, DT_1, "ABCabc123g", 14, -12, { 0, 0, 0, -1 }, { 0, 14 } },
+    { __LINE__, DT_1, "ABCabc123g", 14, -12, { 0, 0, 0, 0 }, { 0, 14 } },
+    { __LINE__, DT_1, "ABCabc123g", 14, -12, { 0, 0, 0, 1 }, { 0, 14 } },
+    { __LINE__, DT_1, "ABCabc123g", 14, -12, { 0, 0, 0, 2 }, { 0, 14 } },
+    { __LINE__, DT_1, "ABCabc123g", 14, -12, { 0, 0, 0, 3 }, { 0, 14 } },
+    { __LINE__, DT_1, "ABCabc123g", 14, -12, { 0, 0, 0, 4 }, { 0, 14 } },
+    { __LINE__, DT_1, "ABCabc123g", 14, -12, { 0, 0, 0, 5 }, { 0, 14 } },
+    { __LINE__, DT_1, "ABCabc123g", 14, -12, { 0, 0, 0, 6 }, { 0, 14 } },
+
+    { __LINE__, DT_2, "ABCabc123g", 5, -10, { 0, 0, 0, -2 }, { 0, 5 } },
+    { __LINE__, DT_2, "ABCabc123g", 6, -10, { 0, 0, 0, -1 }, { 0, 6 } },
+    { __LINE__, DT_2, "ABCabc123g", 6, -10, { 0, 0, 0, 0 }, { 0, 6 } },
+    { __LINE__, DT_2, "ABCabc123g", 7, -10, { 0, 0, 0, 1 }, { 0, 7 } },
+    { __LINE__, DT_2, "ABCabc123g", 7, -10, { 0, 0, 0, 2 }, { 0, 7 } },
+    { __LINE__, DT_2, "ABCabc123g", 8, -10, { 0, 0, 0, 3 }, { 0, 8 } },
+    { __LINE__, DT_2, "ABCabc123g", 8, -10, { 0, 0, 0, 4 }, { 0, 8 } },
+    { __LINE__, DT_2, "ABCabc123g", 9, -10, { 0, 0, 0, 5 }, { 0, 9 } },
+    { __LINE__, DT_2, "ABCabc123g", 9, -10, { 0, 0, 0, 6 }, { 0, 9 } },
+
+    { __LINE__, DT_2, "ABCabc123g", 6, -11, { 0, 0, 0, -2 }, { 0, 6 } },
+    { __LINE__, DT_2, "ABCabc123g", 6, -11, { 0, 0, 0, -1 }, { 0, 6 } },
+    { __LINE__, DT_2, "ABCabc123g", 7, -11, { 0, 0, 0, 0 }, { 0, 7 } },
+    { __LINE__, DT_2, "ABCabc123g", 7, -11, { 0, 0, 0, 1 }, { 0, 7 } },
+    { __LINE__, DT_2, "ABCabc123g", 8, -11, { 0, 0, 0, 2 }, { 0, 8 } },
+    { __LINE__, DT_2, "ABCabc123g", 8, -11, { 0, 0, 0, 3 }, { 0, 8 } },
+    { __LINE__, DT_2, "ABCabc123g", 9, -11, { 0, 0, 0, 4 }, { 0, 9 } },
+    { __LINE__, DT_2, "ABCabc123g", 9, -11, { 0, 0, 0, 5 }, { 0, 9 } },
+    { __LINE__, DT_2, "ABCabc123g", 10, -11, { 0, 0, 0, 6 }, { 0, 10 } },
+
+    { __LINE__, DT_2, "ABCabc123g", 6, -12, { 0, 0, 0, -2 }, { 0, 6 } },
+    { __LINE__, DT_2, "ABCabc123g", 7, -12, { 0, 0, 0, -1 }, { 0, 7 } },
+    { __LINE__, DT_2, "ABCabc123g", 7, -12, { 0, 0, 0, 0 }, { 0, 7 } },
+    { __LINE__, DT_2, "ABCabc123g", 8, -12, { 0, 0, 0, 1 }, { 0, 8 } },
+    { __LINE__, DT_2, "ABCabc123g", 8, -12, { 0, 0, 0, 2 }, { 0, 8 } },
+    { __LINE__, DT_2, "ABCabc123g", 9, -12, { 0, 0, 0, 3 }, { 0, 9 } },
+    { __LINE__, DT_2, "ABCabc123g", 9, -12, { 0, 0, 0, 4 }, { 0, 9 } },
+    { __LINE__, DT_2, "ABCabc123g", 10, -12, { 0, 0, 0, 5 }, { 0, 10 } },
+    { __LINE__, DT_2, "ABCabc123g", 10, -12, { 0, 0, 0, 6 }, { 0, 10 } },
+
+    { __LINE__, DT_3, "ABCabc\n123g", 24, -10, { 0, 0, 0, -2 }, { 0, 24 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 24, -10, { 0, 0, 0, -1 }, { 0, 24 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 24, -10, { 0, 0, 0, 0 }, { 0, 24 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 24, -10, { 0, 0, 0, 1 }, { 0, 24 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 24, -10, { 0, 0, 0, 2 }, { 0, 24 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 24, -10, { 0, 0, 0, 3 }, { 0, 24 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 24, -10, { 0, 0, 0, 4 }, { 0, 24 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 24, -10, { 0, 0, 0, 5 }, { 0, 24 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 24, -10, { 0, 0, 0, 6 }, { 0, 24 } },
+
+    { __LINE__, DT_3, "ABCabc\n123g", 26, -11, { 0, 0, 0, -2 }, { 0, 26 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 26, -11, { 0, 0, 0, -1 }, { 0, 26 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 26, -11, { 0, 0, 0, 0 }, { 0, 26 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 26, -11, { 0, 0, 0, 1 }, { 0, 26 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 26, -11, { 0, 0, 0, 2 }, { 0, 26 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 26, -11, { 0, 0, 0, 3 }, { 0, 26 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 26, -11, { 0, 0, 0, 4 }, { 0, 26 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 26, -11, { 0, 0, 0, 5 }, { 0, 26 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 26, -11, { 0, 0, 0, 6 }, { 0, 26 } },
+
+    { __LINE__, DT_3, "ABCabc\n123g", 28, -12, { 0, 0, 0, -2 }, { 0, 28 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 28, -12, { 0, 0, 0, -1 }, { 0, 28 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 28, -12, { 0, 0, 0, 0 }, { 0, 28 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 28, -12, { 0, 0, 0, 1 }, { 0, 28 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 28, -12, { 0, 0, 0, 2 }, { 0, 28 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 28, -12, { 0, 0, 0, 3 }, { 0, 28 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 28, -12, { 0, 0, 0, 4 }, { 0, 28 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 28, -12, { 0, 0, 0, 5 }, { 0, 28 } },
+    { __LINE__, DT_3, "ABCabc\n123g", 28, -12, { 0, 0, 0, 6 }, { 0, 28 } },
+
+    { __LINE__, DT_4, "ABCabc\n123g", 24, -10, { 0, 0, 0, -2 }, { 0, 24 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 24, -10, { 0, 0, 0, -1 }, { 0, 24 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 24, -10, { 0, 0, 0, 0 }, { 0, 24 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 24, -10, { 0, 0, 0, 1 }, { 0, 24 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 24, -10, { 0, 0, 0, 2 }, { 0, 24 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 24, -10, { 0, 0, 0, 3 }, { 0, 24 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 24, -10, { 0, 0, 0, 4 }, { 0, 24 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 24, -10, { 0, 0, 0, 5 }, { 0, 24 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 24, -10, { 0, 0, 0, 6 }, { 0, 24 } },
+
+    { __LINE__, DT_4, "ABCabc\n123g", 26, -11, { 0, 0, 0, -2 }, { 0, 26 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 26, -11, { 0, 0, 0, -1 }, { 0, 26 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 26, -11, { 0, 0, 0, 0 }, { 0, 26 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 26, -11, { 0, 0, 0, 1 }, { 0, 26 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 26, -11, { 0, 0, 0, 2 }, { 0, 26 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 26, -11, { 0, 0, 0, 3 }, { 0, 26 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 26, -11, { 0, 0, 0, 4 }, { 0, 26 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 26, -11, { 0, 0, 0, 5 }, { 0, 26 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 26, -11, { 0, 0, 0, 6 }, { 0, 26 } },
+
+    { __LINE__, DT_4, "ABCabc\n123g", 28, -12, { 0, 0, 0, -2 }, { 0, 28 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 28, -12, { 0, 0, 0, -1 }, { 0, 28 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 28, -12, { 0, 0, 0, 0 }, { 0, 28 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 28, -12, { 0, 0, 0, 1 }, { 0, 28 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 28, -12, { 0, 0, 0, 2 }, { 0, 28 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 28, -12, { 0, 0, 0, 3 }, { 0, 28 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 28, -12, { 0, 0, 0, 4 }, { 0, 28 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 28, -12, { 0, 0, 0, 5 }, { 0, 28 } },
+    { __LINE__, DT_4, "ABCabc\n123g", 28, -12, { 0, 0, 0, 6 }, { 0, 28 } },
+
+    { __LINE__, DT_5, "ABCabc\n123g", 24, -10, { 0, 0, 0, -2 }, { 0, 24 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 24, -10, { 0, 0, 0, -1 }, { 0, 24 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 24, -10, { 0, 0, 0, 0 }, { 0, 24 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 24, -10, { 0, 0, 0, 1 }, { 0, 24 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 24, -10, { 0, 0, 0, 2 }, { 0, 24 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 24, -10, { 0, 0, 0, 3 }, { 0, 24 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 24, -10, { 0, 0, 0, 4 }, { 0, 24 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 24, -10, { 0, 0, 0, 5 }, { 0, 24 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 24, -10, { 0, 0, 0, 6 }, { 0, 24 } },
+
+    { __LINE__, DT_5, "ABCabc\n123g", 26, -11, { 0, 0, 0, -2 }, { 0, 26 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 26, -11, { 0, 0, 0, -1 }, { 0, 26 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 26, -11, { 0, 0, 0, 0 }, { 0, 26 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 26, -11, { 0, 0, 0, 1 }, { 0, 26 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 26, -11, { 0, 0, 0, 2 }, { 0, 26 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 26, -11, { 0, 0, 0, 3 }, { 0, 26 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 26, -11, { 0, 0, 0, 4 }, { 0, 26 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 26, -11, { 0, 0, 0, 5 }, { 0, 26 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 26, -11, { 0, 0, 0, 6 }, { 0, 26 } },
+
+    { __LINE__, DT_5, "ABCabc\n123g", 28, -12, { 0, 0, 0, -2 }, { 0, 28 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 28, -12, { 0, 0, 0, -1 }, { 0, 28 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 28, -12, { 0, 0, 0, 0 }, { 0, 28 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 28, -12, { 0, 0, 0, 1 }, { 0, 28 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 28, -12, { 0, 0, 0, 2 }, { 0, 28 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 28, -12, { 0, 0, 0, 3 }, { 0, 28 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 28, -12, { 0, 0, 0, 4 }, { 0, 28 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 28, -12, { 0, 0, 0, 5 }, { 0, 28 } },
+    { __LINE__, DT_5, "ABCabc\n123g", 28, -12, { 0, 0, 0, 6 }, { 0, 28 } },
+
+    { __LINE__, DT_6, "ABCabc123g", 10, -8, { 0, 1, 30, 15 - 2 }, { 1, 12 } },
+    { __LINE__, DT_6, "ABCabc123g", 10, -8, { 0, 1, 30, 15 - 1 }, { 1, 13 } },
+    { __LINE__, DT_6, "ABCabc123g", 10, -8, { 0, 1, 30, 15 + 0 }, { 1, 14 } },
+    { __LINE__, DT_6, "ABCabc123g", 10, -8, { 0, 1, 30, 15 + 1 }, { 1, 15 } },
+    { __LINE__, DT_6, "ABCabc123g", 10, -8, { 0, 1, 30, 15 + 2 }, { 1, 16 } },
+    { __LINE__, DT_6, "ABCabc123g", 10, -8, { 0, 1, 30, 15 + 3 }, { 1, 17 } },
+    { __LINE__, DT_6, "ABCabc123g", 10, -8, { 0, 1, 30, 15 + 4 }, { 1, 18 } },
+    { __LINE__, DT_6, "ABCabc123g", 10, -8, { 0, 1, 30, 15 + 5 }, { 1, 19 } },
+    { __LINE__, DT_6, "ABCabc123g", 10, -8, { 0, 1, 30, 15 + 6 }, { 1, 20 } },
+
+    { __LINE__, DT_6, "ABCabc123g", 11, -9, { 0, 1, 30, 15 - 2 }, { 1, 12 } },
+    { __LINE__, DT_6, "ABCabc123g", 11, -9, { 0, 1, 30, 15 - 1 }, { 1, 13 } },
+    { __LINE__, DT_6, "ABCabc123g", 11, -9, { 0, 1, 30, 15 + 0 }, { 1, 14 } },
+    { __LINE__, DT_6, "ABCabc123g", 11, -9, { 0, 1, 30, 15 + 1 }, { 1, 15 } },
+    { __LINE__, DT_6, "ABCabc123g", 11, -9, { 0, 1, 30, 15 + 2 }, { 1, 16 } },
+    { __LINE__, DT_6, "ABCabc123g", 11, -9, { 0, 1, 30, 15 + 3 }, { 1, 17 } },
+    { __LINE__, DT_6, "ABCabc123g", 11, -9, { 0, 1, 30, 15 + 4 }, { 1, 18 } },
+    { __LINE__, DT_6, "ABCabc123g", 11, -9, { 0, 1, 30, 15 + 5 }, { 1, 19 } },
+    { __LINE__, DT_6, "ABCabc123g", 11, -9, { 0, 1, 30, 15 + 6 }, { 1, 20 } },
+
+    { __LINE__, DT_6, "ABCabc123g", 12, -10, { 0, 1, 30, 15 - 2 }, { 1, 12 } },
+    { __LINE__, DT_6, "ABCabc123g", 12, -10, { 0, 1, 30, 15 - 1 }, { 1, 13 } },
+    { __LINE__, DT_6, "ABCabc123g", 12, -10, { 0, 1, 30, 15 + 0 }, { 1, 14 } },
+    { __LINE__, DT_6, "ABCabc123g", 12, -10, { 0, 1, 30, 15 + 1 }, { 1, 15 } },
+    { __LINE__, DT_6, "ABCabc123g", 12, -10, { 0, 1, 30, 15 + 2 }, { 1, 16 } },
+    { __LINE__, DT_6, "ABCabc123g", 12, -10, { 0, 1, 30, 15 + 3 }, { 1, 17 } },
+    { __LINE__, DT_6, "ABCabc123g", 12, -10, { 0, 1, 30, 15 + 4 }, { 1, 18 } },
+    { __LINE__, DT_6, "ABCabc123g", 12, -10, { 0, 1, 30, 15 + 5 }, { 1, 19 } },
+    { __LINE__, DT_6, "ABCabc123g", 12, -10, { 0, 1, 30, 15 + 6 }, { 1, 20 } },
+
+    { __LINE__, DT_7, "ABCabc123g", 11, -8, { 0, 1, 30, 15 - 2 }, { 1, 12 } },
+    { __LINE__, DT_7, "ABCabc123g", 11, -8, { 0, 1, 30, 15 - 1 }, { 1, 13 } },
+    { __LINE__, DT_7, "ABCabc123g", 12, -8, { 0, 1, 30, 15 + 0 }, { 1, 14 } },
+    { __LINE__, DT_7, "ABCabc123g", 12, -8, { 0, 1, 30, 15 + 1 }, { 1, 15 } },
+    { __LINE__, DT_7, "ABCabc123g", 13, -8, { 0, 1, 30, 15 + 2 }, { 1, 16 } },
+    { __LINE__, DT_7, "ABCabc123g", 13, -8, { 0, 1, 30, 15 + 3 }, { 1, 17 } },
+    { __LINE__, DT_7, "ABCabc123g", 14, -8, { 0, 1, 30, 15 + 4 }, { 1, 18 } },
+    { __LINE__, DT_7, "ABCabc123g", 14, -8, { 0, 1, 30, 15 + 5 }, { 1, 19 } },
+    { __LINE__, DT_7, "ABCabc123g", 15, -8, { 0, 1, 30, 15 + 6 }, { 1, 20 } },
+
+    { __LINE__, DT_7, "ABCabc123g", 11, -9, { 0, 1, 30, 15 - 2 }, { 1, 12 } },
+    { __LINE__, DT_7, "ABCabc123g", 12, -9, { 0, 1, 30, 15 - 1 }, { 1, 13 } },
+    { __LINE__, DT_7, "ABCabc123g", 12, -9, { 0, 1, 30, 15 + 0 }, { 1, 14 } },
+    { __LINE__, DT_7, "ABCabc123g", 13, -9, { 0, 1, 30, 15 + 1 }, { 1, 15 } },
+    { __LINE__, DT_7, "ABCabc123g", 13, -9, { 0, 1, 30, 15 + 2 }, { 1, 16 } },
+    { __LINE__, DT_7, "ABCabc123g", 14, -9, { 0, 1, 30, 15 + 3 }, { 1, 17 } },
+    { __LINE__, DT_7, "ABCabc123g", 14, -9, { 0, 1, 30, 15 + 4 }, { 1, 18 } },
+    { __LINE__, DT_7, "ABCabc123g", 15, -9, { 0, 1, 30, 15 + 5 }, { 1, 19 } },
+    { __LINE__, DT_7, "ABCabc123g", 15, -9, { 0, 1, 30, 15 + 6 }, { 1, 20 } },
+
+    { __LINE__, DT_7, "ABCabc123g", 12, -10, { 0, 1, 30, 15 - 2 }, { 1, 12 } },
+    { __LINE__, DT_7, "ABCabc123g", 12, -10, { 0, 1, 30, 15 - 1 }, { 1, 13 } },
+    { __LINE__, DT_7, "ABCabc123g", 13, -10, { 0, 1, 30, 15 + 0 }, { 1, 14 } },
+    { __LINE__, DT_7, "ABCabc123g", 13, -10, { 0, 1, 30, 15 + 1 }, { 1, 15 } },
+    { __LINE__, DT_7, "ABCabc123g", 14, -10, { 0, 1, 30, 15 + 2 }, { 1, 16 } },
+    { __LINE__, DT_7, "ABCabc123g", 14, -10, { 0, 1, 30, 15 + 3 }, { 1, 17 } },
+    { __LINE__, DT_7, "ABCabc123g", 15, -10, { 0, 1, 30, 15 + 4 }, { 1, 18 } },
+    { __LINE__, DT_7, "ABCabc123g", 15, -10, { 0, 1, 30, 15 + 5 }, { 1, 19 } },
+    { __LINE__, DT_7, "ABCabc123g", 16, -10, { 0, 1, 30, 15 + 6 }, { 1, 20 } },
+
+    { __LINE__, DT_8, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 - 2 }, { 1, 12 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 - 1 }, { 1, 12 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 + 0 }, { 1, 12 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 + 1 }, { 1, 12 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 + 2 }, { 1, 12 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 + 3 }, { 1, 12 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 + 4 }, { 1, 12 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 + 5 }, { 1, 12 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 + 6 }, { 1, 12 } 
},
+
+    { __LINE__, DT_8, "ABCabc\n123g", 22, -9, { 0, 1, 30, 15 - 2 }, { 1, 12 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 22, -9, { 0, 1, 30, 15 - 1 }, { 1, 13 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 22, -9, { 0, 1, 30, 15 + 0 }, { 1, 13 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 22, -9, { 0, 1, 30, 15 + 1 }, { 1, 13 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 22, -9, { 0, 1, 30, 15 + 2 }, { 1, 13 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 22, -9, { 0, 1, 30, 15 + 3 }, { 1, 13 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 22, -9, { 0, 1, 30, 15 + 4 }, { 1, 13 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 22, -9, { 0, 1, 30, 15 + 5 }, { 1, 13 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 22, -9, { 0, 1, 30, 15 + 6 }, { 1, 13 } 
},
+
+    { __LINE__, DT_8, "ABCabc\n123g", 24, -10, { 0, 1, 30, 15 - 2 }, { 1, 12 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 24, -10, { 0, 1, 30, 15 - 1 }, { 1, 13 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 24, -10, { 0, 1, 30, 15 + 0 }, { 1, 14 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 24, -10, { 0, 1, 30, 15 + 1 }, { 1, 15 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 24, -10, { 0, 1, 30, 15 + 2 }, { 1, 15 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 24, -10, { 0, 1, 30, 15 + 3 }, { 1, 15 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 24, -10, { 0, 1, 30, 15 + 4 }, { 1, 15 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 24, -10, { 0, 1, 30, 15 + 5 }, { 1, 15 } 
},
+    { __LINE__, DT_8, "ABCabc\n123g", 24, -10, { 0, 1, 30, 15 + 6 }, { 1, 15 } 
},
+
+    { __LINE__, DT_9, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 - 2 }, { 1, 12 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 - 1 }, { 1, 12 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 + 0 }, { 1, 12 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 + 1 }, { 1, 12 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 + 2 }, { 1, 12 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 + 3 }, { 1, 12 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 + 4 }, { 1, 12 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 + 5 }, { 1, 12 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 + 6 }, { 1, 12 } 
},
+
+    { __LINE__, DT_9, "ABCabc\n123g", 22, -9, { 0, 1, 30, 15 - 2 }, { 1, 12 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 22, -9, { 0, 1, 30, 15 - 1 }, { 1, 13 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 22, -9, { 0, 1, 30, 15 + 0 }, { 1, 13 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 22, -9, { 0, 1, 30, 15 + 1 }, { 1, 13 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 22, -9, { 0, 1, 30, 15 + 2 }, { 1, 13 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 22, -9, { 0, 1, 30, 15 + 3 }, { 1, 13 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 22, -9, { 0, 1, 30, 15 + 4 }, { 1, 13 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 22, -9, { 0, 1, 30, 15 + 5 }, { 1, 13 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 22, -9, { 0, 1, 30, 15 + 6 }, { 1, 13 } 
},
+
+    { __LINE__, DT_9, "ABCabc\n123g", 24, -10, { 0, 1, 30, 15 - 2 }, { 1, 12 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 24, -10, { 0, 1, 30, 15 - 1 }, { 1, 13 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 24, -10, { 0, 1, 30, 15 + 0 }, { 1, 14 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 24, -10, { 0, 1, 30, 15 + 1 }, { 1, 15 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 24, -10, { 0, 1, 30, 15 + 2 }, { 1, 15 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 24, -10, { 0, 1, 30, 15 + 3 }, { 1, 15 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 24, -10, { 0, 1, 30, 15 + 4 }, { 1, 15 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 24, -10, { 0, 1, 30, 15 + 5 }, { 1, 15 } 
},
+    { __LINE__, DT_9, "ABCabc\n123g", 24, -10, { 0, 1, 30, 15 + 6 }, { 1, 15 } 
},
+
+    { __LINE__, DT_10, "ABCabc\n123g", 10, -8, { 0, 1, 30, 15 - 2 }, { 1, 12 } 
},
+    { __LINE__, DT_10, "ABCabc\n123g", 10, -8, { 0, 1, 30, 15 - 1 }, { 1, 13 } 
},
+    { __LINE__, DT_10, "ABCabc\n123g", 10, -8, { 0, 1, 30, 15 + 0 }, { 1, 14 } 
},
+    { __LINE__, DT_10, "ABCabc\n123g", 10, -8, { 0, 1, 30, 15 + 1 }, { 1, 15 } 
},
+    { __LINE__, DT_10, "ABCabc\n123g", 10, -8, { 0, 1, 30, 15 + 2 }, { 1, 16 } 
},
+    { __LINE__, DT_10, "ABCabc\n123g", 10, -8, { 0, 1, 30, 15 + 3 }, { 1, 17 } 
},
+    { __LINE__, DT_10, "ABCabc\n123g", 10, -8, { 0, 1, 30, 15 + 4 }, { 1, 18 } 
},
+    { __LINE__, DT_10, "ABCabc\n123g", 10, -8, { 0, 1, 30, 15 + 5 }, { 1, 19 } 
},
+    { __LINE__, DT_10, "ABCabc\n123g", 20, -8, { 0, 1, 30, 15 + 6 }, { 1, 12 } 
},
+
+    { __LINE__, DT_10, "ABCabc\n123g", 11, -9, { 0, 1, 30, 15 - 2 }, { 1, 12 } 
},
+    { __LINE__, DT_10, "ABCabc\n123g", 11, -9, { 0, 1, 30, 15 - 1 }, { 1, 13 } 
},
+    { __LINE__, DT_10, "ABCabc\n123g", 11, -9, { 0, 1, 30, 15 + 0 }, { 1, 14 } 
},
+    { __LINE__, DT_10, "ABCabc\n123g", 11, -9, { 0, 1, 30, 15 + 1 }, { 1, 15 } 
},
+    { __LINE__, DT_10, "ABCabc\n123g", 11, -9, { 0, 1, 30, 15 + 2 }, { 1, 16 } 
},
+    { __LINE__, DT_10, "ABCabc\n123g", 11, -9, { 0, 1, 30, 15 + 3 }, { 1, 17 } 
},
+    { __LINE__, DT_10, "ABCabc\n123g", 11, -9, { 0, 1, 30, 15 + 4 }, { 1, 18 } 
},
+    { __LINE__, DT_10, "ABCabc\n123g", 11, -9, { 0, 1, 30, 15 + 5 }, { 1, 19 } 
},
+    { __LINE__, DT_10, "ABCabc\n123g", 11, -9, { 0, 1, 30, 15 + 6 }, { 1, 20 } 
},
+
+    { __LINE__, DT_10, "ABCabc\n123g", 12, -10, { 0, 1, 30, 15 - 2 }, { 1, 12 
} },
+    { __LINE__, DT_10, "ABCabc\n123g", 12, -10, { 0, 1, 30, 15 - 1 }, { 1, 13 
} },
+    { __LINE__, DT_10, "ABCabc\n123g", 12, -10, { 0, 1, 30, 15 + 0 }, { 1, 14 
} },
+    { __LINE__, DT_10, "ABCabc\n123g", 12, -10, { 0, 1, 30, 15 + 1 }, { 1, 15 
} },
+    { __LINE__, DT_10, "ABCabc\n123g", 12, -10, { 0, 1, 30, 15 + 2 }, { 1, 16 
} },
+    { __LINE__, DT_10, "ABCabc\n123g", 12, -10, { 0, 1, 30, 15 + 3 }, { 1, 17 
} },
+    { __LINE__, DT_10, "ABCabc\n123g", 12, -10, { 0, 1, 30, 15 + 4 }, { 1, 18 
} },
+    { __LINE__, DT_10, "ABCabc\n123g", 12, -10, { 0, 1, 30, 15 + 5 }, { 1, 19 
} },
+    { __LINE__, DT_10, "ABCabc\n123g", 12, -10, { 0, 1, 30, 15 + 6 }, { 1, 20 
} },
 };
 
 static void DoEntry(HDC hdc, const TEST_ENTRY *pEntry)
 {
-    static const WCHAR szText[] = L"ABCabc123g";
     RECT rc;
     INT ret;
     HFONT hFont;
     HGDIOBJ hFontOld;
-    UINT uFormat = DT_SINGLELINE | DT_LEFT | DT_VCENTER | DT_CALCRECT;
+    LONG x, y, yMin, yMax;
     LOGFONTW lf = { pEntry->font_height };
     lstrcpyW(lf.lfFaceName, L"Tahoma");
 
@@ -155,12 +354,42 @@ static void DoEntry(HDC hdc, const TEST_ENTRY *pEntry)
 
     hFontOld = SelectObject(hdc, hFont);
     {
-        SetRect(&rc, 0, pEntry->input.top, 0, pEntry->input.bottom);
+        rc = pEntry->input;
+
+        if (!(pEntry->uFormat & DT_CALCRECT))
+            FillRect(hdc, &rc, (HBRUSH)GetStockObject(WHITE_BRUSH));
 
-        ret = DrawTextW(hdc, szText, lstrlenW(szText), &rc, uFormat);
+        ret = DrawTextA(hdc, pEntry->pszText, -1, &rc, pEntry->uFormat);
         ok(ret == pEntry->ret,
            "Line %d: ret %d vs %d\n", pEntry->line, ret, pEntry->ret);
 
+        if (!(pEntry->uFormat & DT_CALCRECT))
+        {
+            yMin = rc.bottom;
+            yMax = rc.top;
+            for (y = rc.top; y < rc.bottom; ++y)
+            {
+                BOOL bNonWhiteFound = FALSE;
+                for (x = rc.left; x < rc.right; ++x)
+                {
+                    if (GetPixel(hdc, x, y) != RGB(255, 255, 255))
+                    {
+                        bNonWhiteFound = TRUE;
+                        break;
+                    }
+                }
+                if (!bNonWhiteFound)
+                {
+                    if (yMin > y)
+                        yMin = y;
+                    if (yMax < y)
+                        yMax = y;
+                }
+            }
+            rc.top = yMin;
+            rc.bottom = yMax;
+        }
+
         ok(rc.top == pEntry->output.top,
            "Line %d: top %ld vs %ld\n", pEntry->line, rc.top, 
pEntry->output.top);
 
@@ -174,13 +403,23 @@ static void DoEntry(HDC hdc, const TEST_ENTRY *pEntry)
 START_TEST(DrawText)
 {
     SIZE_T i;
+    HBITMAP hbm;
+    HGDIOBJ hbmOld;
     HDC hdc = CreateCompatibleDC(NULL);
     ok(hdc != NULL, "hdc was NULL\n");
 
+    hbm = CreateCompatibleBitmap(hdc, 100, 100);
+    hbmOld = SelectObject(hdc, hbm);
+
+    SetTextColor(hdc, RGB(0, 0, 0));
+    SetBkColor(hdc, RGB(255, 255, 255));
+    SetBkMode(hdc, OPAQUE);
     for (i = 0; i < ARRAYSIZE(s_entries); ++i)
     {
         DoEntry(hdc, &s_entries[i]);
     }
 
+    SelectObject(hdc, hbmOld);
+    DeleteObject(hbm);
     DeleteDC(hdc);
 }

Reply via email to