Sha256: 8452091031a4b77653b7f9357f38ccdc777d62408372b73a2ca6fc108c8a3476

Contents?: true

Size: 1.83 KB

Versions: 4

Compression:

Stored size: 1.83 KB

Contents

require 'minitest/autorun'
require 'dnssd'

class TestDNSSDTextRecord < MiniTest::Unit::TestCase

  def setup
    @TR = DNSSD::TextRecord
  end

  def test_encode
    tr = @TR.new

    tr['key1'] = nil
    tr['key2'] = ''
    tr['key3'] = 'value'

    assert_equal "\004key1\005key2=\012key3=value", tr.encode
  end

  def test_encode_long
    tr = @TR.new

    tr['key'] = 'X' * 252

    e = assert_raises DNSSD::Error do
      tr.encode
    end

    assert_equal 'key value pair at \'key\' too large to encode', e.message
  end

  def test_decode
    text_record = "\fstatus=avail\006email=\004jid=\005node=\tversion=1\ttxtvers=1\016port.p2pj=5298\0161st=Eric Hodel\005nick=\004AIM=\005last=-phsh=59272d0c3ed947b4660fabc0dad9d67647507299\004ext="

    expected = {
      'status'    => 'avail',
      'ext'       => '',
      'node'      => '',
      'nick'      => '',
      'last'      => '',
      'txtvers'   => '1',
      'AIM'       => '',
      'jid'       => '',
      'phsh'      => '59272d0c3ed947b4660fabc0dad9d67647507299',
      'version'   => '1',
      '1st'       => 'Eric Hodel',
      'port.p2pj' => '5298',
      'email'     => ''
    }

    assert_equal expected, @TR.new(text_record).to_hash
  end

  def test_decode_bad
    assert_raises ArgumentError do
      @TR.new("\x01") # length past end-of-record
    end

    assert_raises ArgumentError do
      # no key
      @TR.new("\x01=")
    end

    assert_raises ArgumentError do
      # 0-length key
      @TR.new("\x02=v")
    end
  end

  def test_decode_empty
    assert_equal({}, @TR.new(""))
    assert_equal({}, @TR.new("\x00"))
    assert_equal({}, @TR.new("\x00\x00"))
  end

  def test_decode_value
    assert_equal({ 'k' => nil }, @TR.new("\x01k").to_hash)
    assert_equal({ 'k' => ''  }, @TR.new("\x02k=").to_hash)
    assert_equal({ 'k' => 'v' }, @TR.new("\x03k=v").to_hash)
  end

end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
dnssd-1.3.2 test/test_dnssd_text_record.rb
rackjour-0.1.8 vendor/gems/gems/dnssd-1.3.1/test/test_dnssd_text_record.rb
dnssd-1.3.1 test/test_dnssd_text_record.rb
dnssd-1.3 test/test_dnssd_text_record.rb