https://github.com/yuriyvyatkin/ajs-hw-9.2-arraybuffer
ДЗ №2 к лекции «ArrayBuffer» курса «Продвинутый JavaScript» Нетологии
https://github.com/yuriyvyatkin/ajs-hw-9.2-arraybuffer
arraybuffer javascript jest
Last synced: 11 months ago
JSON representation
ДЗ №2 к лекции «ArrayBuffer» курса «Продвинутый JavaScript» Нетологии
- Host: GitHub
- URL: https://github.com/yuriyvyatkin/ajs-hw-9.2-arraybuffer
- Owner: yuriyvyatkin
- Created: 2021-07-06T08:46:38.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-07-06T13:14:48.000Z (over 4 years ago)
- Last Synced: 2025-01-04T01:39:17.967Z (about 1 year ago)
- Topics: arraybuffer, javascript, jest
- Language: JavaScript
- Homepage:
- Size: 136 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Домашнее задание №2 к лекции «ArrayBuffer»
[](https://ci.appveyor.com/project/yuriyvyatkin/ajs-hw-9-2-arraybuffer)
## ArrayBuffer
### Легенда
Периодически данные приходят в бинарном формате и их необходимо преобразовать в какой-либо другой формат, например, строку json, чтобы потом распарсить в объект. Для этих манипуляций в том числе можно использовать объекты, которые предоставляются Web API - `File` и `Blob`, но прямая манипуляция `ArrayBuffer` будет в разы быстрее и эффективнее.
### Описание
У вас есть функция `getBuffer()`, которая эмулирует создание объекта типа `ArrayBuffer`. Вам необходимо реализовать класс `ArrayBufferConverter` с методом `load()`, который может загружать данные (сигнатура `load(buffer)`), и методом `toString`, который умеет переводить содержимое загруженного `ArrayBuffer` в строку.
```javascript
function getBuffer() {
const data = '{"data":{"user":{"id":1,"name":"Hitman","level":10}}}';
return (input => {
const buffer = new ArrayBuffer(data.length * 2);
const bufferView = new Uint16Array(buffer);
for (let i = 0; i < input.length; i++) {
bufferView[i] = input.charCodeAt(i);
}
return buffer;
})(data);
}
```
Не забудьте написать unit-тесты, которые обеспечивают 100% покрытие функций и классов, которые вы тестируете.