Opened 3 years ago

Closed 3 years ago

#712 closed ожидаются исправления (задача сдана)

HW_02

Reported by: morozov.nikita Owned by: Святослав Власов
Component: HW #3 (Huffman) Version: 2.0
Keywords: Cc:

Description

std::map для codes и freqs оставлено осознанно, ведь я хочу использовать еще и русские символы, коды которых отрицательны.

Change History (4)

comment:1 Changed 3 years ago by Святослав Власов

Type: ожидается проверкаожидаются исправления

std::map для codes и freqs оставлено осознанно, ведь я хочу использовать еще и русские символы, коды которых отрицательны.

Используй uint8_t и будет тебе счастье без отрицательных кодов.

Мейкфайл у тебя криво написан:

svloyso-osx:hw_02 svloyso$ make
mkdir -p obj
g++ -O2 -Wall -Werror -std=c++14 -Isrc -c -MMD -o obj/huffman.o src/huffman.cpp
g++ -O2 -Wall -Werror -std=c++14 -Isrc -c -MMD -o obj/main.o src/main.cpp
g++ obj/huffman.o obj/main.o -o hw_02 
g++  obj/huffman.o -o hw_02_test 
Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

А make test вообще цель test не находит.

Тест сжимающий файл с байтами от 0x00 до 0xff и распаковывающий его, жалуется что исходный файл и распакованный не совпадают :(

Компрессия и декомпрессия файла состоящего из одного нулевого байта рухнула с сегфолтом. Некоторые другие тесты тоже.

Если использовать std::unique_ptr, то необходимость в deleteNodes пропадет.

Использовать строку для хранения битового кода -- так себе идея, а еще хочется избавиться от копирования аргумента в каждом рекурсивном вызове

Давай без magic numbers. Есть константа CHAR_BITS в <climits>

Нет нужды явно вызывать close у файлов, они сами закроются в деструкторах.

Тестов нет.

7/0/5

comment:2 Changed 3 years ago by morozov.nikita

Type: ожидаются исправленияожидается проверка
Version: 1.02.0

comment:3 Changed 3 years ago by Святослав Власов

Type: ожидается проверкаожидаются исправления

Наши тесты прошли, к корректности претензий нет.

Твои тесты мне не совсем нравятся, хочется увидеть приватные функции тоже протестированными, и тестирования граничных случаев.

Вот такого писать не надо:
CHECK(test_tree().get_top()->r->freq == 67)
Если по какой-то причине дерево будет построено криво и ->r окажется nullptr, у тебя тест просто крашнется и будет совершенно непонятно что там произошло и почему тест упал.

15/4/10

comment:4 Changed 3 years ago by Святослав Власов

Resolution: задача сдана
Status: assignedclosed
Note: See TracTickets for help on using tickets.