Цветелин качи първо решение на 23.11.2020 23:58 (преди почти 5 години)
Тестовете за невалиден низ не проверяват нито един вход, който има utf8 в него :). Това е едно от по-интересните неща за проверка, понеже е много лесно да напишеш string processing, който работи само за ASCII, и си заслужава да направиш проверка да не си го направил без да искаш.
При тестовете за сравнение, никъде не мисля че тестваш сравнение между две различни отрицателни числа, само положително с отрицателно и две положителни -- а сравнението на отрицателни числа има интересни характеристики.
Тестове за изваждане мисля, че нямаш никъде. Ако изваждането ти беше имплементирано със събиране с отрицателен знак, това може би щеше да е донякъде приемливо -- но изваждането ти е имплементирано отделно, и си заслужава собствени тестове.
Иначе, относно бавните тестове, предполагам че разбирам защо са бавни -- 2048 итерации на всеки. Защо точно 1024 е обхвата, който си избрал? Защо не 500 или 9999? :) Числото е arbitrary, и спокойно можеше да е различно, примерно 100, или даже 50. Добра идея е когато тестваш, да помислиш "какво точно тествам тук?" Не е лоша идея да направиш един цикъл с операции и да кажеш "bigint в случая работи както нормалните числа работят", но да тестваш със 100 + 100 е същото като да тестваш със 200 + 200. По-добра идея можеше да е да избереш конкретни двойки числа в един списък с интересни взаимоотношения, и да тестваш тях.
Алтернативно, quickcheck тестове са интересен вариант и биха ти свършили работа, но дори те циклят през само 100 примера по default, мисля. Разбира се, в случая нямаше как да ги ползваш, защото няма как да включиш пакета.