Opened 4 years ago
Closed 4 years ago
#932 closed ожидается проверка (задача сдана)
HW #3
Reported by: | Шелухина Екатерина | Owned by: | Vasily Alferov |
---|---|---|---|
Component: | HW #3 (Huffman) | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (5)
comment:1 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:3 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
+5 за тесты, +1 за архитектуру, +4 за стиль.
- Длинные флаги до сих пор не работают. На этот раз потому, что они могут идти в любом порядке. Например,
--file <FILE> -c --output <OUTPUT>
. Сделай, пожалуйста, нормально?
- Нормально -- это с исключениями в CLI.
exit(1)
-- это плохо.
- Название файла с тестами неправильное. А ещё твои тесты падают.
[doctest] doctest version is "2.3.7" [doctest] run with "--help" for options =============================================================================== test/TestHuffmanArchiver.cpp:4: TEST CASE: test HuffmanArchiver test compress test/TestHuffmanArchiver.cpp:12: ERROR: CHECK( ar.get_size() == 1420 ) is NOT correct! values: CHECK( 4294967295 == 1420 ) test/TestHuffmanArchiver.cpp:13: ERROR: CHECK( ar.get_after_size() == 789 ) is NOT correct! values: CHECK( 0 == 789 ) test/TestHuffmanArchiver.cpp:14: ERROR: CHECK( ar.get_table_size() == 208 ) is NOT correct! values: CHECK( 4 == 208 ) 0 0 4 =============================================================================== test/TestHuffmanArchiver.cpp:4: TEST CASE: test HuffmanArchiver test extract test/TestHuffmanArchiver.cpp:23: ERROR: CHECK( ar.get_size() == 789 ) is NOT correct! values: CHECK( 0 == 789 ) test/TestHuffmanArchiver.cpp:24: ERROR: CHECK( ar.get_after_size() == 1420 ) is NOT correct! values: CHECK( 0 == 1420 ) test/TestHuffmanArchiver.cpp:25: ERROR: CHECK( ar.get_table_size() == 208 ) is NOT correct! values: CHECK( 4 == 208 ) =============================================================================== test/TestHuffmanArchiver.cpp:4: TEST CASE: test HuffmanArchiver test read_table test/TestHuffmanArchiver.cpp:33: ERROR: CHECK( ar.get_table_size() == 204 ) is NOT correct! values: CHECK( 4 == 204 ) =============================================================================== [doctest] test cases: 3 | 2 passed | 1 failed | 0 skipped [doctest] assertions: 22 | 15 passed | 7 failed | [doctest] Status: FAILURE!
- За исключением того, что тесты падают, они почти ОК. Временные файлы для тестов -- зло. Юзай стримы.
comment:4 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 2.0 → 3.0 |
comment:5 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Топ!
Всё работает, всё проходит.
Баллы по максимуму, кроме архитектуры (4/5).
Хоть флаги теперь работают, но хотелось увидеть более расширяемое решение. То есть цикликом пройтись по флагам, достать все найденные значения и в конце проверить, что все нужные значения были и не противоречат друг другу.
Если будет необходимо дописать ещё один флаг, добавлять все перестановки в перебор как-то совсем грустно =(
Note: See
TracTickets for help on using
tickets.
Круть.
Замечания.
По корректности:
Единственное замечание -- не работают длинные флаги (--file, --output).
Это минус балл.
По архитектуре:
Буффер, который умеет флашиться -- это круто.
Замечания:
HuffmanTree
наследуется отNode
, серьёзно? Зачем? Тем более, что он ещё и композирует указатель наNode
.std::istream/std::ostream
, а не сstd::ifstream/std::ofstream
По стилю:
{}
после членов класса типа unsigned int -- это странно. Лучше уж либо= 0
, либо вообще ничего.unsigned int
-- длинное слово, чаще всего проще писатьsize_t
илиuint32_t
. У последнего, кстати, помимо прочего, гарантирована длина.Writer
хранит в себе ссылку, он некопируемый. Стоит это явно указать в сигнатуре, прописав соответствующие конструкторы и операторы.Node
→HuffmanNode
. ИлиHuffmanTreeNode
. ИлиHuffmanTree::Node
.