#!/usr/bin/env tclkit
# %renumber<^\s*test >%
source [file join [file dir [info script]] initests.tcl]
test 0 {load ratcl package} {
if {[file exists src_tcl/ratcl.tcl]} {
source src_tcl/ratcl.tcl
} else {
source library/ratcl.tcl
}
package require ratcl
} 4
test 1 {} {
view {A B} def {1 2 11 22 111 222} | reverse | get
} {111 222 11 22 1 2}
test 2 {} {
view {A B} def {1 2 11 22 111 222} | reverse | dump
} { \
A B
--- ---
111 222
11 22
1 2 }
test 3 {} {
view 3 | dump
} { (3 rows, no columns)}
test 4 {} {
view "" | dump
} { \
name type subv
---- ---- ----}
# tests copied from v3
set v [view {A B C} def {1 2 3 11 22 33 111 222 333}]
test 5 {} {
view $v names
} {A B C}
test 6 {} {
view $v types
} {S S S}
test 7 {} {
view $v width
} 3
test 8 {} {
vlerq get $v *
} {{1 2 3} {11 22 33} {111 222 333}}
test 9 {} {
view $v first 2 | get *
} {{1 2 3} {11 22 33}}
test 10 {} {
view $v last 2 | get *
} {{11 22 33} {111 222 333}}
test 11 {} {
view $v reverse | get *
} {{111 222 333} {11 22 33} {1 2 3}}
test 12 {} {
view $v repeat 2 | get *
} {{1 2 3} {11 22 33} {111 222 333} {1 2 3} {11 22 33} {111 222 333}}
test 13 {} {
view $v spread 2 | get *
} {{1 2 3} {1 2 3} {11 22 33} {11 22 33} {111 222 333} {111 222 333}}
test 14 {} {
view $v dump
} { \
A B C
--- --- ---
1 2 3
11 22 33
111 222 333}
test 15 {} -body {
view $v html
} -match glob -result {
| A | B | C |
0 | 1 | 2 | 3 |
1 | 11 | 22 | 33 |
2 | 111 | 222 | 333 |
}
test 16 {} {
namespace eval blah {
namespace import ::ratcl::vopdef
vopdef haha {v} { return abc }
}
view - haha
} {abc}
namespace forget blah
test 17 {transpose} {
set v [view {A B C} def {1 2 3 4 5 6 7 8 9} | transpose]
list [view $v names] [view $v structure] [view $v get]
} {{x0 x1 x2} SSS {1 4 7 2 5 8 3 6 9}}
test 18 {transpose ints} {
set v [view {A:I B:I C:I} def {1 2 3 4 5 6 7 8 9} | transpose X:I]
list [view $v names] [view $v structure] [view $v get]
} {{X0 X1 X2} III {1 4 7 2 5 8 3 6 9}}
test 19 {use vop} {
view 1 use 2
} 2
test 20 {do vop} {
set T [view {A B C D} def {a b c d a b e f b c e f e d c d e d e f a b d e}]
view $T do {
transpose
get
}
} {a a b e e a b b c d d b c e e c e d d f f d f e}
test 21 {debug vop} -body {
set T [view {A B C D} def {a b c d a b e f b c e f e d c d e d e f a b d e}]
view $T debug transpose | get
} -match glob -output {\
rows-in col msec view-operation
------- --- ---- --------------
6 4 ?? transpose
4 6 ---- --------------
} -result {a a b e e a b b c d d b c e e c e d d f f d f e}
test 22 {use and debug vops} -body {
view - debug {
use {A B}
def {1 2 3 4 5 6}
transpose
get
}
} -result {1 3 5 2 4 6} -match glob -output {\
rows-in col msec view-operation
------- --- ---- --------------
?? use {A B}
?? def {1 2 3 4 5 6}
3 2 ?? transpose
2 3 ?? get
------- --- ---- --------------
}
test 23 {debug comments} -body {
view $T debug {
# start
transpose
# empty lines are not shown
structure
# end
}
} -result SSSSSS -match glob -output {\
rows-in col msec view-operation
------- --- ---- --------------
# start
6 4 ?? transpose
# empty lines are not shown
4 6 ?? structure
# end
------- --- ---- --------------
}
test 24 {frequency table} {
view A def {a b a b b c} | freq N | get
} {a 2 b 3 c 1}
test 25 {frequency table on unique values} {
view A def {b a c} | freq N | get
} {b 1 a 1 c 1}
test 26 {frequency table on a single value} {
view A def {a a a a} | freq N | get
} {a 4}
test 27 {} {
view {1 2 3} asview A:I | structdesc
} A:I
test 28 {} {
view {1 2 3} asview A | structdesc
} A:S
test 29 {} {
view 10 asview len:I | get
} 10
test 30 {} {
view [view 10 asview len:I] min len 50
} 10
test 31 {} {
set v [vlerq def {A B} {1 a 1 b 1 b 2 c 3 c}]
view $v project A | get
} {1 2 3}
test 32 {} {
view $v project B | get
} {a b c}
test 33 {} {
view $v project A B | get
} {1 a 1 b 2 c 3 c}
test 34 {} {
view $v project | get
} {}
test 35 {} {
view A:I def {1 2 3 4 5 6 9 10 11 12} | pick {1 1 0 1 1 0 0 1 1 0} | get
} {1 2 4 5 10 11}
test 36 {} {
set v [vlerq def {A B} {1 2 3 4}]
set w [vlerq reverse $v]
} {data {mdef {A B}} {3 1} {4 2}}
test 37 {} {
set v [vlerq def {A B} {1 2 3 4}]
set w [vlerq reverse $v]
vlerq pair $v $w
} {data {mdef {A B A B}} {1 3} {2 4} {3 1} {4 2}}
test 38 {} {
set v [vlerq def {A B} {1 2 3 4}]
set w [vlerq reverse $v]
view $v pair $w | get
} {1 2 3 4 3 4 1 2}
test 39 {} {
set v [vlerq def {A B} {1 2 3 4}]
set w [vlerq reverse $v]
# 2006-12-08 failed because dump could not handle duplicate column names
view $v pair $w | dump
} { \
A B A B
- - - -
1 2 3 4
3 4 1 2}
test 40 {} -body {
set v [vlerq def {A B} {1 2 3 4}]
set w [vlerq reverse $v]
view $v pair $w | html
} -match glob -result {