maybe I'm missing something obvious...

I've defined a '===' operator for my class, but it doesn't seem to get 
called by case.  Here's the code:

class StateType
  attr_accessor :state
  def initialize(*states)
    @states = states
    @state  = states[0]
  end


  def ===(state)
    puts "StateType::==="
    @state == state
  end


  def assign(state)
    raise "Not a valid state: #{state}" unless @states.include? state
    @state = state
  end

  def <<(state)
    assign(state)
  end
 
end

def what(s)
  case s
  when :start
    "START"
  when :wash
    "WASH"
  when :rinse
    "RINSE"
  when :spin
    "SPIN"
  when :stop
    "STOP"
  else 
    "DUNNO"
  end
end

#this returns true:
 fsmt === :start #=> prints "StateType::==="

what(fsmt)
#=> returns "DUNNO"

(and "StateType::===" is not printed)

What gives?

Phil