Add more writeLength tests

This commit is contained in:
Amir Bandeali 2019-09-03 17:05:32 -07:00
parent cb8cf1f107
commit 3935e661fe
2 changed files with 28 additions and 0 deletions

View File

@ -325,4 +325,18 @@ contract TestLibBytes {
b.writeLength(length);
return b;
}
function assertBytesUnchangedAfterLengthReset(
bytes memory b,
uint256 tempLength
)
public
pure
{
uint256 length = b.length;
bytes memory bCopy = b.slice(0, length);
b.writeLength(tempLength);
b.writeLength(length);
assert(b.equals(bCopy));
}
}

View File

@ -1131,6 +1131,20 @@ describe('LibBytes', () => {
);
expect(result).to.eq(`${byteArrayLongerThan32Bytes}${byteArrayLongerThan32Bytes.slice(2)}`);
});
it('should result in the same byte array if length is reduced and reset', async () => {
const byteLen = (byteArrayLongerThan32Bytes.length - 2) / 2;
const tempByteLen = new BigNumber(byteLen).dividedToIntegerBy(2);
return expect(
libBytes.assertBytesUnchangedAfterLengthReset.callAsync(byteArrayLongerThan32Bytes, tempByteLen),
).to.be.fulfilled('');
});
it('should result in the same byte array if length is increased and reset', async () => {
const byteLen = (byteArrayLongerThan32Bytes.length - 2) / 2;
const tempByteLen = new BigNumber(byteLen).multipliedBy(2);
return expect(
libBytes.assertBytesUnchangedAfterLengthReset.callAsync(byteArrayLongerThan32Bytes, tempByteLen),
).to.be.fulfilled('');
});
});
});
// tslint:disable:max-file-line-count