actual = '';
expected = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,';

function slice(a, b)
{
  //return { x: a + ':' + b };
  return b;
}

function f()
{
  var length = 20;
  var index = 0;

  function get3() {
    //appendToActual("get3 " + index);
    if (length - index < 3)
      return null;
    return slice(index, ++index);
  }

  var bytes = null;
  while (bytes = get3()) {
    appendToActual(bytes);
  }
}

f();


assertEq(actual, expected)