#include "pch.h"

#pragma once
#include <BWAPI.h>

#include "../Source/BWEM/src/bwem.h";
#include "../Source/Analysis.h";

using namespace BWAPI;

namespace AnalysisTest
{
	BWAPI::UnitType drone = BWAPI::UnitTypes::Zerg_Drone;
	BWAPI::TechType tech = BWAPI::TechTypes::Burrowing;
	BWAPI::UpgradeType upgrade = BWAPI::UpgradeTypes::Zerg_Missile_Attacks;
	TEST(AnalysisTest, analyzeTech)
	{
		EXPECT_EQ(Analysis::analyze(tech), 0);
	}

	TEST(AnalysisTest, DISABLED_analyzeUnit)
	{
		EXPECT_GE(Analysis::analyze(drone), 0);
	}

	TEST(AnalysisTest, analyzeUpgrade)
	{
		EXPECT_GE(Analysis::analyze(upgrade), 0);
	}

	TEST(AnalysisTest, DISABLED_analyzeDrone)
	{
		EXPECT_EQ(0, 0);
	}

	TEST(AnalysisTest, DISABLED_analyzeEvoChamber)
	{
		EXPECT_EQ(0, 0);
	}

	TEST(AnalysisTest, analyzeGas)
	{
		EXPECT_EQ(Analysis::analyzeGas(), 1);
	}

	TEST(AnalysisTest, analyzeGroundArmor)
	{
		EXPECT_EQ(Analysis::analyzeGroundArmor(), 1);
	}

	TEST(AnalysisTest, DISABLED_analyzeHatchery)
	{
		EXPECT_EQ(0, 0);
	}

	TEST(AnalysisTest, analyzeHive)
	{
		EXPECT_EQ(Analysis::analyzeHive(), 0.8);
	}

	TEST(AnalysisTest, DISABLED_analyzeHydraDen)
	{
		EXPECT_EQ(0, 0);
	}

	TEST(AnalysisTest, DISABLED_analyzeHydralisk)
	{
		EXPECT_EQ(0, 0);
	}

	TEST(AnalysisTest, analyzeHydraRange)
	{
		EXPECT_EQ(Analysis::analyzeHydraRange(), 1);
	}

	TEST(AnalysisTest, analyzeHydraSpeed)
	{
		EXPECT_EQ(Analysis::analyzeHydraSpeed(), 1);
	}

	TEST(AnalysisTest, analyzeLair)
	{
		EXPECT_EQ(Analysis::analyzeLair(), 0.8);
	}

	TEST(AnalysisTest, analyzeLingSpeed)
	{
		EXPECT_EQ(Analysis::analyzeLingSpeed(), 1);
	}

	TEST(AnalysisTest, analyzeMissile)
	{
		EXPECT_EQ(Analysis::analyzeMissile(), 1);
	}

	TEST(AnalysisTest, DISABLED_analyzeMutalisk)
	{
		EXPECT_EQ(0, 0);
	}

	TEST(AnalysisTest, DISABLED_analyzeOverlord)
	{
		EXPECT_EQ(0, 0);
	}

	TEST(AnalysisTest, analyzeOverlordSpeed)
	{
		EXPECT_EQ(Analysis::analyzeOverlordSpeed(), 1);
	}

	TEST(AnalysisTest, analyzeQueensNest)
	{
		EXPECT_EQ(Analysis::analyzeQueensNest(), 1);
	}

	TEST(AnalysisTest, DISABLED_analyzeSpawningPool)
	{
		EXPECT_EQ(0, 0);
	}

	TEST(AnalysisTest, analyzeSpire)
	{
		EXPECT_EQ(Analysis::analyzeSpire(), 1);
	}

	TEST(AnalysisTest, analyzeSpore)
	{
		EXPECT_EQ(Analysis::analyzeSpore(), 1);
	}

	TEST(AnalysisTest, analyzeSunken)
	{
		EXPECT_EQ(Analysis::analyzeSunken(), 1.3);
	}

	TEST(AnalysisTest, analyzeUltraCavern)
	{
		EXPECT_EQ(Analysis::analyzeUltraCavern(), 1);
	}

	TEST(AnalysisTest, DISABLED_analyzeUltralisk)
	{
		EXPECT_EQ(0, 0);
	}

	TEST(AnalysisTest, DISABLED_analyzeZergling)
	{
		EXPECT_EQ(0, 0);
	}
}