On Wed, Mar 28, 2012 at 00:36, Henry Jen <[email protected]> wrote:
>
> Hi,
>
> Recently(in Feb) there is a change[1] in test-buffer.js makes me wonder
> what's the proper value of Buffer._charsWritten. The doc says "The number of
> characters written (which may be different than the number of
> bytes written) is set in Buffer._charsWritten", and I assume it means
> characters consumed during decoding process from the input string.
>
> At test/simple/test-buffer.js:689, the test assert value is changed from 6
> to 4, I am trying to understand why.
>
> buf.write('123456', 'base64');
> assert.equal(Buffer._charsWritten, 4);
> buf.write('00010203040506070809', 'hex');
>
> assert.equal(Buffer._charsWritten, 18);
>
>
> As the total characters used to decode 4 octets are all six characters. A
> well-format base64 encoded string probably should include 2 paddings and be
> 8 characters(multiple of 4).
> If we consider only 4 characters are valid and used to decode, the result
> octets written would be 3 instead of 4. The buf.write() does write 4 octets
> and returns 4.
>
> Should this be considered a bug in test or is there a better explanation?
> Or perhaps I misunderstood what _charsWritten means?

The test is working as expected. The base64 decoder in node (for
better or worse) handles partial input. In this particular case, it
assumes that the input is 8 octets long and that the two missing
octets are padding.

> [1]
> https://github.com/joyent/node/commit/f101f7c9babb31f077c78b52de7cc45ad687f57e#test/simple/test-buffer.js

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to