#[cfg(test)]
#[must_use]
pub(crate) fn bencode_to_json_unchecked(input_buffer: &[u8]) -> String {
use crate::parsers::BencodeParser;
let mut output = String::new();
let mut parser = BencodeParser::new(input_buffer);
parser
.write_str(&mut output)
.expect("Bencode to JSON conversion failed");
output
}
#[cfg(test)]
pub(crate) fn generate_n_nested_empty_bencoded_lists(n: usize) -> Vec<u8> {
let mut bencode_value = vec![b'l'; n];
bencode_value.extend_from_slice(&vec![b'e'; n]);
bencode_value
}
#[cfg(test)]
pub(crate) fn generate_n_nested_empty_json_arrays(n: usize) -> String {
"[".repeat(n) + &"]".repeat(n)
}
#[cfg(test)]
pub(crate) fn generate_n_nested_empty_bencoded_dictionaries(n: usize) -> Vec<u8> {
if n == 0 {
return b"de".to_vec();
}
let mut dict = vec![b'd']; dict.extend_from_slice(b"3:foo"); dict.extend_from_slice(&generate_n_nested_empty_bencoded_dictionaries(n - 1));
dict.extend_from_slice(b"e");
dict
}
#[cfg(test)]
pub(crate) fn generate_n_nested_empty_json_objects(n: usize) -> String {
if n == 0 {
return "{}".to_string();
}
let mut object = "{".to_string();
object.push_str(r#""foo":"#);
object.push_str(&generate_n_nested_empty_json_objects(n - 1));
object.push('}');
object
}
#[cfg(test)]
pub(crate) fn bencoded_string_with_repeated_byte(byte: u8, n: usize) -> Vec<u8> {
let string_length = b"1000000".to_vec();
let string_value = vec![byte; n];
let mut bencoded_string = Vec::new();
bencoded_string.extend_from_slice(&string_length);
bencoded_string.push(b':'); bencoded_string.extend_from_slice(&string_value);
bencoded_string
}