simplified tests

main
Inga 🏳‍🌈 1 year ago
parent 23584162c4
commit d5f987985d
  1. 72
      hostnames_allocator/tests/ranged_number_allocator_tests.rs

@ -2,124 +2,124 @@ extern crate hostnames_allocator;
use hostnames_allocator::ranged_number_allocator::RangedNumberAllocator; use hostnames_allocator::ranged_number_allocator::RangedNumberAllocator;
fn create_allocator(data: &[(u32, u32)]) -> RangedNumberAllocator { fn create_allocator<const N: usize>(data: [(u32, u32); N]) -> RangedNumberAllocator {
RangedNumberAllocator { RangedNumberAllocator {
tree: data.to_owned().into_iter().collect() tree: data.into_iter().collect()
} }
} }
fn check_allocator(allocator: RangedNumberAllocator, expected: &[(u32, u32)]) { fn check_allocator<const N: usize>(allocator: RangedNumberAllocator, expected: [(u32, u32); N]) {
itertools::assert_equal(allocator.tree, expected.to_owned()); itertools::assert_equal(allocator.tree, expected);
} }
#[test] #[test]
fn remove_preserves_tree_when_empty() { fn remove_preserves_tree_when_empty() {
let mut allocator = create_allocator(&[]); let mut allocator = create_allocator([]);
allocator.remove(5); allocator.remove(5);
check_allocator(allocator, &[]); check_allocator(allocator, []);
} }
#[test] #[test]
fn remove_preserves_tree_when_not_found() { fn remove_preserves_tree_when_not_found() {
let mut allocator = create_allocator(&[(1, 3), (11, 13)]); let mut allocator = create_allocator([(1, 3), (11, 13)]);
allocator.remove(5); allocator.remove(5);
check_allocator(allocator, &[(1, 3), (11, 13)]); check_allocator(allocator, [(1, 3), (11, 13)]);
} }
#[test] #[test]
fn remove_removes_range_with_single_value() { fn remove_removes_range_with_single_value() {
let mut allocator = create_allocator(&[(1, 3), (5, 5), (11, 13)]); let mut allocator = create_allocator([(1, 3), (5, 5), (11, 13)]);
allocator.remove(5); allocator.remove(5);
check_allocator(allocator, &[(1, 3), (11, 13)]); check_allocator(allocator, [(1, 3), (11, 13)]);
} }
#[test] #[test]
fn remove_replaces_range_starting_with_value() { fn remove_replaces_range_starting_with_value() {
let mut allocator = create_allocator(&[(1, 3), (5, 7), (11, 13)]); let mut allocator = create_allocator([(1, 3), (5, 7), (11, 13)]);
allocator.remove(5); allocator.remove(5);
check_allocator(allocator, &[(1, 3), (6, 7), (11, 13)]); check_allocator(allocator, [(1, 3), (6, 7), (11, 13)]);
} }
#[test] #[test]
fn remove_changes_range_ending_with_value() { fn remove_changes_range_ending_with_value() {
let mut allocator = create_allocator(&[(1, 3), (5, 7), (11, 13)]); let mut allocator = create_allocator([(1, 3), (5, 7), (11, 13)]);
allocator.remove(7); allocator.remove(7);
check_allocator(allocator, &[(1, 3), (5, 6), (11, 13)]); check_allocator(allocator, [(1, 3), (5, 6), (11, 13)]);
} }
#[test] #[test]
fn remove_splits_range_containing_value() { fn remove_splits_range_containing_value() {
let mut allocator = create_allocator(&[(1, 3), (5, 9), (11, 13)]); let mut allocator = create_allocator([(1, 3), (5, 9), (11, 13)]);
allocator.remove(7); allocator.remove(7);
check_allocator(allocator, &[(1, 3), (5, 6), (8, 9), (11, 13)]); check_allocator(allocator, [(1, 3), (5, 6), (8, 9), (11, 13)]);
} }
#[test] #[test]
fn remove_removes_last_value() { fn remove_removes_last_value() {
let mut allocator = create_allocator(&[(5, 5)]); let mut allocator = create_allocator([(5, 5)]);
allocator.remove(5); allocator.remove(5);
check_allocator(allocator, &[]); check_allocator(allocator, []);
} }
#[test] #[test]
fn allocate_initializes_empty() { fn allocate_initializes_empty() {
let mut allocator = create_allocator(&[]); let mut allocator = create_allocator([]);
assert_eq!(allocator.allocate(), 1); assert_eq!(allocator.allocate(), 1);
check_allocator(allocator, &[(1, 1)]); check_allocator(allocator, [(1, 1)]);
} }
#[test] #[test]
fn allocate_adds_second_value() { fn allocate_adds_second_value() {
let mut allocator = create_allocator(&[(1, 1)]); let mut allocator = create_allocator([(1, 1)]);
assert_eq!(allocator.allocate(), 2); assert_eq!(allocator.allocate(), 2);
check_allocator(allocator, &[(1, 2)]); check_allocator(allocator, [(1, 2)]);
} }
#[test] #[test]
fn allocate_adds_tenth_value() { fn allocate_adds_tenth_value() {
let mut allocator = create_allocator(&[(1, 9)]); let mut allocator = create_allocator([(1, 9)]);
assert_eq!(allocator.allocate(), 10); assert_eq!(allocator.allocate(), 10);
check_allocator(allocator, &[(1, 10)]); check_allocator(allocator, [(1, 10)]);
} }
#[test] #[test]
fn allocate_adds_value_for_two_ranges_starting_with_one() { fn allocate_adds_value_for_two_ranges_starting_with_one() {
let mut allocator = create_allocator(&[(1, 5), (10, 15)]); let mut allocator = create_allocator([(1, 5), (10, 15)]);
assert_eq!(allocator.allocate(), 6); assert_eq!(allocator.allocate(), 6);
check_allocator(allocator, &[(1, 6), (10, 15)]); check_allocator(allocator, [(1, 6), (10, 15)]);
} }
#[test] #[test]
fn allocate_combines_two_adjacent_ranges_starting_with_one() { fn allocate_combines_two_adjacent_ranges_starting_with_one() {
let mut allocator = create_allocator(&[(1, 5), (7, 15)]); let mut allocator = create_allocator([(1, 5), (7, 15)]);
assert_eq!(allocator.allocate(), 6); assert_eq!(allocator.allocate(), 6);
check_allocator(allocator, &[(1, 15)]); check_allocator(allocator, [(1, 15)]);
} }
#[test] #[test]
fn allocate_combines_two_adjacent_ranges_starting_with_one_extra() { fn allocate_combines_two_adjacent_ranges_starting_with_one_extra() {
let mut allocator = create_allocator(&[(1, 5), (7, 15), (20, 30)]); let mut allocator = create_allocator([(1, 5), (7, 15), (20, 30)]);
assert_eq!(allocator.allocate(), 6); assert_eq!(allocator.allocate(), 6);
check_allocator(allocator, &[(1, 15), (20, 30)]); check_allocator(allocator, [(1, 15), (20, 30)]);
} }
#[test] #[test]
fn allocate_adds_value_for_range_starting_with_two() { fn allocate_adds_value_for_range_starting_with_two() {
let mut allocator = create_allocator(&[(2, 10)]); let mut allocator = create_allocator([(2, 10)]);
assert_eq!(allocator.allocate(), 1); assert_eq!(allocator.allocate(), 1);
check_allocator(allocator, &[(1, 10)]); check_allocator(allocator, [(1, 10)]);
} }
#[test] #[test]
fn allocate_adds_value_for_range_starting_with_two_extra() { fn allocate_adds_value_for_range_starting_with_two_extra() {
let mut allocator = create_allocator(&[(2, 10), (20, 30)]); let mut allocator = create_allocator([(2, 10), (20, 30)]);
assert_eq!(allocator.allocate(), 1); assert_eq!(allocator.allocate(), 1);
check_allocator(allocator, &[(1, 10), (20, 30)]); check_allocator(allocator, [(1, 10), (20, 30)]);
} }
#[test] #[test]
fn allocate_adds_value_for_range_starting_with_ten() { fn allocate_adds_value_for_range_starting_with_ten() {
let mut allocator = create_allocator(&[(10, 20)]); let mut allocator = create_allocator([(10, 20)]);
assert_eq!(allocator.allocate(), 1); assert_eq!(allocator.allocate(), 1);
check_allocator(allocator, &[(1, 1), (10, 20)]); check_allocator(allocator, [(1, 1), (10, 20)]);
} }

Loading…
Cancel
Save