What Jim just said, but it looks to me like Text is doing the wrong thing. When you ask it its length, it returns the byte buffer capacity rather than how many bytes are in use. It says length is 16 but there are only 15 characters in your test string, UTF-8'd or not.

St.Ack


Jason Grey wrote:
Can anyone explain why "testTextToBytes" doesn't assert and
"testStringToBytes" does?


import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.io.Text;

import junit.framework.TestCase;

public class TestImmutableBytesWritable extends TestCase {
        
        public void testTextToBytes(){
        
                Text input = new Text("this is a test.");
                
                ImmutableBytesWritable bytes =
                        new ImmutableBytesWritable( input.getBytes() );
                
                Text output = new Text( bytes.get() );
                
                assertEquals(input, output);
                
        }

        public void testStringToBytes(){
                
                String input = "this is a test.";
                
                ImmutableBytesWritable bytes =
                        new ImmutableBytesWritable( input.getBytes() );
                
                String output = new String( bytes.get() );
                
                assertEquals(input, output);
                
        }
}


If I inspect the objects during debugging at the point of the assert I
see the following:

* input
        bytes = [116, 104, 105, 115, 32, 105
                , 115, 32, 97, 32, 116, 101
                , 115, 116, 46, 0]
        length = 15

* bytes =       [116, 104, 105, 115, 32, 105
                , 115, 32, 97, 32, 116, 101
                , 115, 116, 46, 0]

* output
        bytes = [116, 104, 105, 115, 32, 105
                , 115, 32, 97, 32, 116, 101
                , 115, 116, 46, 0]
        length = 16

The length property appears to be off between the two Text objects, but
all the data is correct... any help would be greatly appreciated.

Thanks

-jg-


Reply via email to