/*
 * GraphDistanceGTest.cpp
 *
 *  Created on: 23.07.2013
 *      Author: Henning Meyerhenke (meyerhenke@kit.edu)
 */

#include <gtest/gtest.h>

#include "../../../include/networkit/distance/GraphDistance.hpp"
#include "../../../include/networkit/graph/Graph.hpp"
#include "../../../include/networkit/io/METISGraphReader.hpp"

namespace NetworKit {

class GraphDistanceGTest: public testing::Test{};

// TODO: fix graph
TEST_F(GraphDistanceGTest, testGraphWeightedDistance) {
	METISGraphReader reader;
	Graph g = reader.read("input/grid-5x5-dist-arch.graph");

	GraphDistance gd;

	edgeweight dist_0_24 = gd.weightedDistance(g, 0, 24);
	edgeweight dist_24_0 = gd.weightedDistance(g, 24, 0);
	edgeweight dist_0_4 = gd.weightedDistance(g, 0, 4);
	edgeweight dist_4_0 = gd.weightedDistance(g, 4, 0);
	edgeweight dist_1_23 = gd.weightedDistance(g, 1, 23);
	edgeweight dist_5_19 = gd.weightedDistance(g, 5, 19);

	EXPECT_EQ(dist_0_24, 8);
	EXPECT_EQ(dist_24_0, 8);
	EXPECT_EQ(dist_0_4, 4);
	EXPECT_EQ(dist_4_0, 4);
	EXPECT_EQ(dist_1_23, 6);
	EXPECT_EQ(dist_5_19, 6);
}

TEST_F(GraphDistanceGTest, testGraphUnweightedDistance) {
	METISGraphReader reader;
	Graph g = reader.read("input/grid-5x5-dist-arch.graph");

	GraphDistance gd;

	edgeweight dist_0_24 = gd.unweightedDistance(g, 0, 24);
	edgeweight dist_24_0 = gd.unweightedDistance(g, 24, 0);
	edgeweight dist_0_4 = gd.unweightedDistance(g, 0, 4);
	edgeweight dist_4_0 = gd.unweightedDistance(g, 4, 0);
	edgeweight dist_1_23 = gd.unweightedDistance(g, 1, 23);
	edgeweight dist_5_19 = gd.unweightedDistance(g, 5, 19);

	EXPECT_EQ(dist_0_24, 8);
	EXPECT_EQ(dist_24_0, 8);
	EXPECT_EQ(dist_0_4, 4);
	EXPECT_EQ(dist_4_0, 4);
	EXPECT_EQ(dist_1_23, 6);
	EXPECT_EQ(dist_5_19, 6);
}


} /* namespace NetworKit */
