Changeset 725

Show
Ignore:
Timestamp:
06/29/08 19:04:48 (2 months ago)
Author:
francis
Message:

Fixed bug in set_text_mode which made it break when called inside receive_binary_data.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/protocols/linetext2.rb

    r724 r725  
    8484                                                @lt2_textpos += will_take 
    8585                                                if @lt2_textpos >= @lt2_textsize 
     86                                                        # Reset line mode (the default behavior) BEFORE calling the 
     87                                                        # receive_binary_data. This makes it possible for user code 
     88                                                        # to call set_text_mode, enabling chains of text blocks 
     89                                                        # (which can possibly be of different sizes). 
     90                                                        set_line_mode 
    8691                                                        receive_binary_data @lt2_textbuffer.join 
    8792                                                        receive_end_of_binary_data 
    88                                                         set_line_mode 
    8993                                                end 
    9094 
  • trunk/tests/test_ltp2.rb

    r724 r725  
    292292                assert( a.end ) 
    293293        end 
     294 
     295 
     296        # This tests a bug fix in which calling set_text_mode failed when called 
     297        # inside receive_binary_data. 
     298        # 
     299        class BinaryPair 
     300                include EM::Protocols::LineText2 
     301                attr_reader :sizes 
     302                def initialize *args 
     303                        super 
     304                        set_text_mode 1 
     305                        @sizes = [] 
     306                end 
     307                def receive_binary_data dt 
     308                        @sizes <<  dt.length 
     309                        set_text_mode( (dt.length == 1) ? 2 : 1 ) 
     310                end 
     311        end 
     312        def test_binary_pairs 
     313                test_data = "123" * 5 
     314                a = BinaryPair.new 
     315                a.receive_data test_data 
     316                assert_equal( [1,2,1,2,1,2,1,2,1,2], a.sizes ) 
     317        end 
     318 
    294319end 
    295320