# queue.test: tests for the queue package. # # This file contains a collection of tests for one or more of the Tcl # built-in commands. Sourcing this file into Tcl runs the tests and # generates output for errors. No output means no errors were found. # # Copyright (c) 1998-2000 by Scriptics Corporation. # All rights reserved. # # RCS: @(#) $Id: queue.test,v 1.1 2000/02/05 03:20:21 ericm Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest namespace import ::tcltest::* } package require struct namespace import struct::* test queue-0.1 {queue errors} { queue myqueue catch {queue myqueue} msg myqueue destroy set msg } "command \"myqueue\" already exists, unable to create queue" test queue-0.2 {queue errors} { queue myqueue catch {myqueue} msg myqueue destroy set msg } "wrong # args: should be \"myqueue option ?arg arg ...?\"" test queue-0.3 {queue errors} { queue myqueue catch {myqueue foo} msg myqueue destroy set msg } "bad option \"foo\": must be clear, destroy, get, peek, put, or size" test queue-0.4 {queue errors} { catch {::struct::queue::QueueProc myqueue} msg set msg } "unknown queue \"myqueue\"" test queue-0.5 {queue errors} { catch {queue set} msg set msg } "command \"set\" already exists, unable to create queue" test queue-1.1 {queue creation} { set foo [queue myqueue] set cmd [info commands ::myqueue] set size [myqueue size] myqueue destroy list $foo $cmd $size } {myqueue ::myqueue 0} test queue-1.2 {queue creation} { set foo [queue] set cmd [info commands ::$foo] set size [$foo size] $foo destroy list $foo $cmd $size } {queue1 ::queue1 0} test queue-2.1 {queue destroy} { queue myqueue myqueue destroy info commands ::myqueue } {} test queue-2.2 {queue destroy} { queue myqueue myqueue destroy catch {::struct::queue::QueueProc myqueue} msg set msg } "unknown queue \"myqueue\"" test queue-3.2 {size operation} { queue myqueue myqueue put a b c d e f g set size [myqueue size] myqueue destroy set size } 7 test queue-3.3 {size operation} { queue myqueue myqueue put a b c d e f g myqueue get 3 set size [myqueue size] myqueue destroy set size } 4 test queue-3.4 {size operation} { queue myqueue myqueue put a b c d e f g myqueue get 3 myqueue peek 3 set size [myqueue size] myqueue destroy set size } 4 test queue-4.1 {put operation} { queue myqueue catch {myqueue put} msg myqueue destroy set msg } "wrong # args: should be \"myqueue put item ?item ...?\"" test queue-4.2 {put operation, singleton items} { queue myqueue myqueue put a myqueue put b myqueue put c set result [list [myqueue get] [myqueue get] [myqueue get]] myqueue destroy set result } "a b c" test queue-4.3 {put operation, multiple items} { queue myqueue myqueue put a b c set result [list [myqueue get] [myqueue get] [myqueue get]] myqueue destroy set result } "a b c" test queue-4.4 {put operation, spaces in items} { queue myqueue myqueue put a b "foo bar" set result [list [myqueue get] [myqueue get] [myqueue get]] myqueue destroy set result } [list a b "foo bar"] test queue-4.5 {put operation, bad chars in items} { queue myqueue myqueue put a b \{ set result [list [myqueue get] [myqueue get] [myqueue get]] myqueue destroy set result } [list a b \{] test queue-5.1 {get operation} { queue myqueue myqueue put a myqueue put b myqueue put c set result [list [myqueue get] [myqueue get] [myqueue get]] myqueue destroy set result } [list a b c] test queue-5.2 {get operation, multiple items} { queue myqueue myqueue put a myqueue put b myqueue put c set result [myqueue get 3] myqueue destroy set result } [list a b c] test queue-6.1 {peek operation} { queue myqueue myqueue put a myqueue put b myqueue put c set result [list [myqueue peek] [myqueue peek] [myqueue peek]] myqueue destroy set result } [list a a a] test queue-6.2 {get operation, multiple items} { queue myqueue myqueue put a myqueue put b myqueue put c set result [list [myqueue peek 3] [myqueue get 3]] myqueue destroy set result } [list [list a b c] [list a b c]] test queue-7.1 {clear operation} { queue myqueue myqueue put a myqueue put b myqueue put c set result [list [myqueue peek 3]] myqueue clear lappend result [myqueue size] myqueue destroy set result } [list [list a b c] 0] ::tcltest::cleanupTests