workflow::test::array_lists_equal_p (public)

 workflow::test::array_lists_equal_p list1 list2

Defined in packages/workflow/tcl/test/workflow-test-procs.tcl

Are the two lists equal?

Parameters:
list1 (required)
list2 (required)

Partial Call Graph (max 5 caller/called nodes):
%3 workflow::test::run_bug_tracker_test workflow::test::run_bug_tracker_test (public) workflow::test::array_lists_equal_p workflow::test::array_lists_equal_p workflow::test::run_bug_tracker_test->workflow::test::array_lists_equal_p

Testcases:
No testcase defined.
Source code:
    set len1 [llength $list1]
    set len2 [llength $list2]

    if { $len1 != $len2 } {
        return 0
    }

    if { $len1 == 1 } {

        # Single element list

        return [string equal [lindex $list1 0] [lindex $list2 0]]
    } elseif { ($len1 % 2)== 0 } {

        # List, treat as array-list

        array set array1 $list1
        array set array2 $list2
        
        foreach name [lsort [array names array1]] {
            if { ![info exists array2($name)] } {
                # Element in 1 doesn't exist in 2
                return 0
            }

            set elm1 $array1($name)
            set elm2 $array2($name)

            if { ![array_lists_equal_p $elm1 $elm2] } {
                return 0
            }
        }
    } else {
        
        # List, treat as normal list
        
        foreach elm1 $list1 elm2 $list2 {
            if { ![array_lists_equal_p $elm1 $elm2] } {
                return 0
            }
        }
    }

    return 1
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: