Blame testing/060_command_switch.tcl

Packit 1c1d7e
#// objective: tests processing of switch, only references/referencedby relations are relevant
Packit 1c1d7e
#// check: 060__command__switch_8tcl.xml
Packit 1c1d7e
#// config: REFERENCED_BY_RELATION = yes
Packit 1c1d7e
#// config: REFERENCES_RELATION = yes
Packit 1c1d7e
#// config: EXTRACT_ALL = yes
Packit 1c1d7e
#// config: INLINE_SOURCES = no
Packit 1c1d7e
Packit 1c1d7e
##
Packit 1c1d7e
# \brief should be reference by every proc below
Packit 1c1d7e
proc Invoked args {
Packit 1c1d7e
    puts "Procedure \"Invoked\" is invoked indeed. Ok."
Packit 1c1d7e
    return $args
Packit 1c1d7e
}
Packit 1c1d7e
##
Packit 1c1d7e
# \brief must not be reference by every proc below
Packit 1c1d7e
proc NotInvoked args {
Packit 1c1d7e
    puts "Procedure \"NotInvoked\" is invoked. Not Ok!"
Packit 1c1d7e
    return $args
Packit 1c1d7e
}
Packit 1c1d7e
#
Packit 1c1d7e
# check if call references work at all
Packit 1c1d7e
proc a args {
Packit 1c1d7e
    Invoked NotInvoked
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
#
Packit 1c1d7e
# switch command
Packit 1c1d7e
# switch ?options? string pattern body ?pattern body ...? 
Packit 1c1d7e
proc b args {
Packit 1c1d7e
    switch value NotInvoked {
Packit 1c1d7e
        } NotInvoked {
Packit 1c1d7e
        } default {
Packit 1c1d7e
            Invoked
Packit 1c1d7e
        }
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
proc c args {
Packit 1c1d7e
    switch value NotInvoked {
Packit 1c1d7e
        } [Invoked] {
Packit 1c1d7e
        } default {
Packit 1c1d7e
        }
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
proc d args {
Packit 1c1d7e
    switch NotInvoked pattern {
Packit 1c1d7e
        } [Invoked] {
Packit 1c1d7e
        } default {
Packit 1c1d7e
        }
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
proc e args {
Packit 1c1d7e
    switch [Invoked] pattern {
Packit 1c1d7e
        } NotInvoked {
Packit 1c1d7e
        } default {
Packit 1c1d7e
        }
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
proc f args {
Packit 1c1d7e
    switch -exact value pattern {
Packit 1c1d7e
        } NotInvoked {
Packit 1c1d7e
        } default {
Packit 1c1d7e
            Invoked
Packit 1c1d7e
        }
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
proc g args {
Packit 1c1d7e
    switch -exact -- value pattern {
Packit 1c1d7e
        } NotInvoked {
Packit 1c1d7e
        } default {
Packit 1c1d7e
            Invoked
Packit 1c1d7e
        }
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
proc h args {
Packit 1c1d7e
    switch -exact -- -value pattern {
Packit 1c1d7e
        } NotInvoked {
Packit 1c1d7e
        } default {
Packit 1c1d7e
            Invoked
Packit 1c1d7e
        }
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
# switch ?options? string {pattern body ?pattern body ...?} 
Packit 1c1d7e
proc i args {
Packit 1c1d7e
    switch value {
Packit 1c1d7e
        NotInvoked {
Packit 1c1d7e
        }
Packit 1c1d7e
        NotInvoked {
Packit 1c1d7e
        }
Packit 1c1d7e
        default {
Packit 1c1d7e
            Invoked
Packit 1c1d7e
        }
Packit 1c1d7e
    }
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
proc j args {
Packit 1c1d7e
    switch vale {
Packit 1c1d7e
        NotInvoked {
Packit 1c1d7e
        }
Packit 1c1d7e
        [NotInvoked] {
Packit 1c1d7e
        }
Packit 1c1d7e
        default {
Packit 1c1d7e
            Invoked
Packit 1c1d7e
        }
Packit 1c1d7e
    }
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
proc k args {
Packit 1c1d7e
    switch NotInvoked {
Packit 1c1d7e
        [NotInvoked] {
Packit 1c1d7e
        }
Packit 1c1d7e
        NotInvoked {
Packit 1c1d7e
            Invoked
Packit 1c1d7e
        }
Packit 1c1d7e
        default {
Packit 1c1d7e
        }
Packit 1c1d7e
    }
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
proc l args {
Packit 1c1d7e
    switch [Invoked] {
Packit 1c1d7e
        pattern {
Packit 1c1d7e
        }
Packit 1c1d7e
        NotInvoked {
Packit 1c1d7e
        }
Packit 1c1d7e
        default {
Packit 1c1d7e
        }
Packit 1c1d7e
    }
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
proc m args {
Packit 1c1d7e
    switch -exact value {
Packit 1c1d7e
        pattern {
Packit 1c1d7e
        }
Packit 1c1d7e
        NotInvoked {
Packit 1c1d7e
        }
Packit 1c1d7e
        default {
Packit 1c1d7e
            Invoked
Packit 1c1d7e
        }
Packit 1c1d7e
    }
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
proc n args {
Packit 1c1d7e
    switch -exact -- value {
Packit 1c1d7e
        pattern {
Packit 1c1d7e
        }
Packit 1c1d7e
        NotInvoked {
Packit 1c1d7e
        }
Packit 1c1d7e
        default {
Packit 1c1d7e
            Invoked
Packit 1c1d7e
        }
Packit 1c1d7e
    }
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
proc o args {
Packit 1c1d7e
    switch -exact -- -value {
Packit 1c1d7e
        pattern {
Packit 1c1d7e
        }
Packit 1c1d7e
        NotInvoked {
Packit 1c1d7e
        }
Packit 1c1d7e
        default {
Packit 1c1d7e
            Invoked
Packit 1c1d7e
        }
Packit 1c1d7e
    }
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
proc p args {
Packit 1c1d7e
    switch -exact -- inquotes {
Packit 1c1d7e
        "inquotes" {
Packit 1c1d7e
            Invoked
Packit 1c1d7e
        }
Packit 1c1d7e
        default {
Packit 1c1d7e
        }
Packit 1c1d7e
    }
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
proc q args {
Packit 1c1d7e
    switch -exact -- "in quotes" {
Packit 1c1d7e
        "in quotes" {
Packit 1c1d7e
            Invoked
Packit 1c1d7e
        }
Packit 1c1d7e
        default {
Packit 1c1d7e
        }
Packit 1c1d7e
    }
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
proc r args {
Packit 1c1d7e
    switch -exact -- inbraces {
Packit 1c1d7e
        {inbraces} {
Packit 1c1d7e
            Invoked
Packit 1c1d7e
        }
Packit 1c1d7e
        default {
Packit 1c1d7e
        }
Packit 1c1d7e
    }
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
proc s args {
Packit 1c1d7e
    switch -exact -- {in braces} {
Packit 1c1d7e
        {in braces} {
Packit 1c1d7e
            Invoked
Packit 1c1d7e
        }
Packit 1c1d7e
        default {
Packit 1c1d7e
        }
Packit 1c1d7e
    }
Packit 1c1d7e
    return
Packit 1c1d7e
}
Packit 1c1d7e
# wrong syntax
Packit 1c1d7e
#proc x args {
Packit 1c1d7e
#    catch {switch -exact -- [Invoked] pattern1 NotInvoked pattern2}
Packit 1c1d7e
#    return
Packit 1c1d7e
#}
Packit 1c1d7e
# The current version does not check the last argument beforehand.
Packit 1c1d7e
# Therefore, all script elements are evaluated as scripts before
Packit 1c1d7e
# the parser detects the dangling pattern. It throws a warning, at the very least.
Packit 1c1d7e
# Anyway, for working code the documentation will be correct.
Packit 1c1d7e
#proc y args {
Packit 1c1d7e
#    catch {switch -exact -- [Invoked] {
Packit 1c1d7e
#        pattern {
Packit 1c1d7e
#            NotInvoked
Packit 1c1d7e
#        }
Packit 1c1d7e
#        NotInvoked {
Packit 1c1d7e
#            NotInvoked
Packit 1c1d7e
#        }
Packit 1c1d7e
#        default {
Packit 1c1d7e
#            NotInvoked
Packit 1c1d7e
#        }
Packit 1c1d7e
#        pattern
Packit 1c1d7e
#    }}
Packit 1c1d7e
#    return
Packit 1c1d7e
#}
Packit 1c1d7e
#
Packit 1c1d7e
# call all single letter procs
Packit 1c1d7e
# let tcl check what is called and what is not called
Packit 1c1d7e
foreach p [info procs ?] {
Packit 1c1d7e
    puts "Check procedure \"$p\""
Packit 1c1d7e
    $p
Packit 1c1d7e
}
Packit 1c1d7e
exit
Packit 1c1d7e