go-pattern-examples/behavior/10_state/state_test.go

53 lines
970 B
Go

package state
import (
"testing"
"time"
)
func TestRobotState(t *testing.T) {
robot := NewSportRobot("home keeper")
//主动驱动行为
robot.Move()
//跑
robot.UpdateState(&RuningState{})
//跑一会
time.Sleep(time.Millisecond * 234)
//走
robot.UpdateState(&WalkState{})
//走一会儿
time.Sleep(time.Millisecond * 544)
//继续跑
robot.UpdateState(&RuningState{})
}
func TestAlarmState(t *testing.T) {
expect := "vibrating humming ... vibrating humming...vibrating humming..." +
"vibrating humming ... vibrating humming...vibrating humming..." +
"sun rise ,get up ,get up get up..."
//创建一个手机闹铃
mobile := NewAlert()
ringsSounds := mobile.Alert()
//叠加振铃声音,振铃响两遍
ringsSounds += mobile.Alert()
//设置振铃的铃声
mobile.SetState(&AlertSong{})
ringsSounds += mobile.Alert()
if ringsSounds != expect {
t.Errorf("Expect result to equal %s, but %s.\n", expect, ringsSounds)
}
}