# # Tests for "toaster" example # ---------------------------------------------------------------------- # AUTHOR: Michael J. McLennan # Bell Labs Innovations for Lucent Technologies # mmclennan@lucent.com # http://www.tcltk.com/itcl # # RCS: $Id: toaster.test,v 1.1 1998/07/27 18:41:26 stanton Exp $ # ---------------------------------------------------------------------- # Copyright (c) 1993-1998 Lucent Technologies, Inc. # ====================================================================== # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # ---------------------------------------------------------------------- # Get toaster classes from "demos" directory. # ---------------------------------------------------------------------- lappend auto_path toasters # ---------------------------------------------------------------------- # Outlets send bills to an e-mail address. Determine this address. # ---------------------------------------------------------------------- if {[info exists env(USER)]} { set Owner $env(USER) } elseif {[info exists env(LOGNAME)]} { set Owner $env(LOGNAME) } else { set Owner [exec logname] } # ---------------------------------------------------------------------- # TOASTERS # ---------------------------------------------------------------------- test {Create a toaster and plug it in} { global Owner Toaster original -heat 1 -outlet [Outlet #auto -owner $Owner] } { $result == "original" } test {Turn up the heat setting on the toaster} { original config -heat 5 } { $result == "" } test {Toast a few slices of bread} { original toast 2 } { $result == "crumb tray: 25% full" } test {Clean the toaster} { original clean } { $result == "crumb tray: 0% full" } test {Toast a few slices of bread a few different times} { original clean original toast 2 original toast 1 } { $result == "crumb tray: 38% full" } test {Toast too many slices of bread and cause a fire} { puts stdout ">>> should say \"== FIRE! FIRE! ==\"" original clean original toast 2 original toast 2 original toast 2 original toast 2 } { $result == "crumb tray: 100% full" } test {Destroy the toaster} { original clean original toast 2 original toast 1 puts stdout ">>> should say \"15 crumbs ... what a mess!\"" original delete } { $result == "" } # ---------------------------------------------------------------------- # SMART TOASTERS # ---------------------------------------------------------------------- test {Create a toaster and plug it in} { global Owner SmartToaster deluxe -heat 4 -outlet [Outlet #auto -owner $Owner] } { $result == "deluxe" } test {Toast a few slices of bread} { deluxe toast 2 } { $result == "crumb tray: 20% full" } test {Toast a few slices of bread and look for auto-clean} { deluxe clean deluxe toast 2 deluxe toast 2 deluxe toast 2 deluxe toast 2 deluxe toast 2 } { $result == "crumb tray: 20% full" } # ---------------------------------------------------------------------- # PRODUCT STATISTICS # ---------------------------------------------------------------------- test {Check statistics gathered by Hazard base class} { set tmp [Toaster #auto] set stats [Hazard :: report ::Toaster] $tmp delete set stats } { $result == "::Toaster: 2 produced, 1 active, 1 accidents" } test {Check statistics gathered by Hazard base class} { Hazard :: report ::SmartToaster } { $result == "::SmartToaster: 1 produced, 1 active, 0 accidents" } test {Destroy all Toasters} { foreach toaster [itcl_info objects -isa Toaster] { $toaster clean $toaster delete } } { $result == "" } test {SmartToasters should have been destroyed along with Toasters} { itcl_info objects -class SmartToaster } { $result == "" } # ---------------------------------------------------------------------- # OUTLETS # ---------------------------------------------------------------------- test {Bill all customers for outlet charges} { Outlet :: bill puts stdout ">>> should send two bills for outlets via e-mail" } { $result == "" } test {Destroy all outlets} { foreach outlet [itcl_info objects -class Outlet] { $outlet delete } } { $result == "" }