anchor.diff:                     parse('via', <<"SIP/2.0/UDP pc33.atlanta.com;ttl=3;maddr=224.0.0.1;received=127.0.0.1;branch=z9hG4bK776asdhds">>)),
        ?_assertEqual(via(udp, {"pc33.atlanta.com", undefined}, [{ttl, 3}, {maddr, "sip.mcast.net"}, {received, {127, 0, 0, 1}}, {branch, <<"z9hG4bK776asdhds">>}]),
                      parse('via', <<"SIP/2.0/UDP pc33.atlanta.com;ttl=3;maddr=sip.mcast.net;received=127.0.0.1;branch=z9hG4bK776asdhds">>)),
  -
  -     % Subject
  +     
  +     % Allow
  +     ?_assertEqual(['INVITE', 'ACK', 'CANCEL', 'OPTIONS', 'BYE'],
  +                   parse('allow', <<"INVITE, ACK, CANCEL, OPTIONS, BYE">>)),
  +     ?_assertEqual(<<"INVITE, ACK, CANCEL, OPTIONS, BYE">>,
  +                   format('allow', ['INVITE', 'ACK', 'CANCEL', 'OPTIONS', 'BYE'])),
  +
  +     % Subject (FIXME: implement proper tests)
        ?_assertEqual(<<"I know you're there, pick up the phone and talk to me!">>,
           format('subject', <<"I know you're there, pick up the phone and talk to me!">>))
       ].
  
positive.code:             end;
          {Top, <<>>} -> Top
      end;
  %% Any other header, just return value as is
  parse(_Name, Value) ->
      Value.
  
negative.code:      ?_assertEqual([address(<<"Bob">>, <<"sip:bob@biloxi.com">>, [{q, <<"0.1">>}]),
                      address(<<"Alice">>, <<"sip:alice@atlanta.com">>, [{q, <<"0.2">>}]),
                      address(<<>>, <<"sip:anonymous@example.com">>, [{param, <<"va lue">>}])],
                     parse('contact', <<"Bob <sip:bob@biloxi.com>;q=0.1, \"Alice\" <sip:alice@atlanta.com>;q=0.2, <sip:anonymous@example.com>;param=\"va lue\"">>)),
       ?_assertEqual('*', parse('contact', <<"*">>)),
  
       ?_assertEqual(<<"\"Bob\" <sip:bob@biloxi.com>;q=0.1">>,
                     format('contact', address(<<"Bob">>, <<"sip:bob@biloxi.com">>, [{q, <<"0.1">>}]))),
       ?_assertEqual(<<"\"Bob\" <sip:bob@biloxi.com>;q=0.1, \"Alice\" <sip:alice@atlanta.com>;q=0.2">>,
                     format('contact', [address(<<"Bob">>, <<"sip:bob@biloxi.com">>, [{q, <<"0.1">>}]),
                                        address(<<"Alice">>, <<"sip:alice@atlanta.com">>, [{q, <<"0.2">>}])])),
       ?_assertEqual(<<"\"Bob\" <sip:bob@biloxi.com>;q=0.1, \"Alice\" <sip:alice@atlanta.com>;q=0.2, <sip:anonymous@example.com>;param=\"va lue\"">>,
                     format('contact', [address(<<"Bob">>, <<"sip:bob@biloxi.com">>, [{q, <<"0.1">>}]),
                                        address(<<"Alice">>, <<"sip:alice@atlanta.com">>, [{q, 0.2}]),
                                        address(<<>>, <<"sip:anonymous@example.com">>, [{param, <<"va lue">>}])])),
  