39 lines
1.2 KiB
Rust
39 lines
1.2 KiB
Rust
|
use leetcode::add_binary::add_binary;
|
||
|
|
||
|
use test_case::test_case;
|
||
|
|
||
|
const A_256: &str = "10110101010001101011001011100011\
|
||
|
10100111101001010011000011000100\
|
||
|
11110111001001111010110000000010\
|
||
|
11100100110010110111101001100010\
|
||
|
10000101100010101010000111100100\
|
||
|
10100110010010100110111010011001\
|
||
|
11110111011101010000000110101001\
|
||
|
10000101110010101101011011011000";
|
||
|
|
||
|
const B_256: &str = "11101111111010110101001000000110\
|
||
|
10010101100011001110011100101111\
|
||
|
10011111011100000010100111010100\
|
||
|
11101111111010111010011111001011\
|
||
|
00000001001010111100100000010010\
|
||
|
10110001010101011100001100000010\
|
||
|
11010000010010011101100000000111\
|
||
|
10000100111011110110000001110100";
|
||
|
|
||
|
const EXPECTED_257: &str = "11010010100110010000001001110101\
|
||
|
00011110100110010000101111111010\
|
||
|
01001011010010111110101011101011\
|
||
|
11101010010110111001000100010110\
|
||
|
11000011010110110011010011111011\
|
||
|
10101011110100000001100011001110\
|
||
|
01100011110111110110110011011000\
|
||
|
10000101010111010001101110100110\
|
||
|
0";
|
||
|
|
||
|
#[test_case("11", "1", "100"; "carry multiple")]
|
||
|
#[test_case("1010", "1011", "10101"; "carry single")]
|
||
|
#[test_case(A_256, B_256, EXPECTED_257; "256 bit numbers")]
|
||
|
fn test_add_binary(a: &str, b: &str, expected: &str) {
|
||
|
assert_eq!(add_binary(a.to_string(), b.to_string()), expected);
|
||
|
}
|