@Test
    public void WhenFailedPath01_ExpectHostWithPrefix001() throws UnknownHostException {
        // localhost: "000"
        // failed: "01"
        // resulted prefix: "001"
        RoutingTable routingTable = new RoutingTable();
        Host localhost = new PGridHost("127.0.0.1", 3000);
        localhost.setHostPath("000");
        routingTable.setLocalhost(localhost);

        Host host1 = new PGridHost("127.0.0.1", 1111);
        host1.setHostPath("1");
        Host host2 = new PGridHost("127.0.0.1", 2222);
        host2.setHostPath("01");
        Host host3 = new PGridHost("127.0.0.1", 3333);
        host3.setHostPath("0010");
        Host host4 = new PGridHost("127.0.0.1", 4444);
        host4.setHostPath("0011");

        routingTable.addReference(0, host1);
        routingTable.addReference(1, host2);
        routingTable.addReference(2, host3);
        routingTable.addReference(2, host4);


        PGridPath failedHostPath = new PGridPath("01");

        String root = failedHostPath.subPath(0, failedHostPath.length() - 1);
        char lastChar = failedHostPath.value(failedHostPath.length() - 1);
        PGridPath initialPath = new PGridPath(root);
        initialPath.revertAndAppend(lastChar);

        FixNodeAlgorithm algorithm = new ThesisFixNodeAlgorithm();
        List<Host> toContinue = algorithm.execute(routingTable, initialPath);

        Assert.assertTrue(toContinue.size() == 2);
        for (Host host : toContinue) {
            Assert.assertTrue(host.getHostPath().hasPrefix(new PGridPath("001")));
        }
    }