You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: route.rs
    path of file: ./repos/nmstate/rust/src/lib/unit_tests/nm
    
    the code of the file until where you have to start completion: // SPDX-License-Identifier: Apache-2.0

use crate::{
    nm::route::store_route_config,
    unit_tests::testlib::{
        gen_test_routes_conf, new_eth_iface, new_test_nic_with_static_ip,
        TEST_IPV4_ADDR1, TEST_IPV4_NET1, TEST_IPV6_ADDR1, TEST_IPV6_NET1,
        TEST_NIC,
    },
    InterfaceType, Interfaces, MergedNetworkState, NetworkState, RouteEntry,
    RouteState,
};

#[test]
fn test_add_routes_to_new_interface() {
    let mut cur_net_state = NetworkState::new();
    cur_net_state.interfaces.push(new_eth_iface(TEST_NIC));

    let des_iface = new_test_nic_with_static_ip();
    let mut des_ifaces = Interfaces::new();
    des_ifaces.push(des_iface);
    let mut des_net_state = NetworkState::new();
    des_net_state.interfaces = des_ifaces;
    des_net_state.routes = gen_test_routes_conf();

    let mut merged_state =
        MergedNetworkState::new(des_net_state, cur_net_state, false, false)
            .unwrap();

    store_route_config(&mut merged_state).unwrap();

    let iface = merged_state
        .interfaces
        .get_iface(TEST_NIC, InterfaceType::Unknown)
        .unwrap()
        .for_apply
        .as_ref()
        .unwrap();

    let config_routes = 
    
fn test_wildcard_absent_routes() {
    let cur_iface = new_test_nic_with_static_ip();
    let mut cur_ifaces = Interfaces::new();
    cur_ifaces.push(cur_iface);
    let mut cur_net_state = NetworkState::new();
    cur_net_state.interfaces = cur_ifaces;
    cur_net_state.routes = gen_test_routes_conf();

    let mut des_net_state = NetworkState::new();
    let mut absent_routes = Vec::new();
    let mut absent_route = RouteEntry::new();
    absent_route.state = Some(RouteState::Absent);
    absent_route.next_hop_addr = Some(TEST_IPV4_ADDR1.to_string());
    absent_routes.push(absent_route);
    let mut absent_route = RouteEntry::new();
    absent_route.state = Some(RouteState::Absent);
    absent_route.next_hop_addr = Some(TEST_IPV6_ADDR1.to_string());
    absent_routes.push(absent_route);

    des_net_state.routes.config = Some(absent_routes);

    let mut merged_state =
        MergedNetworkState::new(des_net_state, cur_net_state, false, false)
            .unwrap();

    store_route_config(&mut merged_state).unwrap();

    let iface = merged_state
        .interfaces
        .get_iface(TEST_NIC, InterfaceType::Unknown)
        .unwrap()
        .for_apply
        .as_ref()
        .unwrap();

    assert_eq!(iface.base_iface().routes, Some(Vec::new()));
    assert_eq!(iface.name(), TEST_NIC);
    assert_eq!(iface.iface_type(), InterfaceType::Ethernet);
}