tcl-js
Version:
tcl-js is a tcl intepreter written completely in Typescript. It is meant to replicate the tcl-sh interpreter as closely as possible.
110 lines (94 loc) • 2.48 kB
YAML
Commands: 'subtests/commands.yml'
Functionality:
# Test if TCL is able to load files
Files:
- name: 'Hello World example'
input:
type: file
value: 'scripts/HelloWorld.tcl'
stdout:
type: file
value: 'results/HelloWorld.txt'
# Test if comments are working
Comments:
- name: Simple
input:
type: raw
value: '# This is a comment'
- name: 'Error on missing semicolon'
input:
type: raw
value: 'puts {Bad comment syntax example} # *Error* - no semicolon!'
output:
type: error
value: ''
Arguments: 'subtests/arguments.yml'
# Test backslash substitution
Backslash Substitution: 'subtests/backslash.yml'
Square Bracket Substitution:
- name: Simple
input:
type: raw
value: 'puts -nonewline [expr 3]'
stdout:
type: raw
value: '3'
- name: Nested
input:
type: raw
value: 'puts -nonewline [expr [expr 3 * 3] * 2]'
stdout:
type: raw
value: '18'
- name: Backslash
input:
type: raw
value: 'set test [puts [puts hi\nhi]]'
stdout:
type: raw
value: "hi\nhi\n\n"
- name: Variables
input:
type: raw
value: 'set test 5; puts -nonewline [expr [expr $test * 3] * 2]'
stdout:
type: raw
value: '30'
Variables: 'subtests/variables.yml'
Math: 'subtests/math.yml'
Lists:
- name: Char after brace
input:
type: raw
value: 'set test "hello {there}general kenobi"; puts [lindex $test 1]'
output:
type: error
- name: Spaces
input:
type: raw
value: 'set test "hello {there} general kenobi"; puts [lindex $test 2]'
stdout:
type: raw
value: "general\n"
- name: Out of list bounds
input:
type: raw
value: 'set test "hello {there} general kenobi"; puts [lindex $test 5]'
stdout:
type: raw
value: "\n"
- name: 'Unfindable word'
input:
type: raw
value: 'set lst "hello there "; lindex $lst 1'
output:
type: output
value: 'there'
Argument Expansion: 'subtests/expand.yml'
Types: 'subtests/types.js'
Scope:
Special: 'subtests/scope.js'
Errors: 'subtests/errors.yml'
Other Tests: 'subtests/main.js'
#Execute examples from ./scripts
Examples: 'subtests/examples.yml'