diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/ChangeLog | 5 | ||||
-rw-r--r-- | test/sortu.awk | 6 | ||||
-rw-r--r-- | test/sortu.ok | 6 |
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--- |