fix assign to unwritable NaN Infinity undefined bug; add test case for it