An open API service indexing awesome lists of open source software.

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» Нетологии

Awesome Lists containing this project

README

          

# Домашнее задание №2 к лекции «ArrayBuffer»

[![Build status](https://ci.appveyor.com/api/projects/status/2oe7inq54bf3vxip?svg=true)](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% покрытие функций и классов, которые вы тестируете.