Ah I think I see how it works:
-1st Test call moves ptr forward and stores byte in temp_buffer
-2nd and more Test calls return byte from temp buffer
- Get call will use temp_buffer

Correct? If so, please explain this in a comment.