anchor.diff:          is_binary(Message#erlchat_message.topic_id) andalso
           Message#erlchat_message.topic_id =/= <<>> andalso
           is_binary(Message#erlchat_message.text) andalso
  -        Message#erlchat_message.text =/= <<>>.
  +        Message#erlchat_message.text =/= <<>>;
   
  +is_valid(User=#erlchat_user{}) ->
  +        is_binary(User#erlchat_user.nickname) andalso
  +        User#erlchat_user.nickname =/= <<>>.
  +
  +
  
positive.code: 
  add_topic(Users, Subject) ->
          Topic = #erlchat_topic{ users = Users, subject = Subject},
          case is_valid(Topic) of
            true ->
              gen_server:call(?store_server, {add_topic, Topic});
            false ->
              {error, invalid_data}
          end.
  
  get_topic(TopicId) ->
          gen_server:call(?store_server, {get_topic, TopicId}).
  
  add_message(Sender, TopicId, Text) ->
          Message = #erlchat_message { sender = Sender, topic_id = TopicId, text = Text },
          case is_valid(Message) of
            true ->
              gen_server:call(?store_server, {add_message, Message});
            false ->
              {error, invalid_data}
          end.
  
  get_message(MessageId) ->
          gen_server:call(?store_server, {get_message, MessageId}).
  
  get_user(UserId) ->
          gen_server:call(?store_server, {get_user, UserId}).
  
  is_valid(Topic=#erlchat_topic{}) ->
          is_list(Topic#erlchat_topic.users) andalso
  
negative.code: 
  %% API
  -export([start_link/1, stop/0]).
  -export([add_user/2, get_user/1]).
  -export([add_topic/2, get_topic/1]).
  -export([add_message/3, get_message/1]).
  
  