aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/ChangeLog5
-rw-r--r--test/sortu.awk6
-rw-r--r--test/sortu.ok6
3 files changed, 13 insertions, 4 deletions
diff --git a/test/ChangeLog b/test/ChangeLog
index e4ad2f33..2c6bec54 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,8 @@
+2011-07-28 Arnold D. Robbins <arnold@skeeve.com>
+
+ * sortu.awk, sortu.ok: Modified to make numeric comparison do
+ a stable sort. Thanks to Peter Fales <Peter.Fales@alcatel-lucent.com>.
+
2011-07-26 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.am (getline4, gsubtst8): New tests.
diff --git a/test/sortu.awk b/test/sortu.awk
index b4d30138..508dc07f 100644
--- a/test/sortu.awk
+++ b/test/sortu.awk
@@ -16,8 +16,12 @@ function comp_idx_num(s1, v1, s2, v2)
}
# ascending value number
-function comp_val_num(s1, v1, s2, v2)
+function comp_val_num(s1, v1, s2, v2, num)
{
+ num = "^[-+]?([0-9]+[.]?[0-9]*|[.][0-9]+)([eE][-+]?[0-9]+)?$"
+ # force stable sort, compare as strings if not numeric
+ if ((v1 - v2) == 0 && (v1 !~ num || v2 !~ num))
+ return comp_val_str(s1, v1, s2, v2)
return (v1 - v2)
}
diff --git a/test/sortu.ok b/test/sortu.ok
index ba9ac997..06dcd94d 100644
--- a/test/sortu.ok
+++ b/test/sortu.ok
@@ -13,9 +13,9 @@ rat tar
100 5
4 1
--- asort(a, b, "comp_val_num"), IGNORECASE = 0---
-[1] :barz barz
-[2] :blattt blattt
-[3] :Zebra Zebra
+[1] :barz Zebra
+[2] :blattt barz
+[3] :Zebra blattt
[4] :1234 234
[5] :234 1234
--- asort(a, b, "comp_val_str"), IGNORECASE = 0---