#!perl

# Copyright (C) 2006-2007, The Perl Foundation.
# $Id: cmd_lset.t 21247 2007-09-13 06:31:01Z paultcochrane $

# the following lines re-execute this as a tcl script
# the \ at the end of these lines makes them a comment in tcl \
use lib qw(languages/tcl/lib tcl/lib lib ../lib ../../lib); # \
use Tcl::Test; #\
__DATA__

source lib/test_more.tcl
plan 12

eval_is {
  set a a
  lset a b
  set a
} b {two arg replace, check variable replacement}

eval_is {
  set a a
  lset a {} b
} b {three arg replace}


eval_is {
  set a "a b c"
  lset a 1 c
} {a c c} {one index}

eval_is {
  set a "a {b c} d"
  lset a 1 0 c
} {a {c c} d} {multiple indices}

eval_is {
  set a "a b c d"
  lset a end e
} {a b c e} {end}

eval_is {lset} \
  {wrong # args: should be "lset listVar index ?index...? value"} \
  {too few args}

eval_is {lset a} \
  {wrong # args: should be "lset listVar index ?index...? value"} \
  {too few args}

eval_is {lset frob b} \
  {can't read "frob": no such variable} \
  {bad variable}

eval_is {
  set a b
  lset a 3 b
} {list index out of range} \
  {list index out of range}

eval_is {
  set a "a b c d"
  lset a end--1 e
} {list index out of range} \
  {list index out of range}

eval_is {
  set a "a b c d"
  lset a -1 e
} {list index out of range} \
  {list index out of range}

eval_is {
  set a b
  lset a 3.2 b
} {bad index "3.2": must be integer?[+-]integer? or end?[+-]integer?} \
  {float index}


syntax highlighted by Code2HTML, v. 0.9.1