riscv-openocd-wch/jimtcl/tests/pack.test

117 lines
3.1 KiB
Plaintext

source [file dirname [info script]]/testing.tcl
needs cmd pack
test pack-1.1 {pack usage} -body {
pack
} -returnCodes error -result {wrong # args: should be "pack varName value -intle|-intbe|-floatle|-floatbe|-str bitwidth ?bitoffset?"}
test pack-1.2 {pack invalid type} -body {
pack a 1 -badopt 8
} -returnCodes error -result {bad option "-badopt": must be -floatbe, -floatle, -intbe, -intle, or -str}
test pack-1.3 {pack bad width} -body {
pack a 1 -intbe badint
} -returnCodes error -match glob -result {expected integer *but got "badint"}
test pack-1.4 {pack bad width} -body {
pack a 1 -intbe -5
} -returnCodes error -result {bad bitwidth: -5}
test pack-1.5 {pack bad offset} -body {
pack a 1 -intbe 5 badint
} -returnCodes error -match glob -result {expected integer *but got "badint"}
test pack-1.6 {pack bad offset} -body {
pack a 1 -intbe 5 -6
} -returnCodes error -result {bad bitoffset: -6}
test pack-2.1 {pack basic} {
unset -nocomplain a
pack a 65 -intle 8
set a
} {A}
test pack-2.2 {pack append} {
pack a 66 -intle 8 8
set a
} {AB}
test pack-2.3 {pack after end pads with null} {
pack a 67 -intle 8 24
set a
} "AB\x00C"
test pack-2.4 {pack replace} {
pack a 68 -intle 8 16
set a
} "ABDC"
test pack-2.5 {pack str after end pads with null} {
pack a ghi -str 24 40
set a
} "ABDC\x00ghi"
test pack-2.6 {pack str width > string length} {
set a {}
pack a ab -str 32
set a
} "ab\x00\x00"
set badvar {a}
test pack-2.7 {pack bad set} -body {
pack badvar(a) 32 -intle 8
} -returnCodes error -result {can't set "badvar(a)": variable isn't array}
test pack-2.8 {pack bad set} -body {
pack bad\x00var 32 -intle 8
} -returnCodes ok -result {8}
test unpack-1.1 {unpack usage} -body {
unpack
} -returnCodes error -result {wrong # args: should be "unpack binvalue -intbe|-intle|-uintbe|-uintle|-floatbe|-floatle|-str bitpos bitwidth"}
test unpack-1.2 {unpack invalid type} -body {
unpack abc -badopt 0 8
} -returnCodes error -result {bad option "-badopt": must be -floatbe, -floatle, -intbe, -intle, -str, -uintbe, or -uintle}
test unpack-1.3 {unpack bad width} -body {
unpack abc -intle 0 badint
} -returnCodes error -match glob -result {expected integer *but got "badint"}
test unpack-1.4 {unpack bad width} -body {
unpack abc -intle 0 -5
} -returnCodes error -result {bad bitwidth: -5}
test unpack-1.5 {unpack bad offset} -body {
unpack abc -intle badint 8
} -returnCodes error -match glob -result {expected integer *but got "badint"}
test unpack-1.6 {unpack bad offset} -body {
unpack abc -intle -6 8
} -returnCodes error -result {bad bitoffset: -6}
test unpack-1.7 {unpack str not on byte boundary offset} -body {
unpack abc -str 5 8
} -returnCodes error -result {bad bitoffset: 5}
test unpack-1.8 {unpack float bad width} -body {
unpack abc -floatbe 0 24
} -returnCodes error -result {bad bitwidth: 24}
test unpack-2.1 {unpack str width past end} -body {
unpack abc -str 16 16
} -result c
test unpack-2.2 {unpack intle} -body {
format 0x%04x [unpack \x01\x02\x03 -intle 8 16]
} -result 0x0302
test unpack-2.3 {unpack int width past end} -body {
unpack \x01\x02\x03 -intle 16 16
} -result 3
testreport