Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Lancelot SIX via Gdb-patches <gdb-patches@sourceware.org>
To: Pedro Alves <pedro@palves.net>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH 13/29] gdb/testsuite: Remove duplicates from gdb.base/dfp-exprs.exp
Date: Wed, 15 Dec 2021 00:01:31 +0000	[thread overview]
Message-ID: <20211215000131.lvdpsdwcrlwyktgh@Plymouth> (raw)
In-Reply-To: <0e6cef60-84ed-011b-8113-bc4bac1cce0e@palves.net>

> Hmm, it's not super obvious to me what the intention was here.  For one, I can't spot a pattern in
> the sequence here.  Am I missing it?  
> 
> If we alpha sort the lines (sort-lines in emacs), and then add the missing combinations, we end up with:
> 
>     # Keep the list alpha sorted.
>     gdb_test "p 1.2dd < 1.3dd" " = 1"
>     gdb_test "p 1.2dd < 1.3df" " = 1"
>     gdb_test "p 1.2dd < 1.3dl" " = 1"
>     gdb_test "p 1.2df < 1.3dd" " = 1"
>     gdb_test "p 1.2df < 1.3df" " = 1"
>     gdb_test "p 1.2df < 1.3dl" " = 1"
>     gdb_test "p 1.2dl < 1.3dd" " = 1"
>     gdb_test "p 1.2dl < 1.3df" " = 1"
>     gdb_test "p 1.2dl < 1.3dl" " = 1"
> 
> But then, the == tests are also missing some combinations.  I think that if we do this
> programmatically with a for loop, we can exercise all the combinations in much clearer code,
> removing the need to eyeball for all suffixes.  See patch below.
> 
> I've also added a lot more combinations, testing all comparison operators comprehensively.
> 
> The result is 262 unique tests vs 104 today.
> 
> Let me know what you think.
> 

Hi,

I actually like your approach very much.  I goes beyond what I was
looking for when I started this series, but I see no reason not to go
the extra step.  I am not sure if there an intention to be exhaustive in
the test as it was.

I have replaced my previous patch with yours locally (after adjusting
the commit message, and re-testing).

Thanks!
Lancelot.

---
From 93433e04fb6ae38addf744b6b99602d689781f5a Mon Sep 17 00:00:00 2001
From: Pedro Alves <pedro@palves.net>
Date: Fri, 10 Dec 2021 22:41:54 +0000
Subject: [PATCH] gdb/testsuite: Remove duplicates from gdb.base/dfp-exprs.exp

When I run the testsuite, I have:

    Running ../gdb/testsuite/gdb.base/dfp-exprs.exp ...
    DUPLICATE: gdb.base/dfp-exprs.exp: p 1.2dl < 1.3df

Replace hand-written tests checking various comparison operators between
various decimal floating point types with a loop to programmatically
generate all the combinations.  This removes the need to eyeball for all
suffixes, which lead to the original duplication.

Also add a lot more combinations, testing all comparison operators
comprehensively.  The result is 262 unique tests vs 104 before this
patch.

Tested on x86_86-linux.

Change-Id: Id215a3d610aa8e032bf06ee160b5e3aed4a92d1e
---
 gdb/testsuite/gdb.base/dfp-exprs.exp | 94 +++++++++++++++++-----------
 1 file changed, 57 insertions(+), 37 deletions(-)

diff --git a/gdb/testsuite/gdb.base/dfp-exprs.exp b/gdb/testsuite/gdb.base/dfp-exprs.exp
index 355b8f04a1f..e735e6df6d8 100644
--- a/gdb/testsuite/gdb.base/dfp-exprs.exp
+++ b/gdb/testsuite/gdb.base/dfp-exprs.exp
@@ -122,43 +122,63 @@ proc test_dfp_arithmetic_expressions {} {
     gdb_test "p 1.2df + 1.2f" "Mixing decimal floating types with other floating types is not allowed."
 
     # Test other operations with DFP operands
-    gdb_test "p !0.df" " = 1"
-    gdb_test "p !0.dd" " = 1"
-    gdb_test "p !0.dl" " = 1"
-    gdb_test "p !0.5df" " = 0"
-    gdb_test "p !0.5dd" " = 0"
-    gdb_test "p !0.5dl" " = 0"
-
-    gdb_test "p 1.2df == 1.2df" " = 1"
-    gdb_test "p 1.2df == 1.2dd" " = 1"
-    gdb_test "p 1.2df == 1.2dl" " = 1"
-    gdb_test "p 1.2dd == 1.2df" " = 1"
-    gdb_test "p 1.2dd == 1.2dl" " = 1"
-    gdb_test "p 1.2dl == 1.2df" " = 1"
-    gdb_test "p 1.2dl == 1.2dd" " = 1"
-    gdb_test "p 1.2df == 1.3df" " = 0"
-    gdb_test "p 1.2df == 1.3dd" " = 0"
-    gdb_test "p 1.2df == 1.3dl" " = 0"
-    gdb_test "p 1.2dd == 1.3df" " = 0"
-    gdb_test "p 1.2dd == 1.3dl" " = 0"
-    gdb_test "p 1.2dl == 1.3df" " = 0"
-    gdb_test "p 1.2dl == 1.3dd" " = 0"
-
-    gdb_test "p +1.2df" " = 1.2"
-    gdb_test "p +1.2dd" " = 1.2"
-    gdb_test "p +1.2dl" " = 1.2"
-
-    gdb_test "p 1.2df < 1.3df" " = 1"
-    gdb_test "p 1.2df < 1.3dd" " = 1"
-    gdb_test "p 1.2dl < 1.3df" " = 1"
-    gdb_test "p 1.2dd < 1.3dd" " = 1"
-    gdb_test "p 1.2dd < 1.3dl" " = 1"
-    gdb_test "p 1.2dl < 1.3dl" " = 1"
-    gdb_test "p 1.2dl < 1.3df" " = 1"
-    gdb_test "p 1.2df > 1" " = 1"
-    gdb_test "p 1.2dl > 2" " = 0"
-    gdb_test "p 2 > 1.2dd" " = 1"
-    gdb_test "p 2 > 3.1dl" " = 0"
+
+    set dsuffix {"dd" "df" "dl"}
+
+    foreach l $dsuffix {
+        foreach r $dsuffix {
+	    gdb_test "p 1.2${l} == 1.2${r}" " = 1"
+	    gdb_test "p 1.2${l} == 1.3${r}" " = 0"
+
+	    gdb_test "p 1.2${l} < 1.2${r}" " = 0"
+	    gdb_test "p 1.2${l} < 1.3${r}" " = 1"
+	    gdb_test "p 1.3${l} < 1.2${r}" " = 0"
+
+	    gdb_test "p 1.2${l} > 1.2${r}" " = 0"
+	    gdb_test "p 1.2${l} > 1.3${r}" " = 0"
+	    gdb_test "p 1.3${l} > 1.2${r}" " = 1"
+
+	    gdb_test "p 1.2${l} <= 1.2${r}" " = 1"
+	    gdb_test "p 1.2${l} <= 1.3${r}" " = 1"
+	    gdb_test "p 1.3${l} <= 1.2${r}" " = 0"
+
+	    gdb_test "p 1.2${l} >= 1.2${r}" " = 1"
+	    gdb_test "p 1.2${l} >= 1.3${r}" " = 0"
+	    gdb_test "p 1.3${l} >= 1.2${r}" " = 1"
+	}
+
+	gdb_test "p !0.${l}" " = 1"
+	gdb_test "p !0.5${l}" " = 0"
+
+	gdb_test "p +1.2${l}" " = 1.2"
+
+	# This checks GDB doesn't convert to int and rounds up/down.
+	gdb_test "p 1.2${l} == 1" " = 0"
+	gdb_test "p 1.2${l} == 2" " = 0"
+
+	gdb_test "p 1.2${l} == 1.2" \
+	    "Mixing decimal floating types with other floating types is not allowed\\."
+
+	gdb_test "p 1.2${l} > 1" " = 1"
+	gdb_test "p 1.2${l} > 2" " = 0"
+	gdb_test "p 1.2${l} >= 1" " = 1"
+	gdb_test "p 1.2${l} >= 2" " = 0"
+
+	gdb_test "p 1.2${l} < 1" " = 0"
+	gdb_test "p 1.2${l} < 2" " = 1"
+	gdb_test "p 1.2${l} <= 1" " = 0"
+	gdb_test "p 1.2${l} <= 2" " = 1"
+
+	gdb_test "p 1 < 1.2${l}" " = 1"
+	gdb_test "p 2 < 1.2${l}" " = 0"
+	gdb_test "p 1 <= 1.2${l}" " = 1"
+	gdb_test "p 2 <= 1.2${l}" " = 0"
+
+	gdb_test "p 1 > 1.2${l}" " = 0"
+	gdb_test "p 2 > 1.2${l}" " = 1"
+	gdb_test "p 1 >= 1.2${l}" " = 0"
+	gdb_test "p 2 >= 1.2${l}" " = 1"
+    }
 }
 
 proc test_dfp_conversions {} {

  reply	other threads:[~2021-12-15  0:01 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-21 17:56 [PATCH 00/29] Remove DUPLICATEs from testsuite/gdb.base/*.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 01/29] gdb/testsuite: Remove duplicates from gdb.base/stack-checking.exp Lancelot SIX via Gdb-patches
2022-01-04 13:59   ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 02/29] gdb/testsuite: Remove duplicates from gdb.base/miscexprs.exp Lancelot SIX via Gdb-patches
2021-12-10 22:06   ` Pedro Alves
2021-12-14 23:28     ` Lancelot SIX via Gdb-patches
2021-12-15 11:52       ` Pedro Alves
2022-01-04 14:00   ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 03/29] gdb/testsuite: Remove duplicates from gdb.base/interp.exp Lancelot SIX via Gdb-patches
2021-11-22 14:13   ` Pedro Alves
2021-11-22 17:33     ` Lancelot SIX via Gdb-patches
2021-12-10 22:01       ` Pedro Alves
2021-11-21 17:56 ` [PATCH 04/29] gdb/testsuite: Remove duplicates from gdb.base/realname-expand.exp Lancelot SIX via Gdb-patches
2022-01-04 14:06   ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 05/29] gdb/testsuite: Remove duplicates from gdb.base/pie-fork.exp Lancelot SIX via Gdb-patches
2022-01-04 14:07   ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 06/29] gdb/testsuite: Remove duplicates from gdb.base/checkpoint.exp Lancelot SIX via Gdb-patches
2022-01-04 14:11   ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 07/29] gdb/testsuite: Remove duplicates from gdb.base/pending.exp Lancelot SIX via Gdb-patches
2022-01-04 14:12   ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 08/29] gdb/testsuite: Remove duplicates from gdb.base/decl-before-def.exp Lancelot SIX via Gdb-patches
2022-01-04 14:13   ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 09/29] gdb/testsuite: Remove duplicates from gdb.base/solib-display.exp Lancelot SIX via Gdb-patches
2022-01-04 14:17   ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 10/29] gdb/testsuite: Remove duplicates from gdb.base/del.exp Lancelot SIX via Gdb-patches
2022-01-04 14:20   ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 11/29] gdb/testsuite: Remove duplicates from gdb.base/dfp-test.exp Lancelot SIX via Gdb-patches
2022-01-04 14:26   ` Andrew Burgess via Gdb-patches
2022-01-05 22:03     ` Lancelot SIX via Gdb-patches
2022-01-06  9:34       ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 12/29] gdb/testsuite: Remove duplicates from gdb.base/ptype.exp Lancelot SIX via Gdb-patches
2022-01-04 15:13   ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 13/29] gdb/testsuite: Remove duplicates from gdb.base/dfp-exprs.exp Lancelot SIX via Gdb-patches
2021-12-10 23:03   ` Pedro Alves
2021-12-15  0:01     ` Lancelot SIX via Gdb-patches [this message]
2021-12-15 11:54       ` Pedro Alves
2021-11-21 17:56 ` [PATCH 14/29] gdb/testsuite: Remove duplicates from gdb.base/subst.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 15/29] gdb/testsuite: Remove duplicates from gdb.base/complete-empty.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 16/29] gdb/testsuite: Remove duplicates from gdb.base/ui-redirect.exp Lancelot SIX via Gdb-patches
2021-12-10 23:15   ` Pedro Alves
2021-12-15  0:26     ` Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 17/29] gdb/testsuite: Remove duplicates from gdb.base/pretty-array.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 18/29] gdb/testsuite: Remove duplicates from gdb.base/readline.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 19/29] gdb/testsuite: Remove duplicates from gdb.base/exprs.exp Lancelot SIX via Gdb-patches
2021-12-10 23:15   ` Pedro Alves
2021-12-15  0:21     ` Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 20/29] gdb/testsuite: Remove duplicates from gdb.base/set-cfd.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 21/29] gdb/testsuite: Remove duplicates from gdb.base/shlib-call.exp Lancelot SIX via Gdb-patches
2021-12-10 23:24   ` Pedro Alves
2021-12-16 22:57     ` Lancelot SIX via Gdb-patches
2021-12-17 11:58       ` Pedro Alves
2021-11-21 17:56 ` [PATCH 22/29] gdb/testsuite: Remove duplicates from gdb.base/funcargs.exp Lancelot SIX via Gdb-patches
2021-12-10 23:26   ` Pedro Alves
2021-12-16 23:08     ` Lancelot SIX via Gdb-patches
2021-12-17 12:00       ` Pedro Alves
2021-11-21 17:56 ` [PATCH 23/29] gdb/testsuite: Remove duplicates from gdb.base/define-prefix.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 24/29] gdb/testsuite: Remove duplicates from gdb.base/unload.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 25/29] gdb/testsuite: Remove duplicates from gdb.base/pointers.exp Lancelot SIX via Gdb-patches
2021-12-10 23:27   ` Pedro Alves
2021-12-16 23:14     ` Lancelot SIX via Gdb-patches
2021-12-17 12:18       ` Pedro Alves
2021-12-17 23:14         ` Lancelot SIX via Gdb-patches
2022-01-05 16:05           ` Pedro Alves
2021-11-21 17:56 ` [PATCH 26/29] gdb/testsuite: Remove duplicates from gdb.base/call-signal-resume.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 27/29] gdb/testsuite: Remove duplicates from gdb.base/nested-subp2.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 28/29] gdb/testsuite: Remove duplicates from gdb.base/watchpoints.exp Lancelot SIX via Gdb-patches
2021-12-10 23:30   ` Pedro Alves
2021-12-16 23:15     ` Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 29/29] gdb/testsuite: Remove duplicates from gdb.base/corefile-buildid.exp Lancelot SIX via Gdb-patches
2021-12-10 23:38   ` Pedro Alves
2021-12-10 23:40 ` [PATCH 00/29] Remove DUPLICATEs from testsuite/gdb.base/*.exp Pedro Alves
2021-12-18  0:39   ` Lancelot SIX via Gdb-patches
2022-01-05 16:23     ` Pedro Alves
2022-01-07 22:36 ` Lancelot SIX via Gdb-patches

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211215000131.lvdpsdwcrlwyktgh@Plymouth \
    --to=gdb-patches@sourceware.org \
    --cc=lsix@lancelotsix.com \
    --cc=pedro@palves.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox