// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

//
// pch.h
// Header for standard system include files.
//

#pragma once

#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif

// Windows headers define min/max macros.
// Disable it for project code.
#define NOMINMAX

#define UNIT_TESTS

#include <windows.h>
#include <collection.h>
#include <ppltasks.h>
#include <assert.h>
#include <concrt.h>
#include <string>
#include <bitset>
#include <memory>
#include <vector>
#include <map>
#include <list>
#include <stack>
#include <deque>
#include <regex>
#include <concurrent_vector.h>
#include <experimental/resumable>
#include <pplawait.h>
#include <unordered_map>
#include <mutex>
#include <locale>
#include <sal.h>
#include <sstream>

// C++\WinRT Headers
#include "winrt/base.h"
#include "winrt/Windows.Foundation.Diagnostics.h"
#include "winrt/Windows.Globalization.h"
#include "winrt/Windows.Globalization.DateTimeFormatting.h"
#include "winrt/Windows.System.UserProfile.h"

namespace CalculatorApp
{
    namespace WF = Windows::Foundation;
    namespace WUC = Windows::UI::Core;
    namespace WX = Windows::UI::Xaml;
    namespace WXC = Windows::UI::Xaml::Controls;
    namespace WXCP = Windows::UI::Xaml::Controls::Primitives;
    namespace P = Platform;
    namespace PC = Platform::Collections;
    namespace WXI = Windows::UI::Xaml::Input;
    namespace WFC = Windows::Foundation::Collections;
    namespace WS = Windows::System;
    namespace WAR = Windows::ApplicationModel::Resources;
    namespace WXMA = Windows::UI::Xaml::Media::Animation;
    namespace WXD = Windows::UI::Xaml::Data;
    namespace WXInt = Windows::UI::Xaml::Interop;
    namespace WXM = Windows::UI::Xaml::Markup;
    namespace WXA = Windows::UI::Xaml::Automation;
}

// The following namespaces exist as a convenience to resolve
// ambiguity for Windows types in the Windows::UI::Xaml::Automation::Peers
// namespace that only exist on RS3.
// Once the app switches to min version RS3, the namespaces can be removed.
// TODO - MSFT 12735088
namespace StandardPeers = Windows::UI::Xaml::Automation::Peers;
namespace CalculatorApp::Common::Automation
{
}
namespace CustomPeers = CalculatorApp::Common::Automation;

// CalcManager Headers
#include "CalcManager/CalculatorVector.h"
#include "CalcManager/ExpressionCommand.h"
#include "CalcManager/CalculatorResource.h"
#include "CalcManager/CalculatorManager.h"
#include "CalcManager/UnitConverter.h"

// CalcViewModel Headers
#include "CalcViewModel/Common/DelegateCommand.h"
#include "CalcViewModel/Common/Utils.h"
#include "CalcViewModel/Common/MyVirtualKey.h"
#include "CalcViewModel/Common/NavCategory.h"
#include "CalcViewModel/Common/CalculatorButtonUser.h"
#include "CalcViewModel/Common/NetworkManager.h"

#include "Mocks/CurrencyHttpClient.h"
#include "Helpers.h"

#include "UnitTestApp.xaml.h"
