TEST(RepoBSONFactoryTest, MakeMapNodeTest)
{
	uint32_t width = 1, zoom = 19;
	float tilt = 2.0, tileSize = 10.5, longit = 2.3546, latit = 5.3235;
	repo_vector_t centrePoint = { 3.12345, 54.3536, 435.32 };
	std::string name = "mapTest";
	std::string apiKey = "apiKey";

	MapNode map = RepoBSONFactory::makeMapNode(width, zoom, tilt, tileSize, longit, latit, centrePoint, apiKey, name);

	EXPECT_FALSE(map.isEmpty());
	EXPECT_EQ(name, map.getName());
	EXPECT_EQ(apiKey, map.getAPIKey());
	EXPECT_EQ(map.getTypeAsEnum(), NodeType::MAP);

	EXPECT_EQ(width, map.getWidth());
	EXPECT_EQ(zoom, map.getZoom());
	EXPECT_EQ(tileSize, map.getTileSize());
	EXPECT_EQ(tilt, map.getYRot());
	EXPECT_EQ(longit, map.getField(REPO_NODE_MAP_LABEL_LONG).Double());
	EXPECT_EQ(latit, map.getField(REPO_NODE_MAP_LABEL_LAT).Double());

	repo_vector_t vec;
	if (map.hasField(REPO_NODE_MAP_LABEL_TRANS))
	{
		std::vector<float> floatArr = map.getFloatArray(REPO_NODE_MAP_LABEL_TRANS);
		if (floatArr.size() >= 3)
		{
			//repo_vector_t is effectively float[3]
			std::copy(floatArr.begin(), floatArr.begin() + 3, (float*)&vec);
		}
	}

	EXPECT_TRUE(compareVectors(centrePoint, vec));
}