Решение на Bigint от Християн Генчев
Към профила на Християн Генчев
Резултати
- 13 точки от тестове
- 0 бонус точки
- 13 точки общо
- 13 успешни тест(а)
- 2 неуспешни тест(а)
Код
Лог от изпълнението
Compiling solution v0.1.0 (/tmp/d20201127-2274206-h5y4b7/solution) warning: variable does not need to be mutable --> src/lib.rs:126:15 | 126 | fn add_digits(mut left: Vec<u8>, mut right: Vec<u8>) -> Vec<u8> { | ----^^^^ | | | help: remove this `mut` | = note: `#[warn(unused_mut)]` on by default warning: variable does not need to be mutable --> src/lib.rs:126:34 | 126 | fn add_digits(mut left: Vec<u8>, mut right: Vec<u8>) -> Vec<u8> { | ----^^^^^ | | | help: remove this `mut` warning: variable does not need to be mutable --> src/lib.rs:153:20 | 153 | fn subtract_digits(mut larger: Vec<u8>, mut smaller: Vec<u8>) -> Vec<u8> { | ----^^^^^^ | | | help: remove this `mut` warning: variable does not need to be mutable --> src/lib.rs:153:41 | 153 | fn subtract_digits(mut larger: Vec<u8>, mut smaller: Vec<u8>) -> Vec<u8> { | ----^^^^^^^ | | | help: remove this `mut` warning: 4 warnings emitted Finished test [unoptimized + debuginfo] target(s) in 1.64s Running target/debug/deps/solution_test-589a43f0f4b10ca3 running 15 tests test solution_test::test_bigint_construction ... ok test solution_test::test_bigint_nonzero_sign ... ok test solution_test::test_bigint_zero_sign ... FAILED test solution_test::test_comparison ... FAILED test solution_test::test_invalid_string ... ok test solution_test::test_neutralization ... ok test solution_test::test_parsing_with_and_without_sign ... ok test solution_test::test_parsing_with_leading_zeroes ... ok test solution_test::test_sub_1_basic ... ok test solution_test::test_sub_2_diferent_lengths ... ok test solution_test::test_sub_3_carry ... ok test solution_test::test_sum_1_basic ... ok test solution_test::test_sum_2_different_lengths ... ok test solution_test::test_sum_3_overflow ... ok test solution_test::test_sum_4_negative ... ok failures: ---- solution_test::test_bigint_zero_sign stdout ---- thread 'main' panicked at 'assertion failed: !zero.is_positive()', tests/solution_test.rs:21:5 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace ---- solution_test::test_comparison stdout ---- thread 'main' panicked at 'assertion failed: bigint("-1") > bigint("-2")', tests/solution_test.rs:171:5 failures: solution_test::test_bigint_zero_sign solution_test::test_comparison test result: FAILED. 13 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out error: test failed, to rerun pass '--test solution_test'
История (2 версии и 2 коментара)
Християн качи решение на 27.11.2020 16:04 (преди почти 5 години)
Просто викане на from_str
може би ще ти потвърди, че поне кода не panic-ва, но това е доста ниска летва. Ако тези примери създават валиден Bigint, можеше да викнеш .unwrap()
за да провериш, че не връщат Err
, или даже assert!(Bigint::from_str("").is_ok())
.
Виждам, че долу си сложил същите извиквания със сравнение на резултат, но тогава не си заслужава да запазиш този тест.
Липсват ти тестове за не-utf8 низове, като кирилица или emoji. Това лесно може да се сбърка и си заслужава да се тества. Липсват ти и някои случаи за други неща, като например сравнение на числа с еднакъв знак и еднакъв брой цифри.
Допълнително, нямаше нужда да си закоментираш тестовете. От начина, по който си ги написал, може би не знаеш как да ги вкараш в кода -- може да разгледаш лекция 5 и/или да видиш някое от домашните с бонус звездичка, за да видиш как става.
Просто викане на
from_str
може би ще ти потвърди, че поне кода не panic-ва, но това е доста ниска летва. Ако тези примери създават валиден Bigint, можеше да викнеш.unwrap()
за да провериш, че не връщатErr
, или дажеassert!(Bigint::from_str("").is_ok())
.Виждам, че долу си сложил същите извиквания със сравнение на резултат, но тогава не си заслужава да запазиш този тест.