Change History (3)

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

Component: HW #2 (X0)HW #3 (Huffman)
Type: ожидается проверкаожидаются исправления

Твои собственные тесты упали:

Running tests from ../../../homeworks/mihelson.margarita/hw_02/hw_02_test
[doctest] doctest version is "2.4.1"
[doctest] run with "--help" for options
===============================================================================
test/test.cpp:58:
TEST CASE:  test read/write frequencies

test/test.cpp:72: ERROR: CHECK( frequencies.size() == new_frequencies.size() ) is NOT correct!
  values: CHECK( 3 == 0 )

==1491311== Invalid read of size 1
==1491311==    at 0x1187DD: doctest::detail::Result doctest::detail::Expression_lhs<std::pair<char, int> const&>::operator==<std::pair<char, int> >(std::pair<char, int> const&) [clone .isra.0] (in /home/svloyso/study/homeworks/mihelson.margarita/hw_02/hw_02_test)
==1491311==    by 0x12210C: _DOCTEST_ANON_FUNC_14() (in /home/svloyso/study/homeworks/mihelson.margarita/hw_02/hw_02_test)
==1491311==    by 0x12D2CB: doctest::Context::run() (in /home/svloyso/study/homeworks/mihelson.margarita/hw_02/hw_02_test)
==1491311==    by 0x10FC4E: main (in /home/svloyso/study/homeworks/mihelson.margarita/hw_02/hw_02_test)
==1491311==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==1491311== 
test/test.cpp:58: FATAL ERROR: test case CRASHED: SIGSEGV - Segmentation violation signal

===============================================================================
[doctest] test cases:  4 |  3 passed | 1 failed | 3 skipped
[doctest] assertions: 17 | 16 passed | 1 failed |
[doctest] Status: FAILURE!

Половина тестов тоже ожидаемо попадало. Часть из них потому что разархивированный файл не совпадает с исходным, а другая часть -- потому что файл пустой.

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

Код хороший, мне нравится. Осталось сделать его работающим :)

Попробуй подумать, где можно прикрутить стандартные алгоритмы. Например, код который делает из вектора частот сет нодов можно переписать ванлайнером через std::transform и std::inserter.

Есть константа CHAR_BIT в climits. Не то, чтобы твой код будет компилироваться на платформе, где бит не 8 байт, но использовать константы вместо магических чисел -- это хорошая и полезная практика, я рекомендую ей следовать.

#include "../src/huffman.h" -- wat? Заведи папку include и сделай нормально.

За корректность 5/15

comment:2 Changed 3 years ago by Маргарита Михельсон

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

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

Resolution: задача сдана
Status: assignedclosed

Тесты прошли кроме тех, что аргументы переставляют местами.

По стилю:

  1. Хочется, чтобы вы уже отошли от ручного управления памятью и юзали умные указатели
  2. Вектора пар -- это странно. Там вполне себе хватило бы обычного std::array

14/5/9

Note: See TracTickets for help on using tickets.