예제 #1
0
  def test_read_frame_on_full_frame(self):
    class FrameReader(Frame):
      @classmethod
      def type(self): return 45

      @classmethod
      def parse(self, channel_id, payload):
        return 'no_frame'
    FrameReader.register()

    self.mock( frame, 'Reader' )
    reader = self.mock()
    payload = self.mock()

    expect( reader.read_octet ).returns( 45 ) # frame type
    expect( reader.read_short ).returns( 32 ) # channel id
    expect( reader.read_long ).returns( 42 )  # size
    
    expect( reader.tell ).returns( 5 )
    expect( frame.Reader ).args(reader, 5, 42).returns( payload )
    expect( reader.seek ).args( 42, 1 )

    expect( reader.read_octet ).returns( 0xce )
    expect( FrameReader.parse ).args( 32, payload ).returns( 'a_frame' )

    assertEquals( 'a_frame', Frame._read_frame(reader) )
예제 #2
0
  def test_read_frames_reads_until_buffer_underflow(self):
    reader = mock()

    expect( reader.tell ).returns( 0 )
    expect( Frame._read_frame ).args(reader).returns('frame1')

    expect( reader.tell ).returns( 2 )
    expect( Frame._read_frame ).args(reader).returns('frame2')

    expect( reader.tell ).returns( 3 )
    expect( Frame._read_frame ).args(reader).raises( Reader.BufferUnderflow )

    expect( reader.seek ).args( 3 )

    assertEquals( deque(['frame1','frame2']), Frame.read_frames(reader) )
예제 #3
0
 def test_write_frame(self):
   frame = Frame(42)
   assert_raises( NotImplementedError, frame.write_frame, 'stream' )
예제 #4
0
 def test_repr(self):
   expect(Frame.__str__).returns('foo')
   frame = Frame(42)
   assert_equals('foo', repr(frame))
예제 #5
0
 def test_str(self):
   frame = Frame(42)
   assert_equals('Frame[channel: 42]', str(frame))
예제 #6
0
 def test_properties(self):
   frame = Frame('channel_id')
   assert_equals('channel_id', frame.channel_id)