День 14 · задания

День 14 — задания

Практика прошла по ходу чтения — в блоках «Попробуйте сейчас». Здесь итог: всё, что сверит course check 14. Если какой-то пункт пропустили, вернитесь к странице, которая указана рядом. Список страниц:

▶ Выполните
course toc 14

1. Четыре предсказания — страницы 2, 3, 5

Сделать: сдать ответы на четыре вопроса «что выведет».

▶ Выполните · выделенное замените своим
course answer day14.q1 ОТВЕТ
course answer day14.q2 ОТВЕТ
course answer day14.q3 ОТВЕТ
course answer day14.q4 ОТВЕТ

Вместо ОТВЕТ — число или слово, как его печатает go test. Можно отправить заново — засчитывается последний.

Готово, когда: пункты q1, q2, q3, q4 в course check 14 зелёные.

2. Три формы запуска — страницы 1, 2

Сделать: выполните тесты тремя способами: обычно, подробно и по имени.

▶ Выполните
cd ~/gocourse/day14/scratch
go test .
go test -v .
go test -v -run TestPrice .

Готово, когда: пункты t_test, t_verbose и t_run зелёные. Имя после -run берите своё — то, что стоит в вашем price_test.go сейчас: после страницы 5 там одна функция TestPrice, после страницы 6 к ней добавляется TestPriceOnThreshold.

3. Первый тест к функции cost — страница 3

Сделать: написать в ~/gocourse/day14/cost файл cost_test.go — тест к функции cost из соседнего файла. Условие и свои числа:

▶ Выполните
cd ~/gocourse/day14/cost
cat TASK.txt

Требования: имя файла на _test.go, package main, import "testing", функция func TestCost(t *testing.T), внутри — сравнение результата с числом, которое вы посчитали сами, и t.Errorf при расхождении. Файл cost.go не меняйте.

Готово, когда: пункты cost и costfn зелёные. Проверка прогонит ваш тест дважды: на вашей функции — он должен пройти, и на заведомо неверной версии функции — он должен упасть. Пункт costfn («cost.go не переписан») показывают только вместе с работой: пока ни одного теста нет, он красный — даром его не получить.

4. Таблица случаев для packs — страница 5

Сделать: написать в ~/gocourse/day14/packs файл packs_test.go — одна тестовая функция и таблица не меньше чем на четыре случая.

▶ Выполните
cd ~/gocourse/day14/packs
cat TASK.txt

Среди случаев обязательно партия, которая делится на размер коробки ровно, и партия 0 шт. Файл packs.go не меняйте.

Готово, когда: пункты table, tablezero и packtable зелёные. table и tablezero — это две разные неверные версии функции: одна ошибается на ровных партиях, другая — на нулевой. packtable смотрит на форму теста: одна тестовая функция, таблица случаев и цикл по ней, не меньше четырёх строк-случаев.

5. Починка по упавшему тесту — страница 6

Сделать: в ~/gocourse/day14/deliver:

▶ Выполните
cd ~/gocourse/day14/deliver
cat TASK.txt
go test .
diff ~/.course/orig/day14/deliver/total.go total.go

Готово, когда: пункты fix, fixtest, reprod и fixsmall зелёные. Проверка прогонит программу на нескольких вводах — часть из них скрыта — и отдельно убедится, что ваш тест падает на исходной, ещё не починенной версии функции.

6. Ритуал перед коммитом — страница 7

Сделать: привести в порядок все три каталога.

▶ Выполните
cd ~/gocourse/day14
gofmt -l .
go vet ./...
go test ./...

Если gofmt -l . печатает имена файлов — gofmt -w . или Ctrl+S в VS Code.

Готово, когда: пункт code_fmt зелёный: в cost, packs и deliver код отформатирован и go vet молчит. Пункт про ваши тесты, а не про заготовки: пока ни в одном из трёх каталогов нет своего файла на _test.go, он красный.

7. Коммиты — страницы 1, 3, 5, 6, 7

Сделать: репозиторий ~/gocourse/day14 заводится на первой странице (git init и коммит с заготовками), дальше коммит — последним шагом каждого задания: cost, packs, репродьюсер в deliver и починка. Всего нужно не меньше четырёх коммитов с изменениями.

▶ Выполните
cd ~/gocourse/day14
git status -s
git add .
git commit -m "что сделали"
git log --oneline

Готово, когда: пункт git зелёный — коммитов с изменениями не меньше четырёх, и в истории есть все три файла с тестами.

8. Словарик ошибок — страница 7

Сделать: в ~/errors.md — минимум 28 строк вида «текст ошибки — что значило». Между ошибкой и разбором — тире с пробелами вокруг.

Готово, когда: пункт errors зелёный.

9. Звёздочка

В зачёт не входит, course check 14 эти задания не смотрит.

Готово, когда: каждая из пяти поломок падает хотя бы на одном случае таблицы, а go test -cover . показывает больше, чем до правок.


Порог: 16 пунктов из 19. После зачёта — контрольные вопросы: course quiz 14.