Index: tests/ciphers.test
==================================================================
--- tests/ciphers.test
+++ tests/ciphers.test
@@ -24,130 +24,105 @@
 # One of these should == 1, depending on what type of ssl library
 # tls was compiled against. (RSA BSAFE SSL-C or OpenSSL).
 #
 set ::tcltest::testConstraints(rsabsafe) 0
 set ::tcltest::testConstraints(openssl) 1
+
+set ::EXPECTEDCIPHERS(rsabsafe) {
+    EDH-DSS-RC4-SHA
+    EDH-RSA-DES-CBC3-SHA
+    EDH-DSS-DES-CBC3-SHA
+    DES-CBC3-SHA
+    RC4-SHA
+    RC4-MD5
+    EDH-RSA-DES-CBC-SHA
+    EDH-DSS-DES-CBC-SHA
+    DES-CBC-SHA
+    EXP-EDH-DSS-DES-56-SHA
+    EXP-EDH-DSS-RC4-56-SHA
+    EXP-DES-56-SHA
+    EXP-RC4-56-SHA
+    EXP-EDH-RSA-DES-CBC-SHA
+    EXP-EDH-DSS-DES-CBC-SHA
+    EXP-DES-CBC-SHA
+    EXP-RC2-CBC-MD5
+    EXP-RC4-MD5
+}
+
+set ::EXPECTEDCIPHERS(openssl) {
+    AES128-SHA
+    AES256-SHA
+    DES-CBC-SHA
+    DES-CBC3-SHA
+    DHE-DSS-AES128-SHA
+    DHE-DSS-AES256-SHA
+    DHE-DSS-RC4-SHA
+    DHE-RSA-AES128-SHA
+    DHE-RSA-AES256-SHA
+    EDH-DSS-DES-CBC-SHA
+    EDH-DSS-DES-CBC3-SHA
+    EDH-RSA-DES-CBC-SHA
+    EDH-RSA-DES-CBC3-SHA
+    EXP-DES-CBC-SHA
+    EXP-EDH-DSS-DES-CBC-SHA
+    EXP-EDH-RSA-DES-CBC-SHA
+    EXP-RC2-CBC-MD5
+    EXP-RC4-MD5
+    EXP1024-DES-CBC-SHA
+    EXP1024-DHE-DSS-DES-CBC-SHA
+    EXP1024-DHE-DSS-RC4-SHA
+    EXP1024-RC2-CBC-MD5
+    EXP1024-RC4-MD5
+    EXP1024-RC4-SHA
+    IDEA-CBC-SHA
+    RC4-MD5
+    RC4-SHA
+}
+
+proc listcompare {wants haves} {
+    array set want {}
+    array set have {}
+    foreach item $wants { set want($item) 1 }
+    foreach item $haves { set have($item) 1 }
+    foreach item [lsort -dictionary [array names have]] {
+	if {[info exists want($item)]} {
+	    unset want($item) have($item)
+	}
+    }
+    if {[array size want] || [array size have]} {
+	return [list MISSING [array names want] UNEXPECTED [array names have]]
+    }
+}
 
 test ciphers-1.1 {Tls::ciphers for ssl3} {rsabsafe} {
     # This will fail if you compiled against OpenSSL.
     # Change the constraint setting above.
-    set result [join [eval tls::ciphers ssl3] \n ]
-} {EDH-DSS-RC4-SHA
-EDH-RSA-DES-CBC3-SHA
-EDH-DSS-DES-CBC3-SHA
-DES-CBC3-SHA
-RC4-SHA
-RC4-MD5
-EDH-RSA-DES-CBC-SHA
-EDH-DSS-DES-CBC-SHA
-DES-CBC-SHA
-EXP-EDH-DSS-DES-56-SHA
-EXP-EDH-DSS-RC4-56-SHA
-EXP-DES-56-SHA
-EXP-RC4-56-SHA
-EXP-EDH-RSA-DES-CBC-SHA
-EXP-EDH-DSS-DES-CBC-SHA
-EXP-DES-CBC-SHA
-EXP-RC2-CBC-MD5
-EXP-RC4-MD5}
+    listcompare $::EXPECTEDCIPHERS(rsabsafe) [tls::ciphers ssl3]
+} {}
 
 test ciphers-1.2 {Tls::ciphers for tls1} {rsabsafe} {
     # This will fail if you compiled against OpenSSL.
     # Change the constraint setting above.
-    set result [join [eval tls::ciphers tls1] \n ]
-} {EDH-DSS-RC4-SHA
-EDH-RSA-DES-CBC3-SHA
-EDH-DSS-DES-CBC3-SHA
-DES-CBC3-SHA
-RC4-SHA
-RC4-MD5
-EDH-RSA-DES-CBC-SHA
-EDH-DSS-DES-CBC-SHA
-DES-CBC-SHA
-EXP-EDH-DSS-DES-56-SHA
-EXP-EDH-DSS-RC4-56-SHA
-EXP-DES-56-SHA
-EXP-RC4-56-SHA
-EXP-EDH-RSA-DES-CBC-SHA
-EXP-EDH-DSS-DES-CBC-SHA
-EXP-DES-CBC-SHA
-EXP-RC2-CBC-MD5
-EXP-RC4-MD5}
+    listcompare $::EXPECTEDCIPHERS(rsabsafe) [tls::ciphers tls1]
+} {}
 
 test ciphers-1.3 {Tls::ciphers for ssl3} {openssl} {
     # This will fail if you compiled against RSA bsafe or with a
     # different set of defines than the default.
     # Change the constraint setting above.
-    set result [join [lsort -dict [eval tls::ciphers ssl3]] \n ]
-} [join [lsort -dict {
-AES128-SHA
-AES256-SHA
-DES-CBC-SHA
-DES-CBC3-SHA
-DHE-DSS-AES128-SHA
-DHE-DSS-AES256-SHA
-DHE-DSS-RC4-SHA
-DHE-RSA-AES128-SHA
-DHE-RSA-AES256-SHA
-EDH-DSS-DES-CBC-SHA
-EDH-DSS-DES-CBC3-SHA
-EDH-RSA-DES-CBC-SHA
-EDH-RSA-DES-CBC3-SHA
-EXP-DES-CBC-SHA
-EXP-EDH-DSS-DES-CBC-SHA
-EXP-EDH-RSA-DES-CBC-SHA
-EXP-RC2-CBC-MD5
-EXP-RC4-MD5
-EXP1024-DES-CBC-SHA
-EXP1024-DHE-DSS-DES-CBC-SHA
-EXP1024-DHE-DSS-RC4-SHA
-EXP1024-RC2-CBC-MD5
-EXP1024-RC4-MD5
-EXP1024-RC4-SHA
-IDEA-CBC-SHA
-RC4-MD5
-RC4-SHA
-}] \n]
+    listcompare $::EXPECTEDCIPHERS(openssl) [tls::ciphers ssl3]
+} {}
 
 # This version of the test is correct for OpenSSL only.
 # An equivalent test for the RSA BSAFE SSL-C is earlier in this file.
 
 test ciphers-1.4 {Tls::ciphers for tls1} {openssl} {
     # This will fail if you compiled against RSA bsafe or with a
     # different set of defines than the default.
     # Change the constraint setting in all.tcl
-    set result [join [lsort -dict [eval tls::ciphers tls1]] \n ]
-} [join [lsort -dict {
-AES128-SHA
-AES256-SHA
-DES-CBC-SHA
-DES-CBC3-SHA
-DHE-DSS-AES128-SHA
-DHE-DSS-AES256-SHA
-DHE-DSS-RC4-SHA
-DHE-RSA-AES128-SHA
-DHE-RSA-AES256-SHA
-EDH-DSS-DES-CBC-SHA
-EDH-DSS-DES-CBC3-SHA
-EDH-RSA-DES-CBC-SHA
-EDH-RSA-DES-CBC3-SHA
-EXP-DES-CBC-SHA
-EXP-EDH-DSS-DES-CBC-SHA
-EXP-EDH-RSA-DES-CBC-SHA
-EXP-RC2-CBC-MD5
-EXP-RC4-MD5
-EXP1024-DES-CBC-SHA
-EXP1024-DHE-DSS-DES-CBC-SHA
-EXP1024-DHE-DSS-RC4-SHA
-EXP1024-RC2-CBC-MD5
-EXP1024-RC4-MD5
-EXP1024-RC4-SHA
-IDEA-CBC-SHA
-RC4-MD5
-RC4-SHA
-}] \n]
-
+    listcompare $::EXPECTEDCIPHERS(openssl) [tls::ciphers tls1]
+} {}
 
 
 # cleanup
 ::tcltest::cleanupTests
 return