mirror of
https://github.com/Microsoft/calculator.git
synced 2025-08-22 22:23:29 -07:00
fix script and re apply style
This commit is contained in:
parent
e07f53d053
commit
f65610daff
9 changed files with 1077 additions and 793 deletions
|
@ -5,10 +5,6 @@ function usage {
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ $# -eq 0 ]; then
|
|
||||||
usage
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Variable that will hold the name of the clang-format command
|
# Variable that will hold the name of the clang-format command
|
||||||
FMT=""
|
FMT=""
|
||||||
|
|
||||||
|
@ -29,33 +25,22 @@ if [ -z "$FMT" ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
SRC_PATH="$@"
|
||||||
|
if [ -z "$SRC_PATH" ]; then
|
||||||
|
SRC_PATH="../../../src"
|
||||||
|
fi
|
||||||
|
|
||||||
# Check all of the arguments first to make sure they're all directories
|
# Check all of the arguments first to make sure they're all directories
|
||||||
for dir in "$@"; do
|
for dir in "$SRC_PATH"; do
|
||||||
if [ ! -d "${dir}" ]; then
|
if [ ! -d "${dir}" ]; then
|
||||||
echo "${dir} is not a directory"
|
echo "${dir} is not a directory"
|
||||||
usage
|
usage
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# Find a dominating file, starting from a given directory and going up.
|
|
||||||
find-dominating-file() {
|
|
||||||
if [ -r "$1"/"$2" ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
if [ "$1" = "/" ]; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
find-dominating-file "$(realpath "$1"/..)" "$2"
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
|
|
||||||
# Run clang-format -i on all of the things
|
# Run clang-format -i on all of the things
|
||||||
for dir in "$@"; do
|
for dir in "$SRC_PATH"; do
|
||||||
pushd "${dir}" &>/dev/null
|
pushd "${dir}" &>/dev/null
|
||||||
if ! find-dominating-file . .clang-format; then
|
|
||||||
echo "Failed to find dominating .clang-format starting at $PWD"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
find . \
|
find . \
|
||||||
\( -name '*.c' \
|
\( -name '*.c' \
|
||||||
-o -name '*.cc' \
|
-o -name '*.cc' \
|
||||||
|
@ -63,6 +48,6 @@ for dir in "$@"; do
|
||||||
-o -name '*.h' \
|
-o -name '*.h' \
|
||||||
-o -name '*.hh' \
|
-o -name '*.hh' \
|
||||||
-o -name '*.hpp' \) \
|
-o -name '*.hpp' \) \
|
||||||
-exec "${FMT}" -i '{}' \;
|
-exec "${FMT}" -style=file -i '{}' \;
|
||||||
popd &>/dev/null
|
popd &>/dev/null
|
||||||
done
|
done
|
|
@ -15,10 +15,7 @@ using namespace Windows::Foundation;
|
||||||
using namespace Windows::System;
|
using namespace Windows::System;
|
||||||
using namespace Windows::ApplicationModel::DataTransfer;
|
using namespace Windows::ApplicationModel::DataTransfer;
|
||||||
|
|
||||||
String^ CopyPasteManager::supportedFormats[] =
|
String ^ CopyPasteManager::supportedFormats[] = { StandardDataFormats::Text };
|
||||||
{
|
|
||||||
StandardDataFormats::Text
|
|
||||||
};
|
|
||||||
|
|
||||||
static constexpr wstring_view c_validCharacterSet{ L"0123456789()+-*/.abcdefABCDEF" };
|
static constexpr wstring_view c_validCharacterSet{ L"0123456789()+-*/.abcdefABCDEF" };
|
||||||
|
|
||||||
|
@ -40,41 +37,24 @@ static const wstring c_binProgrammerChars = L"[0-1]+((_|'|`)[0-1]+)*";
|
||||||
static const wstring c_uIntSuffixes = L"[uU]?[lL]{0,2}";
|
static const wstring c_uIntSuffixes = L"[uU]?[lL]{0,2}";
|
||||||
|
|
||||||
// RegEx Patterns used by various modes
|
// RegEx Patterns used by various modes
|
||||||
static const array<wregex, 1> standardModePatterns =
|
static const array<wregex, 1> standardModePatterns = { wregex(c_wspc + c_signedDecFloat + c_wspc) };
|
||||||
{
|
static const array<wregex, 2> scientificModePatterns = { wregex(L"(" + c_wspc + L"[-+]?)|(" + c_wspcLParenSigned + L")" + c_signedDecFloat + c_wspcRParens),
|
||||||
wregex(c_wspc + c_signedDecFloat + c_wspc)
|
wregex(L"(" + c_wspc + L"[-+]?)|(" + c_wspcLParenSigned + L")" + c_signedDecFloat
|
||||||
};
|
+ L"[e]([+]|[-])+\\d+" + c_wspcRParens) };
|
||||||
static const array<wregex, 2> scientificModePatterns =
|
static const array<array<wregex, 5>, 4> programmerModePatterns = {
|
||||||
{
|
{ // Hex numbers like 5F, 4A0C, 0xa9, 0xFFull, 47CDh
|
||||||
wregex(L"(" + c_wspc + L"[-+]?)|(" + c_wspcLParenSigned + L")" + c_signedDecFloat + c_wspcRParens),
|
{ wregex(c_wspcLParens + L"(0[xX])?" + c_hexProgrammerChars + c_uIntSuffixes + c_wspcRParens),
|
||||||
wregex(L"(" + c_wspc + L"[-+]?)|(" + c_wspcLParenSigned + L")" + c_signedDecFloat + L"[e]([+]|[-])+\\d+" + c_wspcRParens)
|
wregex(c_wspcLParens + c_hexProgrammerChars + L"[hH]?" + c_wspcRParens) },
|
||||||
};
|
|
||||||
static const array<array<wregex, 5>, 4> programmerModePatterns =
|
|
||||||
{ {
|
|
||||||
// Hex numbers like 5F, 4A0C, 0xa9, 0xFFull, 47CDh
|
|
||||||
{
|
|
||||||
wregex(c_wspcLParens + L"(0[xX])?" + c_hexProgrammerChars + c_uIntSuffixes + c_wspcRParens),
|
|
||||||
wregex(c_wspcLParens + c_hexProgrammerChars + L"[hH]?" + c_wspcRParens)
|
|
||||||
},
|
|
||||||
// Decimal numbers like -145, 145, 0n145, 123ull etc
|
// Decimal numbers like -145, 145, 0n145, 123ull etc
|
||||||
{
|
{ wregex(c_wspcLParens + L"[-+]?" + c_decProgrammerChars + L"[lL]{0,2}" + c_wspcRParens),
|
||||||
wregex(c_wspcLParens + L"[-+]?" + c_decProgrammerChars + L"[lL]{0,2}" +c_wspcRParens),
|
wregex(c_wspcLParens + L"(0[nN])?" + c_decProgrammerChars + c_uIntSuffixes + c_wspcRParens) },
|
||||||
wregex(c_wspcLParens + L"(0[nN])?" + c_decProgrammerChars + c_uIntSuffixes + c_wspcRParens)
|
|
||||||
},
|
|
||||||
// Octal numbers like 06, 010, 0t77, 0o77, 077ull etc
|
// Octal numbers like 06, 010, 0t77, 0o77, 077ull etc
|
||||||
{
|
{ wregex(c_wspcLParens + L"(0[otOT])?" + c_octProgrammerChars + c_uIntSuffixes + c_wspcRParens) },
|
||||||
wregex(c_wspcLParens + L"(0[otOT])?" + c_octProgrammerChars + c_uIntSuffixes + c_wspcRParens)
|
|
||||||
},
|
|
||||||
// Binary numbers like 011010110, 0010110, 10101001, 1001b, 0b1001, 0y1001, 0b1001ull
|
// Binary numbers like 011010110, 0010110, 10101001, 1001b, 0b1001, 0y1001, 0b1001ull
|
||||||
{
|
{ wregex(c_wspcLParens + L"(0[byBY])?" + c_binProgrammerChars + c_uIntSuffixes + c_wspcRParens),
|
||||||
wregex(c_wspcLParens + L"(0[byBY])?" + c_binProgrammerChars + c_uIntSuffixes + c_wspcRParens),
|
wregex(c_wspcLParens + c_binProgrammerChars + L"[bB]?" + c_wspcRParens) } }
|
||||||
wregex(c_wspcLParens + c_binProgrammerChars + L"[bB]?" + c_wspcRParens)
|
|
||||||
}
|
|
||||||
} };
|
|
||||||
static const array<wregex, 1> unitConverterPatterns =
|
|
||||||
{
|
|
||||||
wregex(c_wspc + L"[-+]?\\d*[.]?\\d*" + c_wspc)
|
|
||||||
};
|
};
|
||||||
|
static const array<wregex, 1> unitConverterPatterns = { wregex(c_wspc + L"[-+]?\\d*[.]?\\d*" + c_wspc) };
|
||||||
|
|
||||||
void CopyPasteManager::CopyToClipboard(String ^ stringToCopy)
|
void CopyPasteManager::CopyToClipboard(String ^ stringToCopy)
|
||||||
{
|
{
|
||||||
|
@ -95,11 +75,9 @@ task<String^> CopyPasteManager::GetStringToPaste(ViewMode mode, CategoryGroupTyp
|
||||||
//-- add support to allow pasting for expressions like 1.3e12(as of now we allow 1.3e+12)
|
//-- add support to allow pasting for expressions like 1.3e12(as of now we allow 1.3e+12)
|
||||||
|
|
||||||
return create_task((dataPackageView->GetTextAsync(::StandardDataFormats::Text)))
|
return create_task((dataPackageView->GetTextAsync(::StandardDataFormats::Text)))
|
||||||
.then([mode, modeType, programmerNumberBase, bitLengthType](String^ pastedText)
|
.then([mode, modeType, programmerNumberBase,
|
||||||
{
|
bitLengthType](String ^ pastedText) { return ValidatePasteExpression(pastedText, mode, modeType, programmerNumberBase, bitLengthType); },
|
||||||
return ValidatePasteExpression(pastedText, mode, modeType, programmerNumberBase, bitLengthType);
|
task_continuation_context::use_arbitrary());
|
||||||
}
|
|
||||||
, task_continuation_context::use_arbitrary());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int CopyPasteManager::ClipboardTextFormat()
|
int CopyPasteManager::ClipboardTextFormat()
|
||||||
|
@ -223,7 +201,8 @@ vector<wstring> CopyPasteManager::ExtractOperands(const wstring& pasteExpression
|
||||||
if ((pasteExpression.at(i) == L'+') || (pasteExpression.at(i) == L'-'))
|
if ((pasteExpression.at(i) == L'+') || (pasteExpression.at(i) == L'-'))
|
||||||
{
|
{
|
||||||
// don't break the expression into operands if the encountered character corresponds to sign command(+-)
|
// don't break the expression into operands if the encountered character corresponds to sign command(+-)
|
||||||
if (isPreviousOpenParen || startOfExpression || isPreviousOperator || ((mode != ViewMode::Programmer) && !((i != 0) && (pasteExpression.at(i - 1) != L'e'))))
|
if (isPreviousOpenParen || startOfExpression || isPreviousOperator
|
||||||
|
|| ((mode != ViewMode::Programmer) && !((i != 0) && (pasteExpression.at(i - 1) != L'e'))))
|
||||||
{
|
{
|
||||||
isPreviousOperator = false;
|
isPreviousOperator = false;
|
||||||
continue;
|
continue;
|
||||||
|
@ -453,11 +432,13 @@ bool CopyPasteManager::TryOperandToULL(const wstring& operand, int numberBase, u
|
||||||
|
|
||||||
size_t CopyPasteManager::OperandLength(const wstring& operand, ViewMode mode, CategoryGroupType modeType, int programmerNumberBase)
|
size_t CopyPasteManager::OperandLength(const wstring& operand, ViewMode mode, CategoryGroupType modeType, int programmerNumberBase)
|
||||||
{
|
{
|
||||||
if (modeType == CategoryGroupType::Converter) {
|
if (modeType == CategoryGroupType::Converter)
|
||||||
|
{
|
||||||
return operand.length();
|
return operand.length();
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(mode) {
|
switch (mode)
|
||||||
|
{
|
||||||
case ViewMode::Standard:
|
case ViewMode::Standard:
|
||||||
case ViewMode::Scientific:
|
case ViewMode::Scientific:
|
||||||
return StandardScientificOperandLength(operand);
|
return StandardScientificOperandLength(operand);
|
||||||
|
@ -494,7 +475,6 @@ size_t CopyPasteManager::StandardScientificOperandLength(const wstring& operand)
|
||||||
|
|
||||||
size_t CopyPasteManager::ProgrammerOperandLength(const wstring& operand, int numberBase)
|
size_t CopyPasteManager::ProgrammerOperandLength(const wstring& operand, int numberBase)
|
||||||
{
|
{
|
||||||
|
|
||||||
vector<wstring> prefixes{};
|
vector<wstring> prefixes{};
|
||||||
vector<wstring> suffixes{};
|
vector<wstring> suffixes{};
|
||||||
switch (numberBase)
|
switch (numberBase)
|
||||||
|
|
|
@ -26,7 +26,8 @@ namespace CalculatorApp
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static void CopyToClipboard(Platform::String ^ stringToCopy);
|
static void CopyToClipboard(Platform::String ^ stringToCopy);
|
||||||
static concurrency::task<Platform::String^> GetStringToPaste(CalculatorApp::Common::ViewMode mode, CalculatorApp::Common::CategoryGroupType modeType, int programmerNumberBase = -1, int bitLengthType = -1);
|
static concurrency::task<Platform::String ^> GetStringToPaste(CalculatorApp::Common::ViewMode mode, CalculatorApp::Common::CategoryGroupType modeType,
|
||||||
|
int programmerNumberBase = -1, int bitLengthType = -1);
|
||||||
static bool HasStringToPaste()
|
static bool HasStringToPaste()
|
||||||
{
|
{
|
||||||
return ClipboardTextFormat() >= 0;
|
return ClipboardTextFormat() >= 0;
|
||||||
|
@ -36,25 +37,23 @@ namespace CalculatorApp
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static int ClipboardTextFormat();
|
static int ClipboardTextFormat();
|
||||||
static Platform::String^ ValidatePasteExpression(
|
static Platform::String
|
||||||
Platform::String^ pastedText,
|
^ ValidatePasteExpression(Platform::String ^ pastedText, CalculatorApp::Common::ViewMode mode, int programmerNumberBase, int bitLengthType);
|
||||||
CalculatorApp::Common::ViewMode mode,
|
static Platform::String
|
||||||
int programmerNumberBase,
|
^ ValidatePasteExpression(Platform::String ^ pastedText, CalculatorApp::Common::ViewMode mode, CalculatorApp::Common::CategoryGroupType modeType,
|
||||||
int bitLengthType);
|
int programmerNumberBase, int bitLengthType);
|
||||||
static Platform::String^ ValidatePasteExpression(
|
|
||||||
Platform::String^ pastedText,
|
|
||||||
CalculatorApp::Common::ViewMode mode,
|
|
||||||
CalculatorApp::Common::CategoryGroupType modeType,
|
|
||||||
int programmerNumberBase,
|
|
||||||
int bitLengthType);
|
|
||||||
|
|
||||||
static std::vector<std::wstring> ExtractOperands(const std::wstring& pasteExpression, CalculatorApp::Common::ViewMode mode, int programmerNumberBase = -1, int bitLengthType = -1);
|
static std::vector<std::wstring> ExtractOperands(const std::wstring& pasteExpression, CalculatorApp::Common::ViewMode mode,
|
||||||
static bool ExpressionRegExMatch(std::vector<std::wstring> operands, CalculatorApp::Common::ViewMode mode, CalculatorApp::Common::CategoryGroupType modeType, int programmerNumberBase = -1, int bitLengthType = -1);
|
int programmerNumberBase = -1, int bitLengthType = -1);
|
||||||
|
static bool ExpressionRegExMatch(std::vector<std::wstring> operands, CalculatorApp::Common::ViewMode mode,
|
||||||
|
CalculatorApp::Common::CategoryGroupType modeType, int programmerNumberBase = -1, int bitLengthType = -1);
|
||||||
|
|
||||||
static std::pair<size_t, uint64_t> GetMaxOperandLengthAndValue(CalculatorApp::Common::ViewMode mode, CalculatorApp::Common::CategoryGroupType modeType, int programmerNumberBase = -1, int bitLengthType = -1);
|
static std::pair<size_t, uint64_t> GetMaxOperandLengthAndValue(CalculatorApp::Common::ViewMode mode, CalculatorApp::Common::CategoryGroupType modeType,
|
||||||
|
int programmerNumberBase = -1, int bitLengthType = -1);
|
||||||
static std::wstring SanitizeOperand(const std::wstring& operand);
|
static std::wstring SanitizeOperand(const std::wstring& operand);
|
||||||
static bool TryOperandToULL(const std::wstring& operand, int numberBase, unsigned long long int& result);
|
static bool TryOperandToULL(const std::wstring& operand, int numberBase, unsigned long long int& result);
|
||||||
static size_t OperandLength(const std::wstring& operand, CalculatorApp::Common::ViewMode mode, CalculatorApp::Common::CategoryGroupType modeType, int programmerNumberBase = -1);
|
static size_t OperandLength(const std::wstring& operand, CalculatorApp::Common::ViewMode mode, CalculatorApp::Common::CategoryGroupType modeType,
|
||||||
|
int programmerNumberBase = -1);
|
||||||
static size_t StandardScientificOperandLength(const std::wstring& operand);
|
static size_t StandardScientificOperandLength(const std::wstring& operand);
|
||||||
static size_t ProgrammerOperandLength(const std::wstring& operand, int numberBase);
|
static size_t ProgrammerOperandLength(const std::wstring& operand, int numberBase);
|
||||||
static std::wstring RemoveUnwantedCharsFromWstring(const std::wstring& input);
|
static std::wstring RemoveUnwantedCharsFromWstring(const std::wstring& input);
|
||||||
|
|
|
@ -30,9 +30,10 @@ bool DateCalculationEngine::AddDuration(_In_ DateTime startDate, _In_ const Date
|
||||||
{
|
{
|
||||||
// The Japanese Era system can have multiple year partitions within the same year.
|
// The Japanese Era system can have multiple year partitions within the same year.
|
||||||
// For example, April 30, 2019 is denoted April 30, Heisei 31; May 1, 2019 is denoted as May 1, Reiwa 1.
|
// For example, April 30, 2019 is denoted April 30, Heisei 31; May 1, 2019 is denoted as May 1, Reiwa 1.
|
||||||
// The Calendar treats Heisei 31 and Reiwa 1 as separate years, which results in some unexpected behaviors where subtracting a year from Reiwa 1 results in a date in Heisei 31.
|
// The Calendar treats Heisei 31 and Reiwa 1 as separate years, which results in some unexpected behaviors where subtracting a year from Reiwa 1
|
||||||
// To provide the expected result across era boundaries, we first convert the Japanese era system to a Gregorian system, do date math, and then convert back to the Japanese era system.
|
// results in a date in Heisei 31. To provide the expected result across era boundaries, we first convert the Japanese era system to a Gregorian
|
||||||
// This works because the Japanese era system maintains the same year/month boundaries and durations as the Gregorian system and is only different in display value.
|
// system, do date math, and then convert back to the Japanese era system. This works because the Japanese era system maintains the same year/month
|
||||||
|
// boundaries and durations as the Gregorian system and is only different in display value.
|
||||||
if (currentCalendarSystem == CalendarIdentifiers::Japanese)
|
if (currentCalendarSystem == CalendarIdentifiers::Japanese)
|
||||||
{
|
{
|
||||||
m_calendar->ChangeCalendarSystem(CalendarIdentifiers::Gregorian);
|
m_calendar->ChangeCalendarSystem(CalendarIdentifiers::Gregorian);
|
||||||
|
@ -89,9 +90,10 @@ bool DateCalculationEngine::SubtractDuration(_In_ DateTime startDate, _In_ const
|
||||||
{
|
{
|
||||||
// The Japanese Era system can have multiple year partitions within the same year.
|
// The Japanese Era system can have multiple year partitions within the same year.
|
||||||
// For example, April 30, 2019 is denoted April 30, Heisei 31; May 1, 2019 is denoted as May 1, Reiwa 1.
|
// For example, April 30, 2019 is denoted April 30, Heisei 31; May 1, 2019 is denoted as May 1, Reiwa 1.
|
||||||
// The Calendar treats Heisei 31 and Reiwa 1 as separate years, which results in some unexpected behaviors where subtracting a year from Reiwa 1 results in a date in Heisei 31.
|
// The Calendar treats Heisei 31 and Reiwa 1 as separate years, which results in some unexpected behaviors where subtracting a year from Reiwa 1
|
||||||
// To provide the expected result across era boundaries, we first convert the Japanese era system to a Gregorian system, do date math, and then convert back to the Japanese era system.
|
// results in a date in Heisei 31. To provide the expected result across era boundaries, we first convert the Japanese era system to a Gregorian
|
||||||
// This works because the Japanese era system maintains the same year/month boundaries and durations as the Gregorian system and is only different in display value.
|
// system, do date math, and then convert back to the Japanese era system. This works because the Japanese era system maintains the same year/month
|
||||||
|
// boundaries and durations as the Gregorian system and is only different in display value.
|
||||||
if (currentCalendarSystem == CalendarIdentifiers::Japanese)
|
if (currentCalendarSystem == CalendarIdentifiers::Japanese)
|
||||||
{
|
{
|
||||||
m_calendar->ChangeCalendarSystem(CalendarIdentifiers::Gregorian);
|
m_calendar->ChangeCalendarSystem(CalendarIdentifiers::Gregorian);
|
||||||
|
|
|
@ -23,8 +23,10 @@
|
||||||
m_##n = value; \
|
m_##n = value; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
private: \
|
private: \
|
||||||
t m_##n; \
|
t m_##n; \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
|
|
||||||
#define PROPERTY_RW(t, n) \
|
#define PROPERTY_RW(t, n) \
|
||||||
|
@ -39,8 +41,10 @@ public:
|
||||||
m_##n = value; \
|
m_##n = value; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
private: \
|
private: \
|
||||||
t m_##n; \
|
t m_##n; \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
|
|
||||||
#define OBSERVABLE_PROPERTY_R(t, n) \
|
#define OBSERVABLE_PROPERTY_R(t, n) \
|
||||||
|
@ -61,8 +65,10 @@ public:
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
private: \
|
private: \
|
||||||
t m_##n; \
|
t m_##n; \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
|
|
||||||
#define OBSERVABLE_PROPERTY_RW(t, n) \
|
#define OBSERVABLE_PROPERTY_RW(t, n) \
|
||||||
|
@ -81,8 +87,10 @@ public:
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
private: \
|
private: \
|
||||||
t m_##n; \
|
t m_##n; \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
|
|
||||||
#define OBSERVABLE_NAMED_PROPERTY_R(t, n) \
|
#define OBSERVABLE_NAMED_PROPERTY_R(t, n) \
|
||||||
|
@ -92,6 +100,7 @@ public:
|
||||||
{ \
|
{ \
|
||||||
Platform::String ^ get() { return Platform::StringReference(L#n); } \
|
Platform::String ^ get() { return Platform::StringReference(L#n); } \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
|
|
||||||
#define OBSERVABLE_NAMED_PROPERTY_RW(t, n) \
|
#define OBSERVABLE_NAMED_PROPERTY_RW(t, n) \
|
||||||
|
@ -101,6 +110,7 @@ public:
|
||||||
{ \
|
{ \
|
||||||
Platform::String ^ get() { return Platform::StringReference(L#n); } \
|
Platform::String ^ get() { return Platform::StringReference(L#n); } \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
|
|
||||||
#define OBSERVABLE_PROPERTY_FIELD(n) m_##n
|
#define OBSERVABLE_PROPERTY_FIELD(n) m_##n
|
||||||
|
@ -114,6 +124,7 @@ public:
|
||||||
{ \
|
{ \
|
||||||
PropertyChanged(this, ref new Windows::UI::Xaml::Data::PropertyChangedEventArgs(p)); \
|
PropertyChanged(this, ref new Windows::UI::Xaml::Data::PropertyChangedEventArgs(p)); \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
#else
|
#else
|
||||||
#define OBSERVABLE_OBJECT() \
|
#define OBSERVABLE_OBJECT() \
|
||||||
|
@ -122,6 +133,7 @@ public:
|
||||||
void RaisePropertyChanged(Platform::String ^ p) \
|
void RaisePropertyChanged(Platform::String ^ p) \
|
||||||
{ \
|
{ \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -136,6 +148,7 @@ public:
|
||||||
PropertyChanged(this, ref new Windows::UI::Xaml::Data::PropertyChangedEventArgs(p)); \
|
PropertyChanged(this, ref new Windows::UI::Xaml::Data::PropertyChangedEventArgs(p)); \
|
||||||
c(p); \
|
c(p); \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
#else
|
#else
|
||||||
#define OBSERVABLE_OBJECT_CALLBACK(c) \
|
#define OBSERVABLE_OBJECT_CALLBACK(c) \
|
||||||
|
@ -145,6 +158,7 @@ public:
|
||||||
{ \
|
{ \
|
||||||
c(p); \
|
c(p); \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -156,6 +170,7 @@ public:
|
||||||
if (!donotuse_##p) {\
|
if (!donotuse_##p) {\
|
||||||
donotuse_##p = CalculatorApp::Common::MakeDelegate(this, &m);\
|
donotuse_##p = CalculatorApp::Common::MakeDelegate(this, &m);\
|
||||||
} return donotuse_##p; }} private: Windows::UI::Xaml::Input::ICommand^ donotuse_##p; \
|
} return donotuse_##p; }} private: Windows::UI::Xaml::Input::ICommand^ donotuse_##p; \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
|
|
||||||
#define DEPENDENCY_PROPERTY_DECLARATION(t, n) \
|
#define DEPENDENCY_PROPERTY_DECLARATION(t, n) \
|
||||||
|
@ -173,6 +188,7 @@ public:
|
||||||
\
|
\
|
||||||
private: \
|
private: \
|
||||||
static Windows::UI::Xaml::DependencyProperty ^ s_##n##Property; \
|
static Windows::UI::Xaml::DependencyProperty ^ s_##n##Property; \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// Utilities for DependencyProperties
|
// Utilities for DependencyProperties
|
||||||
|
@ -387,6 +403,7 @@ namespace Utils
|
||||||
#define DEPENDENCY_PROPERTY_OWNER(owner) \
|
#define DEPENDENCY_PROPERTY_OWNER(owner) \
|
||||||
private: \
|
private: \
|
||||||
typedef owner DependencyPropertiesOwner; \
|
typedef owner DependencyPropertiesOwner; \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// Normal DependencyProperty
|
// Normal DependencyProperty
|
||||||
|
@ -402,6 +419,7 @@ public:
|
||||||
SetValue(s_##name##Property, value); \
|
SetValue(s_##name##Property, value); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
private: \
|
private: \
|
||||||
static Windows::UI::Xaml::DependencyProperty ^ s_##name##Property; \
|
static Windows::UI::Xaml::DependencyProperty ^ s_##name##Property; \
|
||||||
\
|
\
|
||||||
|
@ -419,6 +437,7 @@ private:
|
||||||
{ \
|
{ \
|
||||||
return Utils::RegisterDependencyProperty<DependencyPropertiesOwner, type>(L#name); \
|
return Utils::RegisterDependencyProperty<DependencyPropertiesOwner, type>(L#name); \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
|
|
||||||
#define DEPENDENCY_PROPERTY_WITH_DEFAULT(type, name, defaultValue) \
|
#define DEPENDENCY_PROPERTY_WITH_DEFAULT(type, name, defaultValue) \
|
||||||
|
@ -433,6 +452,7 @@ public:
|
||||||
SetValue(s_##name##Property, value); \
|
SetValue(s_##name##Property, value); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
private: \
|
private: \
|
||||||
static Windows::UI::Xaml::DependencyProperty ^ s_##name##Property; \
|
static Windows::UI::Xaml::DependencyProperty ^ s_##name##Property; \
|
||||||
\
|
\
|
||||||
|
@ -450,6 +470,7 @@ private:
|
||||||
{ \
|
{ \
|
||||||
return Utils::RegisterDependencyProperty<DependencyPropertiesOwner, type>(L#name, defaultValue); \
|
return Utils::RegisterDependencyProperty<DependencyPropertiesOwner, type>(L#name, defaultValue); \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
|
|
||||||
#define DEPENDENCY_PROPERTY_WITH_CALLBACK(type, name) \
|
#define DEPENDENCY_PROPERTY_WITH_CALLBACK(type, name) \
|
||||||
|
@ -464,6 +485,7 @@ public:
|
||||||
SetValue(s_##name##Property, value); \
|
SetValue(s_##name##Property, value); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
private: \
|
private: \
|
||||||
static Windows::UI::Xaml::DependencyProperty ^ s_##name##Property; \
|
static Windows::UI::Xaml::DependencyProperty ^ s_##name##Property; \
|
||||||
\
|
\
|
||||||
|
@ -486,6 +508,7 @@ private:
|
||||||
auto self = safe_cast<DependencyPropertiesOwner ^>(sender); \
|
auto self = safe_cast<DependencyPropertiesOwner ^>(sender); \
|
||||||
self->On##name##PropertyChanged(safe_cast<type>(args->OldValue), safe_cast<type>(args->NewValue)); \
|
self->On##name##PropertyChanged(safe_cast<type>(args->OldValue), safe_cast<type>(args->NewValue)); \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
|
|
||||||
#define DEPENDENCY_PROPERTY_WITH_DEFAULT_AND_CALLBACK(type, name, defaultValue) \
|
#define DEPENDENCY_PROPERTY_WITH_DEFAULT_AND_CALLBACK(type, name, defaultValue) \
|
||||||
|
@ -500,6 +523,7 @@ public:
|
||||||
SetValue(s_##name##Property, value); \
|
SetValue(s_##name##Property, value); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
private: \
|
private: \
|
||||||
static Windows::UI::Xaml::DependencyProperty ^ s_##name##Property; \
|
static Windows::UI::Xaml::DependencyProperty ^ s_##name##Property; \
|
||||||
\
|
\
|
||||||
|
@ -522,6 +546,7 @@ private:
|
||||||
auto self = safe_cast<DependencyPropertiesOwner ^>(sender); \
|
auto self = safe_cast<DependencyPropertiesOwner ^>(sender); \
|
||||||
self->On##name##PropertyChanged(safe_cast<type>(args->OldValue), safe_cast<type>(args->NewValue)); \
|
self->On##name##PropertyChanged(safe_cast<type>(args->OldValue), safe_cast<type>(args->NewValue)); \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// Attached DependencyProperty
|
// Attached DependencyProperty
|
||||||
|
@ -552,6 +577,7 @@ private:
|
||||||
{ \
|
{ \
|
||||||
return Utils::RegisterDependencyPropertyAttached<DependencyPropertiesOwner, type>(L#name); \
|
return Utils::RegisterDependencyPropertyAttached<DependencyPropertiesOwner, type>(L#name); \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
|
|
||||||
#define DEPENDENCY_PROPERTY_ATTACHED_WITH_DEFAULT(type, name, defaultValue) \
|
#define DEPENDENCY_PROPERTY_ATTACHED_WITH_DEFAULT(type, name, defaultValue) \
|
||||||
|
@ -581,6 +607,7 @@ private:
|
||||||
{ \
|
{ \
|
||||||
return Utils::RegisterDependencyPropertyAttached<DependencyPropertiesOwner, type>(L#name, defaultValue); \
|
return Utils::RegisterDependencyPropertyAttached<DependencyPropertiesOwner, type>(L#name, defaultValue); \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
|
|
||||||
#define DEPENDENCY_PROPERTY_ATTACHED_WITH_CALLBACK(type, name) \
|
#define DEPENDENCY_PROPERTY_ATTACHED_WITH_CALLBACK(type, name) \
|
||||||
|
@ -614,6 +641,7 @@ private:
|
||||||
{ \
|
{ \
|
||||||
On##name##PropertyChanged(sender, safe_cast<type>(args->OldValue), safe_cast<type>(args->NewValue)); \
|
On##name##PropertyChanged(sender, safe_cast<type>(args->OldValue), safe_cast<type>(args->NewValue)); \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
|
|
||||||
#define DEPENDENCY_PROPERTY_ATTACHED_WITH_DEFAULT_AND_CALLBACK(type, name, defaultValue) \
|
#define DEPENDENCY_PROPERTY_ATTACHED_WITH_DEFAULT_AND_CALLBACK(type, name, defaultValue) \
|
||||||
|
@ -647,6 +675,7 @@ private:
|
||||||
{ \
|
{ \
|
||||||
On##name##PropertyChanged(sender, safe_cast<type>(args->OldValue), safe_cast<type>(args->NewValue)); \
|
On##name##PropertyChanged(sender, safe_cast<type>(args->OldValue), safe_cast<type>(args->NewValue)); \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// This goes into the cpp to initialize the static variable
|
// This goes into the cpp to initialize the static variable
|
||||||
|
|
|
@ -44,83 +44,226 @@ namespace DateCalculationUnitTests
|
||||||
DateTimeTestCase datetimeAddCase[c_addCases];
|
DateTimeTestCase datetimeAddCase[c_addCases];
|
||||||
DateTimeTestCase datetimeSubtractCase[c_subtractCases];
|
DateTimeTestCase datetimeSubtractCase[c_subtractCases];
|
||||||
|
|
||||||
|
|
||||||
// Test Class
|
// Test Class
|
||||||
TEST_CLASS(DateCalculatorUnitTests)
|
TEST_CLASS(DateCalculatorUnitTests){ public: TEST_CLASS_INITIALIZE(TestClassSetup){ /* Test Case Data */
|
||||||
{
|
|
||||||
public:
|
|
||||||
TEST_CLASS_INITIALIZE(TestClassSetup)
|
|
||||||
{
|
|
||||||
/* Test Case Data */
|
|
||||||
|
|
||||||
// Dates - DD.MM.YYYY
|
// Dates - DD.MM.YYYY
|
||||||
/*31.12.9999*/ date[0].wYear = 9999; date[0].wMonth = 12; date[0].wDayOfWeek = 5; date[0].wDay = 31; date[0].wHour = 0; date[0].wMinute = 0; date[0].wSecond = 0; date[0].wMilliseconds = 0;
|
/*31.12.9999*/ date[0].wYear = 9999;
|
||||||
/*30.12.9999*/ date[1].wYear = 9999; date[1].wMonth = 12; date[1].wDayOfWeek = 4; date[1].wDay = 30; date[1].wHour = 0; date[1].wMinute = 0; date[1].wSecond = 0; date[1].wMilliseconds = 0;
|
date[0].wMonth = 12;
|
||||||
/*31.12.9998*/ date[2].wYear = 9998; date[2].wMonth = 12; date[2].wDayOfWeek = 4; date[2].wDay = 31; date[2].wHour = 0; date[2].wMinute = 0; date[2].wSecond = 0; date[2].wMilliseconds = 0;
|
date[0].wDayOfWeek = 5;
|
||||||
/*01.01.1601*/ date[3].wYear = 1601; date[3].wMonth = 1; date[3].wDayOfWeek = 1; date[3].wDay = 1; date[3].wHour = 0; date[3].wMinute = 0; date[3].wSecond = 0; date[3].wMilliseconds = 0;
|
date[0].wDay = 31;
|
||||||
/*02.01.1601*/ date[4].wYear = 1601; date[4].wMonth = 1; date[4].wDayOfWeek = 2; date[4].wDay = 2; date[4].wHour = 0; date[4].wMinute = 0; date[4].wSecond = 0; date[4].wMilliseconds = 0;
|
date[0].wHour = 0;
|
||||||
/*10.05.2008*/ date[5].wYear = 2008; date[5].wMonth = 5; date[5].wDayOfWeek = 6; date[5].wDay = 10; date[5].wHour = 0; date[5].wMinute = 0; date[5].wSecond = 0; date[5].wMilliseconds = 0;
|
date[0].wMinute = 0;
|
||||||
/*10.03.2008*/ date[6].wYear = 2008; date[6].wMonth = 3; date[6].wDayOfWeek = 1; date[6].wDay = 10; date[6].wHour = 0; date[6].wMinute = 0; date[6].wSecond = 0; date[6].wMilliseconds = 0;
|
date[0].wSecond = 0;
|
||||||
/*29.02.2008*/ date[7].wYear = 2008; date[7].wMonth = 2; date[7].wDayOfWeek = 5; date[7].wDay = 29; date[7].wHour = 0; date[7].wMinute = 0; date[7].wSecond = 0; date[7].wMilliseconds = 0;
|
date[0].wMilliseconds = 0;
|
||||||
/*28.02.2007*/ date[8].wYear = 2007; date[8].wMonth = 2; date[8].wDayOfWeek = 3; date[8].wDay = 28; date[8].wHour = 0; date[8].wMinute = 0; date[8].wSecond = 0; date[8].wMilliseconds = 0;
|
/*30.12.9999*/ date[1].wYear = 9999;
|
||||||
/*10.03.2007*/ date[9].wYear = 2007; date[9].wMonth = 3; date[9].wDayOfWeek = 6; date[9].wDay = 10; date[9].wHour = 0; date[9].wMinute = 0; date[9].wSecond = 0; date[9].wMilliseconds = 0;
|
date[1].wMonth = 12;
|
||||||
/*10.05.2007*/ date[10].wYear = 2007; date[10].wMonth = 5; date[10].wDayOfWeek = 4; date[10].wDay = 10; date[10].wHour = 0; date[10].wMinute = 0; date[10].wSecond = 0; date[10].wMilliseconds = 0;
|
date[1].wDayOfWeek = 4;
|
||||||
/*29.01.2008*/ date[11].wYear = 2008; date[11].wMonth = 1; date[11].wDayOfWeek = 2; date[11].wDay = 29; date[11].wHour = 0; date[11].wMinute = 0; date[11].wSecond = 0; date[11].wMilliseconds = 0;
|
date[1].wDay = 30;
|
||||||
/*28.01.2007*/ date[12].wYear = 2007; date[12].wMonth = 1; date[12].wDayOfWeek = 0; date[12].wDay = 28; date[12].wHour = 0; date[12].wMinute = 0; date[12].wSecond = 0; date[12].wMilliseconds = 0;
|
date[1].wHour = 0;
|
||||||
/*31.01.2008*/ date[13].wYear = 2008; date[13].wMonth = 1; date[13].wDayOfWeek = 4; date[13].wDay = 31; date[13].wHour = 0; date[13].wMinute = 0; date[13].wSecond = 0; date[13].wMilliseconds = 0;
|
date[1].wMinute = 0;
|
||||||
/*31.03.2008*/ date[14].wYear = 2008; date[14].wMonth = 3; date[14].wDayOfWeek = 1; date[14].wDay = 31; date[14].wHour = 0; date[14].wMinute = 0; date[14].wSecond = 0; date[14].wMilliseconds = 0;
|
date[1].wSecond = 0;
|
||||||
|
date[1].wMilliseconds = 0;
|
||||||
|
/*31.12.9998*/ date[2].wYear = 9998;
|
||||||
|
date[2].wMonth = 12;
|
||||||
|
date[2].wDayOfWeek = 4;
|
||||||
|
date[2].wDay = 31;
|
||||||
|
date[2].wHour = 0;
|
||||||
|
date[2].wMinute = 0;
|
||||||
|
date[2].wSecond = 0;
|
||||||
|
date[2].wMilliseconds = 0;
|
||||||
|
/*01.01.1601*/ date[3].wYear = 1601;
|
||||||
|
date[3].wMonth = 1;
|
||||||
|
date[3].wDayOfWeek = 1;
|
||||||
|
date[3].wDay = 1;
|
||||||
|
date[3].wHour = 0;
|
||||||
|
date[3].wMinute = 0;
|
||||||
|
date[3].wSecond = 0;
|
||||||
|
date[3].wMilliseconds = 0;
|
||||||
|
/*02.01.1601*/ date[4].wYear = 1601;
|
||||||
|
date[4].wMonth = 1;
|
||||||
|
date[4].wDayOfWeek = 2;
|
||||||
|
date[4].wDay = 2;
|
||||||
|
date[4].wHour = 0;
|
||||||
|
date[4].wMinute = 0;
|
||||||
|
date[4].wSecond = 0;
|
||||||
|
date[4].wMilliseconds = 0;
|
||||||
|
/*10.05.2008*/ date[5].wYear = 2008;
|
||||||
|
date[5].wMonth = 5;
|
||||||
|
date[5].wDayOfWeek = 6;
|
||||||
|
date[5].wDay = 10;
|
||||||
|
date[5].wHour = 0;
|
||||||
|
date[5].wMinute = 0;
|
||||||
|
date[5].wSecond = 0;
|
||||||
|
date[5].wMilliseconds = 0;
|
||||||
|
/*10.03.2008*/ date[6].wYear = 2008;
|
||||||
|
date[6].wMonth = 3;
|
||||||
|
date[6].wDayOfWeek = 1;
|
||||||
|
date[6].wDay = 10;
|
||||||
|
date[6].wHour = 0;
|
||||||
|
date[6].wMinute = 0;
|
||||||
|
date[6].wSecond = 0;
|
||||||
|
date[6].wMilliseconds = 0;
|
||||||
|
/*29.02.2008*/ date[7].wYear = 2008;
|
||||||
|
date[7].wMonth = 2;
|
||||||
|
date[7].wDayOfWeek = 5;
|
||||||
|
date[7].wDay = 29;
|
||||||
|
date[7].wHour = 0;
|
||||||
|
date[7].wMinute = 0;
|
||||||
|
date[7].wSecond = 0;
|
||||||
|
date[7].wMilliseconds = 0;
|
||||||
|
/*28.02.2007*/ date[8].wYear = 2007;
|
||||||
|
date[8].wMonth = 2;
|
||||||
|
date[8].wDayOfWeek = 3;
|
||||||
|
date[8].wDay = 28;
|
||||||
|
date[8].wHour = 0;
|
||||||
|
date[8].wMinute = 0;
|
||||||
|
date[8].wSecond = 0;
|
||||||
|
date[8].wMilliseconds = 0;
|
||||||
|
/*10.03.2007*/ date[9].wYear = 2007;
|
||||||
|
date[9].wMonth = 3;
|
||||||
|
date[9].wDayOfWeek = 6;
|
||||||
|
date[9].wDay = 10;
|
||||||
|
date[9].wHour = 0;
|
||||||
|
date[9].wMinute = 0;
|
||||||
|
date[9].wSecond = 0;
|
||||||
|
date[9].wMilliseconds = 0;
|
||||||
|
/*10.05.2007*/ date[10].wYear = 2007;
|
||||||
|
date[10].wMonth = 5;
|
||||||
|
date[10].wDayOfWeek = 4;
|
||||||
|
date[10].wDay = 10;
|
||||||
|
date[10].wHour = 0;
|
||||||
|
date[10].wMinute = 0;
|
||||||
|
date[10].wSecond = 0;
|
||||||
|
date[10].wMilliseconds = 0;
|
||||||
|
/*29.01.2008*/ date[11].wYear = 2008;
|
||||||
|
date[11].wMonth = 1;
|
||||||
|
date[11].wDayOfWeek = 2;
|
||||||
|
date[11].wDay = 29;
|
||||||
|
date[11].wHour = 0;
|
||||||
|
date[11].wMinute = 0;
|
||||||
|
date[11].wSecond = 0;
|
||||||
|
date[11].wMilliseconds = 0;
|
||||||
|
/*28.01.2007*/ date[12].wYear = 2007;
|
||||||
|
date[12].wMonth = 1;
|
||||||
|
date[12].wDayOfWeek = 0;
|
||||||
|
date[12].wDay = 28;
|
||||||
|
date[12].wHour = 0;
|
||||||
|
date[12].wMinute = 0;
|
||||||
|
date[12].wSecond = 0;
|
||||||
|
date[12].wMilliseconds = 0;
|
||||||
|
/*31.01.2008*/ date[13].wYear = 2008;
|
||||||
|
date[13].wMonth = 1;
|
||||||
|
date[13].wDayOfWeek = 4;
|
||||||
|
date[13].wDay = 31;
|
||||||
|
date[13].wHour = 0;
|
||||||
|
date[13].wMinute = 0;
|
||||||
|
date[13].wSecond = 0;
|
||||||
|
date[13].wMilliseconds = 0;
|
||||||
|
/*31.03.2008*/ date[14].wYear = 2008;
|
||||||
|
date[14].wMonth = 3;
|
||||||
|
date[14].wDayOfWeek = 1;
|
||||||
|
date[14].wDay = 31;
|
||||||
|
date[14].wHour = 0;
|
||||||
|
date[14].wMinute = 0;
|
||||||
|
date[14].wSecond = 0;
|
||||||
|
date[14].wMilliseconds = 0;
|
||||||
|
|
||||||
// Date Differences
|
// Date Differences
|
||||||
dateDifference[0].year = 1; dateDifference[0].month = 1;
|
dateDifference[0].year = 1;
|
||||||
dateDifference[1].month = 1; dateDifference[1].day = 10;
|
dateDifference[0].month = 1;
|
||||||
|
dateDifference[1].month = 1;
|
||||||
|
dateDifference[1].day = 10;
|
||||||
dateDifference[2].day = 2;
|
dateDifference[2].day = 2;
|
||||||
/*date[2]-[0]*/ dateDifference[3].week = 52; dateDifference[3].day = 1;
|
/*date[2]-[0]*/ dateDifference[3].week = 52;
|
||||||
|
dateDifference[3].day = 1;
|
||||||
/*date[2]-[0]*/ dateDifference[4].year = 1;
|
/*date[2]-[0]*/ dateDifference[4].year = 1;
|
||||||
dateDifference[5].day = 365;
|
dateDifference[5].day = 365;
|
||||||
dateDifference[6].month = 1;
|
dateDifference[6].month = 1;
|
||||||
dateDifference[7].month = 1; dateDifference[7].day = 2;
|
dateDifference[7].month = 1;
|
||||||
|
dateDifference[7].day = 2;
|
||||||
dateDifference[8].day = 31;
|
dateDifference[8].day = 31;
|
||||||
dateDifference[9].month = 11; dateDifference[9].day = 1;
|
dateDifference[9].month = 11;
|
||||||
dateDifference[10].year = 8398; dateDifference[10].month = 11; dateDifference[10].day = 30;
|
dateDifference[9].day = 1;
|
||||||
|
dateDifference[10].year = 8398;
|
||||||
|
dateDifference[10].month = 11;
|
||||||
|
dateDifference[10].day = 30;
|
||||||
dateDifference[11].year = 2008;
|
dateDifference[11].year = 2008;
|
||||||
dateDifference[12].year = 7991; dateDifference[12].month = 11;
|
dateDifference[12].year = 7991;
|
||||||
dateDifference[13].week = 416998; dateDifference[13].day = 1;
|
dateDifference[12].month = 11;
|
||||||
|
dateDifference[13].week = 416998;
|
||||||
|
dateDifference[13].day = 1;
|
||||||
|
|
||||||
/* Test Cases */
|
/* Test Cases */
|
||||||
|
|
||||||
// Date Difference test cases
|
// Date Difference test cases
|
||||||
datetimeDifftest[0].startDate = date[0]; datetimeDifftest[0].endDate = date[3]; datetimeDifftest[0].dateDiff = dateDifference[10];
|
datetimeDifftest[0].startDate = date[0];
|
||||||
datetimeDifftest[1].startDate = date[0]; datetimeDifftest[1].endDate = date[2]; datetimeDifftest[1].dateDiff = dateDifference[5];
|
datetimeDifftest[0].endDate = date[3];
|
||||||
datetimeDifftest[2].startDate = date[0]; datetimeDifftest[2].endDate = date[2]; datetimeDifftest[2].dateDiff = dateDifference[4];
|
datetimeDifftest[0].dateDiff = dateDifference[10];
|
||||||
datetimeDifftest[3].startDate = date[0]; datetimeDifftest[3].endDate = date[2]; datetimeDifftest[3].dateDiff = dateDifference[3];
|
datetimeDifftest[1].startDate = date[0];
|
||||||
datetimeDifftest[4].startDate = date[14]; datetimeDifftest[4].endDate = date[7]; datetimeDifftest[4].dateDiff = dateDifference[7];
|
datetimeDifftest[1].endDate = date[2];
|
||||||
datetimeDifftest[5].startDate = date[14]; datetimeDifftest[5].endDate = date[7]; datetimeDifftest[5].dateDiff = dateDifference[8];
|
datetimeDifftest[1].dateDiff = dateDifference[5];
|
||||||
datetimeDifftest[6].startDate = date[11]; datetimeDifftest[6].endDate = date[8]; datetimeDifftest[6].dateDiff = dateDifference[9];
|
datetimeDifftest[2].startDate = date[0];
|
||||||
datetimeDifftest[7].startDate = date[13]; datetimeDifftest[7].endDate = date[0]; datetimeDifftest[7].dateDiff = dateDifference[12];
|
datetimeDifftest[2].endDate = date[2];
|
||||||
datetimeDifftest[8].startDate = date[13]; datetimeDifftest[8].endDate = date[0]; datetimeDifftest[8].dateDiff = dateDifference[13];
|
datetimeDifftest[2].dateDiff = dateDifference[4];
|
||||||
|
datetimeDifftest[3].startDate = date[0];
|
||||||
|
datetimeDifftest[3].endDate = date[2];
|
||||||
|
datetimeDifftest[3].dateDiff = dateDifference[3];
|
||||||
|
datetimeDifftest[4].startDate = date[14];
|
||||||
|
datetimeDifftest[4].endDate = date[7];
|
||||||
|
datetimeDifftest[4].dateDiff = dateDifference[7];
|
||||||
|
datetimeDifftest[5].startDate = date[14];
|
||||||
|
datetimeDifftest[5].endDate = date[7];
|
||||||
|
datetimeDifftest[5].dateDiff = dateDifference[8];
|
||||||
|
datetimeDifftest[6].startDate = date[11];
|
||||||
|
datetimeDifftest[6].endDate = date[8];
|
||||||
|
datetimeDifftest[6].dateDiff = dateDifference[9];
|
||||||
|
datetimeDifftest[7].startDate = date[13];
|
||||||
|
datetimeDifftest[7].endDate = date[0];
|
||||||
|
datetimeDifftest[7].dateDiff = dateDifference[12];
|
||||||
|
datetimeDifftest[8].startDate = date[13];
|
||||||
|
datetimeDifftest[8].endDate = date[0];
|
||||||
|
datetimeDifftest[8].dateDiff = dateDifference[13];
|
||||||
|
|
||||||
// Date Add Out of Bound test cases (Negative tests)
|
// Date Add Out of Bound test cases (Negative tests)
|
||||||
/*OutofBound*/ datetimeBoundAdd[0].startDate = date[1]; datetimeBoundAdd[0].endDate = date[0]; datetimeBoundAdd[0].dateDiff = dateDifference[2]; // on Add date[0] not used
|
/*OutofBound*/ datetimeBoundAdd[0].startDate = date[1];
|
||||||
/*OutofBound*/ datetimeBoundAdd[1].startDate = date[2]; datetimeBoundAdd[1].endDate = date[0]; datetimeBoundAdd[1].dateDiff = dateDifference[11]; // on Add date[0] not used
|
datetimeBoundAdd[0].endDate = date[0];
|
||||||
|
datetimeBoundAdd[0].dateDiff = dateDifference[2]; // on Add date[0] not used
|
||||||
|
/*OutofBound*/ datetimeBoundAdd[1].startDate = date[2];
|
||||||
|
datetimeBoundAdd[1].endDate = date[0];
|
||||||
|
datetimeBoundAdd[1].dateDiff = dateDifference[11]; // on Add date[0] not used
|
||||||
|
|
||||||
// Date Subtract Out of Bound test cases (Negative tests)
|
// Date Subtract Out of Bound test cases (Negative tests)
|
||||||
/*OutofBound*/ datetimeBoundSubtract[0].startDate = date[3]; datetimeBoundSubtract[0].endDate = date[0]; datetimeBoundSubtract[0].dateDiff = dateDifference[2]; // on subtract date[0] not used
|
/*OutofBound*/ datetimeBoundSubtract[0].startDate = date[3];
|
||||||
/*OutofBound*/ datetimeBoundSubtract[1].startDate = date[14]; datetimeBoundSubtract[1].endDate = date[0]; datetimeBoundSubtract[1].dateDiff = dateDifference[11]; // on subtract date[0] not used
|
datetimeBoundSubtract[0].endDate = date[0];
|
||||||
|
datetimeBoundSubtract[0].dateDiff = dateDifference[2]; // on subtract date[0] not used
|
||||||
|
/*OutofBound*/ datetimeBoundSubtract[1].startDate = date[14];
|
||||||
|
datetimeBoundSubtract[1].endDate = date[0];
|
||||||
|
datetimeBoundSubtract[1].dateDiff = dateDifference[11]; // on subtract date[0] not used
|
||||||
|
|
||||||
// Date Add test cases (Positive tests)
|
// Date Add test cases (Positive tests)
|
||||||
datetimeAddCase[0].startDate = date[13]; datetimeAddCase[0].endDate = date[7]; datetimeAddCase[0].dateDiff = dateDifference[6];// add
|
datetimeAddCase[0].startDate = date[13];
|
||||||
datetimeAddCase[1].startDate = date[14]; datetimeAddCase[1].endDate = date[5]; datetimeAddCase[1].dateDiff = dateDifference[1];// add
|
datetimeAddCase[0].endDate = date[7];
|
||||||
datetimeAddCase[2].startDate = date[13]; datetimeAddCase[2].endDate = date[6]; datetimeAddCase[2].dateDiff = dateDifference[1];// add
|
datetimeAddCase[0].dateDiff = dateDifference[6]; // add
|
||||||
|
datetimeAddCase[1].startDate = date[14];
|
||||||
|
datetimeAddCase[1].endDate = date[5];
|
||||||
|
datetimeAddCase[1].dateDiff = dateDifference[1]; // add
|
||||||
|
datetimeAddCase[2].startDate = date[13];
|
||||||
|
datetimeAddCase[2].endDate = date[6];
|
||||||
|
datetimeAddCase[2].dateDiff = dateDifference[1]; // add
|
||||||
|
|
||||||
// Date Subtract test cases (Positive tests)
|
// Date Subtract test cases (Positive tests)
|
||||||
datetimeSubtractCase[0].startDate = date[14]; datetimeSubtractCase[0].endDate = date[7]; datetimeSubtractCase[0].dateDiff = dateDifference[6];// subtract
|
datetimeSubtractCase[0].startDate = date[14];
|
||||||
datetimeSubtractCase[1].startDate = date[6]; datetimeSubtractCase[1].endDate = date[11]; datetimeSubtractCase[1].dateDiff = dateDifference[1];// subtract
|
datetimeSubtractCase[0].endDate = date[7];
|
||||||
datetimeSubtractCase[2].startDate = date[9]; datetimeSubtractCase[2].endDate = date[12]; datetimeSubtractCase[2].dateDiff = dateDifference[1];// subtract
|
datetimeSubtractCase[0].dateDiff = dateDifference[6]; // subtract
|
||||||
|
datetimeSubtractCase[1].startDate = date[6];
|
||||||
|
datetimeSubtractCase[1].endDate = date[11];
|
||||||
|
datetimeSubtractCase[1].dateDiff = dateDifference[1]; // subtract
|
||||||
|
datetimeSubtractCase[2].startDate = date[9];
|
||||||
|
datetimeSubtractCase[2].endDate = date[12];
|
||||||
|
datetimeSubtractCase[2].dateDiff = dateDifference[1]; // subtract
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Duration Between Two Date Tests -- Timediff obtained after calculation should be checked to be identical */
|
/* Duration Between Two Date Tests -- Timediff obtained after calculation should be checked to be identical */
|
||||||
TEST_METHOD(TestDateDiff)
|
TEST_METHOD(TestDateDiff)
|
||||||
{
|
{
|
||||||
|
@ -157,7 +300,8 @@ namespace DateCalculationUnitTests
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// // Calculate the difference
|
// // Calculate the difference
|
||||||
// m_DateCalcEngine.GetDateDifference(DateUtils::SystemTimeToDateTime(datetimeDifftest[testIndex].startDate), DateUtils::SystemTimeToDateTime(datetimeDifftest[testIndex].endDate), dateOutputFormat, &diff);
|
// m_DateCalcEngine.GetDateDifference(DateUtils::SystemTimeToDateTime(datetimeDifftest[testIndex].startDate),
|
||||||
|
// DateUtils::SystemTimeToDateTime(datetimeDifftest[testIndex].endDate), dateOutputFormat, &diff);
|
||||||
|
|
||||||
// // Assert for the result
|
// // Assert for the result
|
||||||
// bool areIdentical = true;
|
// bool areIdentical = true;
|
||||||
|
@ -183,7 +327,8 @@ namespace DateCalculationUnitTests
|
||||||
// DateTime endDate;
|
// DateTime endDate;
|
||||||
|
|
||||||
// // Add Duration
|
// // Add Duration
|
||||||
// bool isValid = m_DateCalcEngine.AddDuration(DateUtils::SystemTimeToDateTime(datetimeBoundAdd[testIndex].startDate), datetimeBoundAdd[testIndex].dateDiff, &endDate);
|
// bool isValid = m_DateCalcEngine.AddDuration(DateUtils::SystemTimeToDateTime(datetimeBoundAdd[testIndex].startDate),
|
||||||
|
// datetimeBoundAdd[testIndex].dateDiff, &endDate);
|
||||||
|
|
||||||
// // Assert for the result
|
// // Assert for the result
|
||||||
// VERIFY_IS_FALSE(isValid);
|
// VERIFY_IS_FALSE(isValid);
|
||||||
|
@ -198,7 +343,8 @@ namespace DateCalculationUnitTests
|
||||||
DateTime endDate;
|
DateTime endDate;
|
||||||
|
|
||||||
// Subtract Duration
|
// Subtract Duration
|
||||||
bool isValid = m_DateCalcEngine.SubtractDuration(DateUtils::SystemTimeToDateTime(datetimeBoundSubtract[testIndex].startDate), datetimeBoundSubtract[testIndex].dateDiff, &endDate);
|
bool isValid = m_DateCalcEngine.SubtractDuration(DateUtils::SystemTimeToDateTime(datetimeBoundSubtract[testIndex].startDate),
|
||||||
|
datetimeBoundSubtract[testIndex].dateDiff, &endDate);
|
||||||
|
|
||||||
// Assert for the result
|
// Assert for the result
|
||||||
VERIFY_IS_FALSE(isValid);
|
VERIFY_IS_FALSE(isValid);
|
||||||
|
@ -215,7 +361,8 @@ namespace DateCalculationUnitTests
|
||||||
// DateTime endDate;
|
// DateTime endDate;
|
||||||
|
|
||||||
// // Add Duration
|
// // Add Duration
|
||||||
// bool isValid = m_DateCalcEngine.AddDuration(DateUtils::SystemTimeToDateTime(datetimeAddCase[testIndex].startDate), datetimeAddCase[testIndex].dateDiff, &endDate);
|
// bool isValid = m_DateCalcEngine.AddDuration(DateUtils::SystemTimeToDateTime(datetimeAddCase[testIndex].startDate),
|
||||||
|
// datetimeAddCase[testIndex].dateDiff, &endDate);
|
||||||
|
|
||||||
// // Assert for the result
|
// // Assert for the result
|
||||||
// VERIFY_IS_TRUE(isValid);
|
// VERIFY_IS_TRUE(isValid);
|
||||||
|
@ -243,7 +390,8 @@ namespace DateCalculationUnitTests
|
||||||
// DateTime endDate;
|
// DateTime endDate;
|
||||||
|
|
||||||
// // Subtract Duration
|
// // Subtract Duration
|
||||||
// bool isValid = m_DateCalcEngine.SubtractDuration(DateUtils::SystemTimeToDateTime(datetimeSubtractCase[testIndex].startDate), datetimeSubtractCase[testIndex].dateDiff, &endDate);
|
// bool isValid = m_DateCalcEngine.SubtractDuration(DateUtils::SystemTimeToDateTime(datetimeSubtractCase[testIndex].startDate),
|
||||||
|
// datetimeSubtractCase[testIndex].dateDiff, &endDate);
|
||||||
|
|
||||||
// // assert for the result
|
// // assert for the result
|
||||||
// VERIFY_IS_TRUE(isValid);
|
// VERIFY_IS_TRUE(isValid);
|
||||||
|
@ -262,81 +410,226 @@ namespace DateCalculationUnitTests
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
};
|
TEST_CLASS(DateCalculatorViewModelTests){ public: TEST_CLASS_INITIALIZE(TestClassSetup){ /* Test Case Data */
|
||||||
|
|
||||||
TEST_CLASS(DateCalculatorViewModelTests)
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
TEST_CLASS_INITIALIZE(TestClassSetup)
|
|
||||||
{
|
|
||||||
/* Test Case Data */
|
|
||||||
|
|
||||||
// Dates - DD.MM.YYYY
|
// Dates - DD.MM.YYYY
|
||||||
/*31.12.9999*/ date[0].wYear = 9999; date[0].wMonth = 12; date[0].wDayOfWeek = 5; date[0].wDay = 31; date[0].wHour = 0; date[0].wMinute = 0; date[0].wSecond = 0; date[0].wMilliseconds = 0;
|
/*31.12.9999*/ date[0].wYear = 9999;
|
||||||
/*30.12.9999*/ date[1].wYear = 9999; date[1].wMonth = 12; date[1].wDayOfWeek = 4; date[1].wDay = 30; date[1].wHour = 0; date[1].wMinute = 0; date[1].wSecond = 0; date[1].wMilliseconds = 0;
|
date[0].wMonth = 12;
|
||||||
/*31.12.9998*/ date[2].wYear = 9998; date[2].wMonth = 12; date[2].wDayOfWeek = 4; date[2].wDay = 31; date[2].wHour = 0; date[2].wMinute = 0; date[2].wSecond = 0; date[2].wMilliseconds = 0;
|
date[0].wDayOfWeek = 5;
|
||||||
/*01.01.1601*/ date[3].wYear = 1601; date[3].wMonth = 1; date[3].wDayOfWeek = 1; date[3].wDay = 1; date[3].wHour = 0; date[3].wMinute = 0; date[3].wSecond = 0; date[3].wMilliseconds = 0;
|
date[0].wDay = 31;
|
||||||
/*02.01.1601*/ date[4].wYear = 1601; date[4].wMonth = 1; date[4].wDayOfWeek = 2; date[4].wDay = 2; date[4].wHour = 0; date[4].wMinute = 0; date[4].wSecond = 0; date[4].wMilliseconds = 0;
|
date[0].wHour = 0;
|
||||||
/*10.05.2008*/ date[5].wYear = 2008; date[5].wMonth = 5; date[5].wDayOfWeek = 6; date[5].wDay = 10; date[5].wHour = 0; date[5].wMinute = 0; date[5].wSecond = 0; date[5].wMilliseconds = 0;
|
date[0].wMinute = 0;
|
||||||
/*10.03.2008*/ date[6].wYear = 2008; date[6].wMonth = 3; date[6].wDayOfWeek = 1; date[6].wDay = 10; date[6].wHour = 0; date[6].wMinute = 0; date[6].wSecond = 0; date[6].wMilliseconds = 0;
|
date[0].wSecond = 0;
|
||||||
/*29.02.2008*/ date[7].wYear = 2008; date[7].wMonth = 2; date[7].wDayOfWeek = 5; date[7].wDay = 29; date[7].wHour = 0; date[7].wMinute = 0; date[7].wSecond = 0; date[7].wMilliseconds = 0;
|
date[0].wMilliseconds = 0;
|
||||||
/*28.02.2007*/ date[8].wYear = 2007; date[8].wMonth = 2; date[8].wDayOfWeek = 3; date[8].wDay = 28; date[8].wHour = 0; date[8].wMinute = 0; date[8].wSecond = 0; date[8].wMilliseconds = 0;
|
/*30.12.9999*/ date[1].wYear = 9999;
|
||||||
/*10.03.2007*/ date[9].wYear = 2007; date[9].wMonth = 3; date[9].wDayOfWeek = 6; date[9].wDay = 10; date[9].wHour = 0; date[9].wMinute = 0; date[9].wSecond = 0; date[9].wMilliseconds = 0;
|
date[1].wMonth = 12;
|
||||||
/*10.05.2007*/ date[10].wYear = 2007; date[10].wMonth = 5; date[10].wDayOfWeek = 4; date[10].wDay = 10; date[10].wHour = 0; date[10].wMinute = 0; date[10].wSecond = 0; date[10].wMilliseconds = 0;
|
date[1].wDayOfWeek = 4;
|
||||||
/*29.01.2008*/ date[11].wYear = 2008; date[11].wMonth = 1; date[11].wDayOfWeek = 2; date[11].wDay = 29; date[11].wHour = 0; date[11].wMinute = 0; date[11].wSecond = 0; date[11].wMilliseconds = 0;
|
date[1].wDay = 30;
|
||||||
/*28.01.2007*/ date[12].wYear = 2007; date[12].wMonth = 1; date[12].wDayOfWeek = 0; date[12].wDay = 28; date[12].wHour = 0; date[12].wMinute = 0; date[12].wSecond = 0; date[12].wMilliseconds = 0;
|
date[1].wHour = 0;
|
||||||
/*31.01.2008*/ date[13].wYear = 2008; date[13].wMonth = 1; date[13].wDayOfWeek = 4; date[13].wDay = 31; date[13].wHour = 0; date[13].wMinute = 0; date[13].wSecond = 0; date[13].wMilliseconds = 0;
|
date[1].wMinute = 0;
|
||||||
/*31.03.2008*/ date[14].wYear = 2008; date[14].wMonth = 3; date[14].wDayOfWeek = 1; date[14].wDay = 31; date[14].wHour = 0; date[14].wMinute = 0; date[14].wSecond = 0; date[14].wMilliseconds = 0;
|
date[1].wSecond = 0;
|
||||||
|
date[1].wMilliseconds = 0;
|
||||||
|
/*31.12.9998*/ date[2].wYear = 9998;
|
||||||
|
date[2].wMonth = 12;
|
||||||
|
date[2].wDayOfWeek = 4;
|
||||||
|
date[2].wDay = 31;
|
||||||
|
date[2].wHour = 0;
|
||||||
|
date[2].wMinute = 0;
|
||||||
|
date[2].wSecond = 0;
|
||||||
|
date[2].wMilliseconds = 0;
|
||||||
|
/*01.01.1601*/ date[3].wYear = 1601;
|
||||||
|
date[3].wMonth = 1;
|
||||||
|
date[3].wDayOfWeek = 1;
|
||||||
|
date[3].wDay = 1;
|
||||||
|
date[3].wHour = 0;
|
||||||
|
date[3].wMinute = 0;
|
||||||
|
date[3].wSecond = 0;
|
||||||
|
date[3].wMilliseconds = 0;
|
||||||
|
/*02.01.1601*/ date[4].wYear = 1601;
|
||||||
|
date[4].wMonth = 1;
|
||||||
|
date[4].wDayOfWeek = 2;
|
||||||
|
date[4].wDay = 2;
|
||||||
|
date[4].wHour = 0;
|
||||||
|
date[4].wMinute = 0;
|
||||||
|
date[4].wSecond = 0;
|
||||||
|
date[4].wMilliseconds = 0;
|
||||||
|
/*10.05.2008*/ date[5].wYear = 2008;
|
||||||
|
date[5].wMonth = 5;
|
||||||
|
date[5].wDayOfWeek = 6;
|
||||||
|
date[5].wDay = 10;
|
||||||
|
date[5].wHour = 0;
|
||||||
|
date[5].wMinute = 0;
|
||||||
|
date[5].wSecond = 0;
|
||||||
|
date[5].wMilliseconds = 0;
|
||||||
|
/*10.03.2008*/ date[6].wYear = 2008;
|
||||||
|
date[6].wMonth = 3;
|
||||||
|
date[6].wDayOfWeek = 1;
|
||||||
|
date[6].wDay = 10;
|
||||||
|
date[6].wHour = 0;
|
||||||
|
date[6].wMinute = 0;
|
||||||
|
date[6].wSecond = 0;
|
||||||
|
date[6].wMilliseconds = 0;
|
||||||
|
/*29.02.2008*/ date[7].wYear = 2008;
|
||||||
|
date[7].wMonth = 2;
|
||||||
|
date[7].wDayOfWeek = 5;
|
||||||
|
date[7].wDay = 29;
|
||||||
|
date[7].wHour = 0;
|
||||||
|
date[7].wMinute = 0;
|
||||||
|
date[7].wSecond = 0;
|
||||||
|
date[7].wMilliseconds = 0;
|
||||||
|
/*28.02.2007*/ date[8].wYear = 2007;
|
||||||
|
date[8].wMonth = 2;
|
||||||
|
date[8].wDayOfWeek = 3;
|
||||||
|
date[8].wDay = 28;
|
||||||
|
date[8].wHour = 0;
|
||||||
|
date[8].wMinute = 0;
|
||||||
|
date[8].wSecond = 0;
|
||||||
|
date[8].wMilliseconds = 0;
|
||||||
|
/*10.03.2007*/ date[9].wYear = 2007;
|
||||||
|
date[9].wMonth = 3;
|
||||||
|
date[9].wDayOfWeek = 6;
|
||||||
|
date[9].wDay = 10;
|
||||||
|
date[9].wHour = 0;
|
||||||
|
date[9].wMinute = 0;
|
||||||
|
date[9].wSecond = 0;
|
||||||
|
date[9].wMilliseconds = 0;
|
||||||
|
/*10.05.2007*/ date[10].wYear = 2007;
|
||||||
|
date[10].wMonth = 5;
|
||||||
|
date[10].wDayOfWeek = 4;
|
||||||
|
date[10].wDay = 10;
|
||||||
|
date[10].wHour = 0;
|
||||||
|
date[10].wMinute = 0;
|
||||||
|
date[10].wSecond = 0;
|
||||||
|
date[10].wMilliseconds = 0;
|
||||||
|
/*29.01.2008*/ date[11].wYear = 2008;
|
||||||
|
date[11].wMonth = 1;
|
||||||
|
date[11].wDayOfWeek = 2;
|
||||||
|
date[11].wDay = 29;
|
||||||
|
date[11].wHour = 0;
|
||||||
|
date[11].wMinute = 0;
|
||||||
|
date[11].wSecond = 0;
|
||||||
|
date[11].wMilliseconds = 0;
|
||||||
|
/*28.01.2007*/ date[12].wYear = 2007;
|
||||||
|
date[12].wMonth = 1;
|
||||||
|
date[12].wDayOfWeek = 0;
|
||||||
|
date[12].wDay = 28;
|
||||||
|
date[12].wHour = 0;
|
||||||
|
date[12].wMinute = 0;
|
||||||
|
date[12].wSecond = 0;
|
||||||
|
date[12].wMilliseconds = 0;
|
||||||
|
/*31.01.2008*/ date[13].wYear = 2008;
|
||||||
|
date[13].wMonth = 1;
|
||||||
|
date[13].wDayOfWeek = 4;
|
||||||
|
date[13].wDay = 31;
|
||||||
|
date[13].wHour = 0;
|
||||||
|
date[13].wMinute = 0;
|
||||||
|
date[13].wSecond = 0;
|
||||||
|
date[13].wMilliseconds = 0;
|
||||||
|
/*31.03.2008*/ date[14].wYear = 2008;
|
||||||
|
date[14].wMonth = 3;
|
||||||
|
date[14].wDayOfWeek = 1;
|
||||||
|
date[14].wDay = 31;
|
||||||
|
date[14].wHour = 0;
|
||||||
|
date[14].wMinute = 0;
|
||||||
|
date[14].wSecond = 0;
|
||||||
|
date[14].wMilliseconds = 0;
|
||||||
|
|
||||||
// Date Differences
|
// Date Differences
|
||||||
dateDifference[0].year = 1; dateDifference[0].month = 1;
|
dateDifference[0].year = 1;
|
||||||
dateDifference[1].month = 1; dateDifference[1].day = 10;
|
dateDifference[0].month = 1;
|
||||||
|
dateDifference[1].month = 1;
|
||||||
|
dateDifference[1].day = 10;
|
||||||
dateDifference[2].day = 2;
|
dateDifference[2].day = 2;
|
||||||
/*date[2]-[0]*/ dateDifference[3].week = 52; dateDifference[3].day = 1;
|
/*date[2]-[0]*/ dateDifference[3].week = 52;
|
||||||
|
dateDifference[3].day = 1;
|
||||||
/*date[2]-[0]*/ dateDifference[4].year = 1;
|
/*date[2]-[0]*/ dateDifference[4].year = 1;
|
||||||
dateDifference[5].day = 365;
|
dateDifference[5].day = 365;
|
||||||
dateDifference[6].month = 1;
|
dateDifference[6].month = 1;
|
||||||
dateDifference[7].month = 1; dateDifference[7].day = 2;
|
dateDifference[7].month = 1;
|
||||||
|
dateDifference[7].day = 2;
|
||||||
dateDifference[8].day = 31;
|
dateDifference[8].day = 31;
|
||||||
dateDifference[9].month = 11; dateDifference[9].day = 1;
|
dateDifference[9].month = 11;
|
||||||
dateDifference[10].year = 8398; dateDifference[10].month = 11; dateDifference[10].day = 30;
|
dateDifference[9].day = 1;
|
||||||
|
dateDifference[10].year = 8398;
|
||||||
|
dateDifference[10].month = 11;
|
||||||
|
dateDifference[10].day = 30;
|
||||||
dateDifference[11].year = 2008;
|
dateDifference[11].year = 2008;
|
||||||
dateDifference[12].year = 7991; dateDifference[12].month = 11;
|
dateDifference[12].year = 7991;
|
||||||
dateDifference[13].week = 416998; dateDifference[13].day = 1;
|
dateDifference[12].month = 11;
|
||||||
|
dateDifference[13].week = 416998;
|
||||||
|
dateDifference[13].day = 1;
|
||||||
|
|
||||||
/* Test Cases */
|
/* Test Cases */
|
||||||
|
|
||||||
// Date Difference test cases
|
// Date Difference test cases
|
||||||
datetimeDifftest[0].startDate = date[0]; datetimeDifftest[0].endDate = date[3]; datetimeDifftest[0].dateDiff = dateDifference[10];
|
datetimeDifftest[0].startDate = date[0];
|
||||||
datetimeDifftest[1].startDate = date[0]; datetimeDifftest[1].endDate = date[2]; datetimeDifftest[1].dateDiff = dateDifference[5];
|
datetimeDifftest[0].endDate = date[3];
|
||||||
datetimeDifftest[2].startDate = date[0]; datetimeDifftest[2].endDate = date[2]; datetimeDifftest[2].dateDiff = dateDifference[4];
|
datetimeDifftest[0].dateDiff = dateDifference[10];
|
||||||
datetimeDifftest[3].startDate = date[0]; datetimeDifftest[3].endDate = date[2]; datetimeDifftest[3].dateDiff = dateDifference[3];
|
datetimeDifftest[1].startDate = date[0];
|
||||||
datetimeDifftest[4].startDate = date[14]; datetimeDifftest[4].endDate = date[7]; datetimeDifftest[4].dateDiff = dateDifference[7];
|
datetimeDifftest[1].endDate = date[2];
|
||||||
datetimeDifftest[5].startDate = date[14]; datetimeDifftest[5].endDate = date[7]; datetimeDifftest[5].dateDiff = dateDifference[8];
|
datetimeDifftest[1].dateDiff = dateDifference[5];
|
||||||
datetimeDifftest[6].startDate = date[11]; datetimeDifftest[6].endDate = date[8]; datetimeDifftest[6].dateDiff = dateDifference[9];
|
datetimeDifftest[2].startDate = date[0];
|
||||||
datetimeDifftest[7].startDate = date[13]; datetimeDifftest[7].endDate = date[0]; datetimeDifftest[7].dateDiff = dateDifference[12];
|
datetimeDifftest[2].endDate = date[2];
|
||||||
datetimeDifftest[8].startDate = date[13]; datetimeDifftest[8].endDate = date[0]; datetimeDifftest[8].dateDiff = dateDifference[13];
|
datetimeDifftest[2].dateDiff = dateDifference[4];
|
||||||
|
datetimeDifftest[3].startDate = date[0];
|
||||||
|
datetimeDifftest[3].endDate = date[2];
|
||||||
|
datetimeDifftest[3].dateDiff = dateDifference[3];
|
||||||
|
datetimeDifftest[4].startDate = date[14];
|
||||||
|
datetimeDifftest[4].endDate = date[7];
|
||||||
|
datetimeDifftest[4].dateDiff = dateDifference[7];
|
||||||
|
datetimeDifftest[5].startDate = date[14];
|
||||||
|
datetimeDifftest[5].endDate = date[7];
|
||||||
|
datetimeDifftest[5].dateDiff = dateDifference[8];
|
||||||
|
datetimeDifftest[6].startDate = date[11];
|
||||||
|
datetimeDifftest[6].endDate = date[8];
|
||||||
|
datetimeDifftest[6].dateDiff = dateDifference[9];
|
||||||
|
datetimeDifftest[7].startDate = date[13];
|
||||||
|
datetimeDifftest[7].endDate = date[0];
|
||||||
|
datetimeDifftest[7].dateDiff = dateDifference[12];
|
||||||
|
datetimeDifftest[8].startDate = date[13];
|
||||||
|
datetimeDifftest[8].endDate = date[0];
|
||||||
|
datetimeDifftest[8].dateDiff = dateDifference[13];
|
||||||
|
|
||||||
// Date Add Out of Bound test cases (Negative tests)
|
// Date Add Out of Bound test cases (Negative tests)
|
||||||
/*OutofBound*/ datetimeBoundAdd[0].startDate = date[1]; datetimeBoundAdd[0].endDate = date[0]; datetimeBoundAdd[0].dateDiff = dateDifference[2]; // on Add date[0] not used
|
/*OutofBound*/ datetimeBoundAdd[0].startDate = date[1];
|
||||||
/*OutofBound*/ datetimeBoundAdd[1].startDate = date[2]; datetimeBoundAdd[1].endDate = date[0]; datetimeBoundAdd[1].dateDiff = dateDifference[11]; // on Add date[0] not used
|
datetimeBoundAdd[0].endDate = date[0];
|
||||||
|
datetimeBoundAdd[0].dateDiff = dateDifference[2]; // on Add date[0] not used
|
||||||
|
/*OutofBound*/ datetimeBoundAdd[1].startDate = date[2];
|
||||||
|
datetimeBoundAdd[1].endDate = date[0];
|
||||||
|
datetimeBoundAdd[1].dateDiff = dateDifference[11]; // on Add date[0] not used
|
||||||
|
|
||||||
// Date Subtract Out of Bound test cases (Negative tests)
|
// Date Subtract Out of Bound test cases (Negative tests)
|
||||||
/*OutofBound*/ datetimeBoundSubtract[0].startDate = date[3]; datetimeBoundSubtract[0].endDate = date[0]; datetimeBoundSubtract[0].dateDiff = dateDifference[2]; // on subtract date[0] not used
|
/*OutofBound*/ datetimeBoundSubtract[0].startDate = date[3];
|
||||||
/*OutofBound*/ datetimeBoundSubtract[1].startDate = date[14]; datetimeBoundSubtract[1].endDate = date[0]; datetimeBoundSubtract[1].dateDiff = dateDifference[11]; // on subtract date[0] not used
|
datetimeBoundSubtract[0].endDate = date[0];
|
||||||
|
datetimeBoundSubtract[0].dateDiff = dateDifference[2]; // on subtract date[0] not used
|
||||||
|
/*OutofBound*/ datetimeBoundSubtract[1].startDate = date[14];
|
||||||
|
datetimeBoundSubtract[1].endDate = date[0];
|
||||||
|
datetimeBoundSubtract[1].dateDiff = dateDifference[11]; // on subtract date[0] not used
|
||||||
|
|
||||||
// Date Add test cases (Positive tests)
|
// Date Add test cases (Positive tests)
|
||||||
datetimeAddCase[0].startDate = date[13]; datetimeAddCase[0].endDate = date[7]; datetimeAddCase[0].dateDiff = dateDifference[6];// add
|
datetimeAddCase[0].startDate = date[13];
|
||||||
datetimeAddCase[1].startDate = date[14]; datetimeAddCase[1].endDate = date[5]; datetimeAddCase[1].dateDiff = dateDifference[1];// add
|
datetimeAddCase[0].endDate = date[7];
|
||||||
datetimeAddCase[2].startDate = date[13]; datetimeAddCase[2].endDate = date[6]; datetimeAddCase[2].dateDiff = dateDifference[1];// add
|
datetimeAddCase[0].dateDiff = dateDifference[6]; // add
|
||||||
|
datetimeAddCase[1].startDate = date[14];
|
||||||
|
datetimeAddCase[1].endDate = date[5];
|
||||||
|
datetimeAddCase[1].dateDiff = dateDifference[1]; // add
|
||||||
|
datetimeAddCase[2].startDate = date[13];
|
||||||
|
datetimeAddCase[2].endDate = date[6];
|
||||||
|
datetimeAddCase[2].dateDiff = dateDifference[1]; // add
|
||||||
|
|
||||||
// Date Subtract test cases (Positive tests)
|
// Date Subtract test cases (Positive tests)
|
||||||
datetimeSubtractCase[0].startDate = date[14]; datetimeSubtractCase[0].endDate = date[7]; datetimeSubtractCase[0].dateDiff = dateDifference[6];// subtract
|
datetimeSubtractCase[0].startDate = date[14];
|
||||||
datetimeSubtractCase[1].startDate = date[6]; datetimeSubtractCase[1].endDate = date[11]; datetimeSubtractCase[1].dateDiff = dateDifference[1];// subtract
|
datetimeSubtractCase[0].endDate = date[7];
|
||||||
datetimeSubtractCase[2].startDate = date[9]; datetimeSubtractCase[2].endDate = date[12]; datetimeSubtractCase[2].dateDiff = dateDifference[1];// subtract
|
datetimeSubtractCase[0].dateDiff = dateDifference[6]; // subtract
|
||||||
|
datetimeSubtractCase[1].startDate = date[6];
|
||||||
|
datetimeSubtractCase[1].endDate = date[11];
|
||||||
|
datetimeSubtractCase[1].dateDiff = dateDifference[1]; // subtract
|
||||||
|
datetimeSubtractCase[2].startDate = date[9];
|
||||||
|
datetimeSubtractCase[2].endDate = date[12];
|
||||||
|
datetimeSubtractCase[2].dateDiff = dateDifference[1]; // subtract
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_METHOD(DateCalcViewModelInitializationTest)
|
TEST_METHOD(DateCalcViewModelInitializationTest)
|
||||||
|
@ -649,12 +942,7 @@ namespace DateCalculationUnitTests
|
||||||
wstring actualValue = viewModel->StrDateResultAutomationName->Data();
|
wstring actualValue = viewModel->StrDateResultAutomationName->Data();
|
||||||
|
|
||||||
// Verify each component is present in the result
|
// Verify each component is present in the result
|
||||||
wstring components[] = {
|
wstring components[] = { L"dayofweek.full", L"month.full", L"year.full", L"day" };
|
||||||
L"dayofweek.full",
|
|
||||||
L"month.full",
|
|
||||||
L"year.full",
|
|
||||||
L"day"
|
|
||||||
};
|
|
||||||
|
|
||||||
for (const wstring& component : components)
|
for (const wstring& component : components)
|
||||||
{
|
{
|
||||||
|
@ -716,5 +1004,6 @@ namespace DateCalculationUnitTests
|
||||||
|
|
||||||
VERIFY_ARE_EQUAL(expectedResult.UniversalTime, actualResult.UniversalTime);
|
VERIFY_ARE_EQUAL(expectedResult.UniversalTime, actualResult.UniversalTime);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue