@Test
public void testRouteDelete() {

    // Firstly add a route
    testRouteAdd();
    IpPrefix prefix = Ip4Prefix.valueOf("1.1.1.0/24");
    // Construct the existing route entry
    ResolvedRoute resRoute = new ResolvedRoute(
            new Route(Route.Source.STATIC, prefix, Ip4Address.valueOf(PEER1_IP)),
            MacAddress.valueOf(MAC1));
    // Construct the existing MultiPointToSinglePoint intent
    TrafficSelector.Builder selectorBuilder =
            DefaultTrafficSelector.builder();
    selectorBuilder.matchEthType(Ethernet.TYPE_IPV4)
            .matchIPDst(prefix)
            .matchVlanId(VlanId.ANY);
    TrafficTreatment.Builder treatmentBuilder =
            DefaultTrafficTreatment.builder();
    treatmentBuilder.setEthDst(MacAddress.valueOf(MAC1)).popVlan();
    Set<ConnectPoint> ingressPoints = new HashSet<>();
    ingressPoints.add(CONN_POINT2);
    ingressPoints.add(CONN_POINT3);
    ingressPoints.add(CONN_POINT4);
    MultiPointToSinglePointIntent addedIntent =
            MultiPointToSinglePointIntent.builder()
                    .appId(APPID)
                    .key(Key.of(prefix.toString(), APPID))
                    .selector(selectorBuilder.build())
                    .treatment(treatmentBuilder.build())
                    .ingressPoints(ingressPoints)
                    .egressPoint(CONN_POINT1)
                    .constraints(SdxL3Fib.CONSTRAINTS)
                    .build();
    // Set up expectation
    reset(intentSynchronizer);
    // Setup the expected intents
    intentSynchronizer.withdraw(eqExceptId(addedIntent));
    replay(intentSynchronizer);
    // Send in the removed event
    routeListener.event(new RouteEvent(RouteEvent.Type.ROUTE_REMOVED, resRoute));
    verify(intentSynchronizer);
}