534 lines
30 KiB
C++
534 lines
30 KiB
C++
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// Licensed under the MIT License.
|
|
|
|
#include "pch.h"
|
|
#include <WexTestClass.h>
|
|
|
|
#include "CalcViewModel\HistoryViewModel.h"
|
|
#include "CalcViewModel\StandardCalculatorViewModel.h"
|
|
|
|
using namespace CalculationManager;
|
|
using namespace CalculatorApp;
|
|
using namespace CalculatorApp::Common;
|
|
using namespace CalculatorApp::ViewModel;
|
|
using namespace CalculatorUnitTests;
|
|
using namespace Platform;
|
|
using namespace std;
|
|
using namespace Windows::Storage;
|
|
using namespace Windows::ApplicationModel::Resources;
|
|
|
|
namespace CalculatorFunctionalTests
|
|
{
|
|
class HistoryTests
|
|
{
|
|
public:
|
|
TEST_CLASS(HistoryTests);
|
|
TEST_METHOD(TestHistoryItemClicked);
|
|
TEST_METHOD(TestHistoryItemAddSingleItem);
|
|
TEST_METHOD(TestHistoryItemAddMaxItems);
|
|
TEST_METHOD(TestHistoryClearCommand);
|
|
TEST_METHOD(TestHistoryClearCommandWithEmptyHistory);
|
|
TEST_METHOD(TestReLoadHistory);
|
|
TEST_METHOD(TestSaveAndReloadHistory);
|
|
TEST_METHOD(TestSerializeDeSerializeHistoryItem);
|
|
TEST_METHOD(TestHistoryItemWithPrettyExpressions);
|
|
TEST_METHOD(TestHistoryItemWithPrettyExpressionsMixedRadix);
|
|
TEST_METHOD(TestHistoryItemLoadAndContinueCalculation);
|
|
TEST_METHOD(TestDisplayValueAutomationNames);
|
|
TEST_METHOD(TestRadixAutomationName);
|
|
TEST_METHOD(TestHistoryEmpty);
|
|
|
|
private:
|
|
HistoryViewModel^ m_historyViewModel;
|
|
StandardCalculatorViewModel^ m_standardViewModel;
|
|
|
|
void Initialize(unsigned int windowId = 0)
|
|
{
|
|
m_standardViewModel = ref new StandardCalculatorViewModel();
|
|
m_standardViewModel->IsStandard = true;
|
|
m_historyViewModel = ref new HistoryViewModel(m_standardViewModel->m_standardCalculatorManager.get());
|
|
m_historyViewModel->SetCalculatorDisplay(m_standardViewModel->m_calculatorDisplay);
|
|
}
|
|
|
|
void Cleanup(unsigned int windowId = 0)
|
|
{
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeBasic);
|
|
m_historyViewModel->OnClearCommand(nullptr);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeScientific);
|
|
m_historyViewModel->OnClearCommand(nullptr);
|
|
m_standardViewModel->m_standardCalculatorManager->Reset();
|
|
}
|
|
|
|
bool IsHistoryContainerEmpty(_In_ String^ historyContainerKey)
|
|
{
|
|
ApplicationDataContainer^ localSettings = ApplicationData::Current->LocalSettings;
|
|
return !(localSettings->Containers->HasKey(historyContainerKey));
|
|
}
|
|
|
|
String^ GetHistoryContainerKeyHelper(CalculationManager::CALCULATOR_MODE cMode)
|
|
{
|
|
ValueType^ modeValue = static_cast<int>(cMode);
|
|
return String::Concat(modeValue->ToString(), L"_History");
|
|
}
|
|
|
|
void MockOnHistoryItemClicked(CalculatorApp::ViewModel::HistoryItemViewModel^ e)
|
|
{
|
|
m_standardViewModel->SetHistoryExpressionDisplay(e->GetTokens(), e->GetCommands());
|
|
m_standardViewModel->SetExpressionDisplay(e->GetTokens(), e->GetCommands());
|
|
m_standardViewModel->SetPrimaryDisplay(e->Result->Data(), false/*IsError*/);
|
|
m_standardViewModel->IsFToEEnabled = false;
|
|
}
|
|
|
|
void AddSingleHistoryItem(unsigned int windowId = 0)
|
|
{
|
|
Initialize(windowId);
|
|
int initialSize = m_historyViewModel->ItemSize;
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command8);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
int sizeAfterItemAdd = m_historyViewModel->ItemSize;
|
|
auto historyItem = m_standardViewModel->m_standardCalculatorManager->GetHistoryItem(0);
|
|
String^ expression = UtfUtils::LRO + L"1 + 8 =" + UtfUtils::PDF;
|
|
String ^result = StringReference(L"9");
|
|
VERIFY_ARE_EQUAL(initialSize + 1, sizeAfterItemAdd);
|
|
VERIFY_ARE_EQUAL(expression, StringReference(historyItem->historyItemVector.expression.c_str()));
|
|
VERIFY_ARE_EQUAL(result, StringReference(historyItem->historyItemVector.result.c_str()));
|
|
Cleanup(windowId);
|
|
}
|
|
|
|
void AddMaxHistoryItems(unsigned int windowId = 0)
|
|
{
|
|
Initialize(windowId);
|
|
int initialSize = m_historyViewModel->ItemSize;
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
for (int i = 1; i < m_standardViewModel->m_standardCalculatorManager->MaxHistorySize(); i++)
|
|
{
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command2);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
}
|
|
VERIFY_ARE_EQUAL(m_historyViewModel->ItemSize, m_standardViewModel->m_standardCalculatorManager->MaxHistorySize());
|
|
String ^expression = UtfUtils::LRO + L"1 + 1 =" + UtfUtils::PDF;
|
|
int output = 2;
|
|
String ^result = output.ToString();
|
|
auto historyItem = m_standardViewModel->m_standardCalculatorManager->GetHistoryItem(0);
|
|
VERIFY_ARE_EQUAL(expression, StringReference(historyItem->historyItemVector.expression.c_str()));
|
|
VERIFY_ARE_EQUAL(result, StringReference(historyItem->historyItemVector.result.c_str()));
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command5);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
VERIFY_ARE_EQUAL(m_historyViewModel->ItemSize, m_standardViewModel->m_standardCalculatorManager->MaxHistorySize());
|
|
expression = UtfUtils::LRO + L"1 + 2 =" + UtfUtils::PDF;
|
|
output = 3;
|
|
result = output.ToString();
|
|
historyItem = m_standardViewModel->m_standardCalculatorManager->GetHistoryItem(0);
|
|
VERIFY_ARE_EQUAL(expression, StringReference(historyItem->historyItemVector.expression.c_str()));
|
|
VERIFY_ARE_EQUAL(result, StringReference(historyItem->historyItemVector.result.c_str()));
|
|
Cleanup(windowId);
|
|
}
|
|
|
|
void ReloadHistory(unsigned int windowId = 0)
|
|
{
|
|
Initialize(windowId);
|
|
|
|
m_standardViewModel->m_standardCalculatorManager->Reset();
|
|
int scientificItems = 5;
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeScientific);
|
|
for (int i = 0; i < scientificItems; i++)
|
|
{
|
|
Command nextCommand = Command(130 + i);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(nextCommand);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
}
|
|
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeBasic);
|
|
int standardItems = 2;
|
|
for (int i = 0; i < standardItems; i++)
|
|
{
|
|
Command nextCommand = Command(130 + i);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(nextCommand);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
}
|
|
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeScientific);
|
|
m_historyViewModel->ReloadHistory(ViewMode::Scientific);
|
|
VERIFY_ARE_EQUAL(scientificItems, m_historyViewModel->ItemSize);
|
|
for (int i = 0; i < scientificItems; i++)
|
|
{
|
|
wstring expr = L"1 + " + wstring(i.ToString()->Data()) + L" =";
|
|
expr = UtfUtils::LRO + expr + UtfUtils::PDF;
|
|
int output = 1 + i;
|
|
String ^result = output.ToString();
|
|
auto historyItem = m_standardViewModel->m_standardCalculatorManager->GetHistoryItem(i);
|
|
VERIFY_ARE_EQUAL(expr, historyItem->historyItemVector.expression);
|
|
VERIFY_ARE_EQUAL(result, StringReference(historyItem->historyItemVector.result.c_str()));
|
|
}
|
|
|
|
m_historyViewModel->ReloadHistory(ViewMode::Standard);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeBasic);
|
|
VERIFY_ARE_EQUAL(standardItems, m_historyViewModel->ItemSize);
|
|
for (int i = 0; i < standardItems; i++)
|
|
{
|
|
wstring expr = L"1 + " + wstring(i.ToString()->Data()) + L" =";
|
|
expr = UtfUtils::LRO + expr + UtfUtils::PDF;
|
|
int output = 1 + i;
|
|
String ^result = output.ToString();
|
|
auto historyItem = m_standardViewModel->m_standardCalculatorManager->GetHistoryItem(i);
|
|
VERIFY_ARE_EQUAL(expr, historyItem->historyItemVector.expression);
|
|
VERIFY_ARE_EQUAL(result, StringReference(historyItem->historyItemVector.result.c_str()));
|
|
}
|
|
Cleanup(windowId);
|
|
}
|
|
|
|
void ClearHistory(unsigned int windowId = 0)
|
|
{
|
|
Initialize(windowId);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeScientific);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command2);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeBasic);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command2);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
m_historyViewModel->OnClearCommand(nullptr);
|
|
VERIFY_ARE_EQUAL(0, m_historyViewModel->ItemSize);
|
|
VERIFY_IS_TRUE(IsHistoryContainerEmpty(GetHistoryContainerKeyHelper(CM_STD)));
|
|
VERIFY_IS_TRUE(IsHistoryContainerEmpty(GetHistoryContainerKeyHelper(CM_SCI)));
|
|
Cleanup(windowId);
|
|
}
|
|
|
|
void SerializeDeSerializeHistoryItem(unsigned int windowId = 0)
|
|
{
|
|
Initialize(windowId);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeScientific);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command2);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
auto itemBeforeSerializeDeserialize = m_standardViewModel->m_standardCalculatorManager->GetHistoryItem(0);
|
|
m_historyViewModel->SaveHistory();
|
|
m_historyViewModel->ReloadHistory(ViewMode::Scientific);
|
|
auto itemAfterSerializeDeserialize = m_standardViewModel->m_standardCalculatorManager->GetHistoryItem(0);
|
|
VERIFY_IS_TRUE((itemBeforeSerializeDeserialize->historyItemVector.expression == itemAfterSerializeDeserialize->historyItemVector.expression) && (itemBeforeSerializeDeserialize->historyItemVector.result == itemAfterSerializeDeserialize->historyItemVector.result) && (itemBeforeSerializeDeserialize->historyItemVector.spCommands == itemAfterSerializeDeserialize->historyItemVector.spCommands) && (itemBeforeSerializeDeserialize->historyItemVector.spTokens == itemAfterSerializeDeserialize->historyItemVector.spTokens));
|
|
Cleanup(windowId);
|
|
}
|
|
|
|
void SaveAndReloadHistory(unsigned int windowid = 0)
|
|
{
|
|
Initialize(windowid);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeScientific);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command8);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command2);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeBasic);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command6);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
int itemsBeforeSaveAndReload = m_historyViewModel->ItemSize;
|
|
m_historyViewModel->SaveHistory();
|
|
m_historyViewModel->ReloadHistory(ViewMode::Scientific);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeScientific);
|
|
wstring expr = L"1 + 8 =";
|
|
// add double quotes around the expression
|
|
expr = UtfUtils::LRO + expr + UtfUtils::PDF;
|
|
String ^result = StringReference(L"9");
|
|
int itemsAfterSaveAndReload = m_historyViewModel->ItemSize;
|
|
auto historyItem = m_standardViewModel->m_standardCalculatorManager->GetHistoryItem(0);
|
|
|
|
VERIFY_ARE_EQUAL(expr, historyItem->historyItemVector.expression);
|
|
VERIFY_ARE_EQUAL(result, StringReference(historyItem->historyItemVector.result.c_str()));
|
|
VERIFY_ARE_NOT_EQUAL(itemsBeforeSaveAndReload, itemsAfterSaveAndReload);
|
|
VERIFY_ARE_EQUAL(itemsBeforeSaveAndReload, itemsAfterSaveAndReload + 1);
|
|
Cleanup(windowid);
|
|
}
|
|
|
|
void HistoryItemWithPrettyExpressions(unsigned int windowId = 0)
|
|
{
|
|
Initialize(windowId);
|
|
Command commands[] = { Command::CommandSIN, Command::CommandCOS, Command::CommandTAN, Command::CommandASIN, Command::CommandACOS, Command::CommandATAN };
|
|
Command mode[] = { Command::CommandDEG, Command::CommandRAD, Command::CommandGRAD };
|
|
int modes = sizeof(mode) / sizeof(Command);
|
|
int commandsSize = sizeof(commands) / sizeof(Command);
|
|
ResourceLoader^ m_uiResourceLoader = ResourceLoader::GetForViewIndependentUse(L"CEngineStrings");
|
|
int itemIndex = 0;
|
|
int commandResource = 67;
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeScientific);
|
|
for (int index = 0; index < modes; index++)
|
|
{
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(mode[index]);
|
|
for (int command = 0; command < commandsSize; command++)
|
|
{
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(commands[command]);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
auto historyItem = m_standardViewModel->m_standardCalculatorManager->GetHistoryItem(itemIndex);
|
|
String^ expression = m_uiResourceLoader->GetString(commandResource.ToString());
|
|
expression += L"( 1 ) =";
|
|
wstring expr = wstring(expression->Data());
|
|
expr = UtfUtils::LRO + expr + UtfUtils::PDF;
|
|
VERIFY_ARE_EQUAL(historyItem->historyItemVector.expression, expr);
|
|
commandResource++;
|
|
itemIndex++;
|
|
}
|
|
}
|
|
Cleanup(windowId);
|
|
}
|
|
|
|
void HistoryItemWithPrettyExpressionsMixedRadix(unsigned int windowId = 0)
|
|
{
|
|
Initialize(windowId);
|
|
ResourceLoader^ m_uiResourceLoader = ResourceLoader::GetForViewIndependentUse(L"CEngineStrings");
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeScientific);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandDEG);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandSIN);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandRAD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandSIN);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandGRAD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandSIN);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
auto historyItem = m_standardViewModel->m_standardCalculatorManager->GetHistoryItem(0);
|
|
String^ expression = m_uiResourceLoader->GetString(L"67");
|
|
expression += L"( 1 ) + ";
|
|
expression += m_uiResourceLoader->GetString(L"73");
|
|
expression += L"( 1 ) + ";
|
|
expression += m_uiResourceLoader->GetString(L"79");
|
|
expression += L"( 1 ) =";
|
|
wstring expr = wstring(expression->Data());
|
|
expr = UtfUtils::LRO + expr + UtfUtils::PDF;
|
|
VERIFY_ARE_EQUAL(historyItem->historyItemVector.expression,expr);
|
|
|
|
Cleanup(windowId);
|
|
}
|
|
|
|
void HistoryItemClicked(unsigned int windowId = 0)
|
|
{
|
|
Initialize(windowId);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeScientific);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command5);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command3);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
auto historyItem = m_standardViewModel->m_standardCalculatorManager->GetHistoryItem(0);
|
|
String^ expression = StringReference(historyItem->historyItemVector.expression.c_str());
|
|
String^ result = StringReference(historyItem->historyItemVector.result.c_str());
|
|
HistoryItemViewModel ^ item = ref new HistoryItemViewModel(expression, result, historyItem->historyItemVector.spTokens, historyItem->historyItemVector.spCommands);
|
|
MockOnHistoryItemClicked(item);
|
|
VERIFY_ARE_EQUAL(StringReference(L"9"), m_standardViewModel->DisplayValue);
|
|
VERIFY_ARE_EQUAL(StringReference(L"1"), m_standardViewModel->ExpressionTokens->GetAt(0)->Token);
|
|
VERIFY_ARE_EQUAL(StringReference(L" "), m_standardViewModel->ExpressionTokens->GetAt(1)->Token);
|
|
VERIFY_ARE_EQUAL(StringReference(L"+"), m_standardViewModel->ExpressionTokens->GetAt(2)->Token);
|
|
VERIFY_ARE_EQUAL(StringReference(L" "), m_standardViewModel->ExpressionTokens->GetAt(3)->Token);
|
|
VERIFY_ARE_EQUAL(StringReference(L"5"), m_standardViewModel->ExpressionTokens->GetAt(4)->Token);
|
|
VERIFY_ARE_EQUAL(StringReference(L" "), m_standardViewModel->ExpressionTokens->GetAt(5)->Token);
|
|
VERIFY_ARE_EQUAL(StringReference(L"+"), m_standardViewModel->ExpressionTokens->GetAt(6)->Token);
|
|
VERIFY_ARE_EQUAL(StringReference(L" "), m_standardViewModel->ExpressionTokens->GetAt(7)->Token);
|
|
Cleanup(windowId);
|
|
}
|
|
|
|
void HistoryItemLoadAndContinueCalculation(unsigned int windowId = 0)
|
|
{
|
|
Initialize(windowId);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeBasic);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command5);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command3);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
|
|
auto historyItem = m_standardViewModel->m_standardCalculatorManager->GetHistoryItem(0);
|
|
String^ expression = StringReference(historyItem->historyItemVector.expression.c_str());
|
|
String^ result = StringReference(historyItem->historyItemVector.result.c_str());
|
|
HistoryItemViewModel ^ item = ref new HistoryItemViewModel(expression, result, historyItem->historyItemVector.spTokens, historyItem->historyItemVector.spCommands);
|
|
MockOnHistoryItemClicked(item);
|
|
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command5);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
VERIFY_ARE_EQUAL(StringReference(L"14"), m_standardViewModel->DisplayValue);
|
|
historyItem = m_standardViewModel->m_standardCalculatorManager->GetHistoryItem(0);
|
|
expression = StringReference(historyItem->historyItemVector.expression.c_str());
|
|
result = StringReference(historyItem->historyItemVector.result.c_str());
|
|
item = ref new HistoryItemViewModel(expression, result, historyItem->historyItemVector.spTokens, historyItem->historyItemVector.spCommands);
|
|
MockOnHistoryItemClicked(item);
|
|
VERIFY_ARE_EQUAL(StringReference(L"9"), m_standardViewModel->DisplayValue);
|
|
|
|
historyItem = m_standardViewModel->m_standardCalculatorManager->GetHistoryItem(1);
|
|
expression = StringReference(historyItem->historyItemVector.expression.c_str());
|
|
result = StringReference(historyItem->historyItemVector.result.c_str());
|
|
item = ref new HistoryItemViewModel(expression, result, historyItem->historyItemVector.spTokens, historyItem->historyItemVector.spCommands);
|
|
MockOnHistoryItemClicked(item);
|
|
VERIFY_ARE_EQUAL(StringReference(L"14"), m_standardViewModel->DisplayValue);
|
|
Cleanup(windowId);
|
|
}
|
|
|
|
void DisplayValueAutomationNames(unsigned int windowId = 0)
|
|
{
|
|
Initialize(windowId);
|
|
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command8);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
String ^expression = StringReference(L"Display is 9");
|
|
VERIFY_ARE_EQUAL(expression, m_standardViewModel->CalculationResultAutomationName);
|
|
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeScientific);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command5);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
expression = StringReference(L"Display is 6");
|
|
VERIFY_ARE_EQUAL(expression, m_standardViewModel->CalculationResultAutomationName);
|
|
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeProgrammer);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command2);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
expression = StringReference(L"Display is 3");
|
|
VERIFY_ARE_EQUAL(expression, m_standardViewModel->CalculationResultAutomationName);
|
|
|
|
Cleanup(windowId);
|
|
}
|
|
|
|
void RadixAutomationName(unsigned int windowId = 0)
|
|
{
|
|
Initialize(windowId);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeProgrammer);
|
|
m_standardViewModel->IsProgrammer = true;
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command1);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandADD);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::Command7);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::CommandEQU);
|
|
String ^expression = L"HexaDecimal" + L" 8";
|
|
String ^result = L"HexaDecimal " + Utils::GetStringValue(m_standardViewModel->HexDisplayValue);
|
|
VERIFY_ARE_EQUAL(expression, result);
|
|
expression = StringReference(L"Octal 10");
|
|
result = L"Octal " + Utils::GetStringValue(m_standardViewModel->OctalDisplayValue);
|
|
VERIFY_ARE_EQUAL(expression, result);
|
|
expression = StringReference(L"Binary 1000");
|
|
result = L"Binary " + Utils::GetStringValue(m_standardViewModel->BinaryDisplayValue);
|
|
VERIFY_ARE_EQUAL(expression, result);
|
|
Cleanup(windowId);
|
|
}
|
|
|
|
void HistoryEmpty(unsigned int windowId = 0)
|
|
{
|
|
Initialize(windowId);
|
|
VERIFY_ARE_EQUAL(0, m_historyViewModel->ItemSize);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeScientific);
|
|
VERIFY_ARE_EQUAL(0, m_historyViewModel->ItemSize);
|
|
Cleanup(windowId);
|
|
}
|
|
|
|
void HistoryClearCommandWithEmptyHistory(unsigned int windowId = 0)
|
|
{
|
|
Initialize(windowId);
|
|
VERIFY_ARE_EQUAL(0, m_historyViewModel->ItemSize);
|
|
m_standardViewModel->m_standardCalculatorManager->SendCommand(Command::ModeScientific);
|
|
m_historyViewModel->OnClearCommand(nullptr);
|
|
VERIFY_ARE_EQUAL(0, m_historyViewModel->ItemSize);
|
|
Cleanup(windowId);
|
|
|
|
}
|
|
};
|
|
|
|
void HistoryTests::TestHistoryItemAddSingleItem()
|
|
{
|
|
AddSingleHistoryItem();
|
|
}
|
|
|
|
void HistoryTests::TestHistoryItemAddMaxItems()
|
|
{
|
|
AddMaxHistoryItems();
|
|
}
|
|
|
|
void HistoryTests::TestReLoadHistory()
|
|
{
|
|
ReloadHistory();
|
|
}
|
|
|
|
void HistoryTests::TestHistoryClearCommand()
|
|
{
|
|
ClearHistory();
|
|
}
|
|
|
|
void HistoryTests::TestSerializeDeSerializeHistoryItem()
|
|
{
|
|
SerializeDeSerializeHistoryItem();
|
|
}
|
|
|
|
void HistoryTests::TestSaveAndReloadHistory()
|
|
{
|
|
SaveAndReloadHistory();
|
|
}
|
|
|
|
void HistoryTests::TestHistoryItemWithPrettyExpressions()
|
|
{
|
|
HistoryItemWithPrettyExpressions();
|
|
}
|
|
|
|
void HistoryTests::TestHistoryItemWithPrettyExpressionsMixedRadix()
|
|
{
|
|
HistoryItemWithPrettyExpressionsMixedRadix();
|
|
}
|
|
|
|
void HistoryTests::TestHistoryItemClicked()
|
|
{
|
|
HistoryItemClicked();
|
|
}
|
|
|
|
void HistoryTests::TestHistoryItemLoadAndContinueCalculation()
|
|
{
|
|
HistoryItemLoadAndContinueCalculation();
|
|
}
|
|
|
|
void HistoryTests::TestDisplayValueAutomationNames()
|
|
{
|
|
DisplayValueAutomationNames();
|
|
}
|
|
|
|
void HistoryTests::TestRadixAutomationName()
|
|
{
|
|
RadixAutomationName();
|
|
}
|
|
|
|
void HistoryTests::TestHistoryEmpty()
|
|
{
|
|
HistoryEmpty();
|
|
}
|
|
|
|
void HistoryTests::TestHistoryClearCommandWithEmptyHistory()
|
|
{
|
|
HistoryClearCommandWithEmptyHistory();
|
|
}
|
|
}
|
|
|