unittest start
This commit is contained in:
parent
bc87732585
commit
fa8bd24551
8 changed files with 105 additions and 99 deletions
|
|
@ -1,6 +1,7 @@
|
|||
//Tóth Dániel Mátyás | IFPQYY | V1
|
||||
#include "pch.h"
|
||||
#include "CppUnitTest.h"
|
||||
#include <cmydate.h>
|
||||
#include <cmydateexception.h>
|
||||
|
||||
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
|
||||
|
||||
|
|
@ -10,8 +11,86 @@ namespace UnitTest1
|
|||
{
|
||||
public:
|
||||
|
||||
TEST_METHOD(TestMethod1)
|
||||
|
||||
TEST_METHOD(ValidDate)
|
||||
{
|
||||
CMyDate date;
|
||||
Assert::AreEqual(true, date.IsValid(1980, 4, 23));
|
||||
Assert::AreEqual(true, date.IsValid(1970, 1, 31));
|
||||
Assert::AreEqual(true, date.IsValid(1970, 2, 28));
|
||||
Assert::AreEqual(true, date.IsValid(1970, 9, 30));
|
||||
Assert::AreEqual(true, date.IsValid(1972, 2, 29));
|
||||
}
|
||||
|
||||
TEST_METHOD(InvalidDates)
|
||||
{
|
||||
CMyDate date;
|
||||
|
||||
try
|
||||
{
|
||||
date.IsValid(1969, 1, 1);
|
||||
Assert::IsTrue(false);
|
||||
}
|
||||
catch (const CMyDateException &e)
|
||||
{
|
||||
Assert::AreEqual(CMyDateException::ErrMinYear, e.what());
|
||||
}
|
||||
try
|
||||
{
|
||||
date = CMyDate(1970, 0, 1);
|
||||
}
|
||||
catch (CMyDateException e)
|
||||
{
|
||||
Assert::AreEqual(CMyDateException::ErrMinMonth, e.what());
|
||||
}
|
||||
try
|
||||
{
|
||||
date = CMyDate(1970, 13, 1);
|
||||
}
|
||||
catch (CMyDateException e)
|
||||
{
|
||||
Assert::AreEqual(CMyDateException::ErrMaxMonth, e.what());
|
||||
}
|
||||
try
|
||||
{
|
||||
date = CMyDate(1970, 1, 0);
|
||||
}
|
||||
catch (CMyDateException e)
|
||||
{
|
||||
Assert::AreEqual(CMyDateException::ErrMinDay, e.what());
|
||||
}
|
||||
try
|
||||
{
|
||||
date = CMyDate(1970, 1, 32);
|
||||
}
|
||||
catch (CMyDateException e)
|
||||
{
|
||||
Assert::AreEqual(CMyDateException::ErrMaxDay, e.what());
|
||||
}
|
||||
try
|
||||
{
|
||||
date = CMyDate(1970, 9, 31);
|
||||
}
|
||||
catch (CMyDateException e)
|
||||
{
|
||||
Assert::AreEqual(CMyDateException::ErrMaxDay, e.what());
|
||||
}
|
||||
try
|
||||
{
|
||||
date = CMyDate(1970, 4, 29);
|
||||
}
|
||||
catch (CMyDateException e)
|
||||
{
|
||||
Assert::AreEqual(CMyDateException::ErrMaxDay, e.what());
|
||||
}
|
||||
try
|
||||
{
|
||||
date = CMyDate(2000, 4, 29);
|
||||
}
|
||||
catch (CMyDateException e)
|
||||
{
|
||||
Assert::AreEqual(CMyDateException::ErrMaxDay, e.what());
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,6 +77,7 @@
|
|||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IncludePath>C:\Users\danit\Desktop\2026-27-cpp-homework\feladat4\feladat4;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
|
|
@ -142,7 +143,8 @@
|
|||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories>C:\Users\danit\Desktop\2026-27-cpp-homework\feladat4\feladat4\x64\Debug;$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>cmydate;cmydateexception;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
|
|
|
|||
|
|
@ -156,25 +156,25 @@ static int GetMonthDayCount(int month, int year) {
|
|||
}
|
||||
break;
|
||||
default:
|
||||
throw new CMyDateException(CMyDateException::ErrUnexpected);
|
||||
throw CMyDateException(CMyDateException::ErrUnexpected);
|
||||
break;
|
||||
}
|
||||
}
|
||||
static bool IsValidYear(int year) {
|
||||
if (year < 1970)
|
||||
{
|
||||
throw new CMyDateException(CMyDateException::ErrMinYear);
|
||||
throw CMyDateException(CMyDateException::ErrMinYear);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
static bool IsValidMonth(int month) {
|
||||
if (month < 1)
|
||||
{
|
||||
throw new CMyDateException(CMyDateException::ErrMinMonth);
|
||||
throw CMyDateException(CMyDateException::ErrMinMonth);
|
||||
}
|
||||
if (month > 12)
|
||||
{
|
||||
throw new CMyDateException(CMyDateException::ErrMaxMonth);
|
||||
throw CMyDateException(CMyDateException::ErrMaxMonth);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
@ -182,11 +182,11 @@ static bool IsValidDay(int year, int month, int day) {
|
|||
int monthday = GetMonthDayCount(month, year);
|
||||
if (day < 1)
|
||||
{
|
||||
throw new CMyDateException(CMyDateException::ErrMinDay);
|
||||
throw CMyDateException(CMyDateException::ErrMinDay);
|
||||
}
|
||||
if (day > monthday)
|
||||
{
|
||||
throw new CMyDateException(CMyDateException::ErrMaxDay);
|
||||
throw CMyDateException(CMyDateException::ErrMaxDay);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,10 +21,11 @@ static int CopyStr(char* dest, const char* src, const char* concat = "\0") {
|
|||
|
||||
CMyDateException::CMyDateException(const char* s)
|
||||
{
|
||||
msg = new char[256];
|
||||
CopyStr(msg, s);
|
||||
}
|
||||
|
||||
const char* CMyDateException::what() {
|
||||
const char* CMyDateException::what() const {
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
class CMyDateException {
|
||||
public:
|
||||
CMyDateException(const char* s);
|
||||
const char* what(void);
|
||||
const char* what(void) const;
|
||||
static constexpr const char* ErrMinDay = "Hiba: nap kisebb, mint 1!";
|
||||
static constexpr const char* ErrMaxDay = "Hiba: nap nagyobb, mint az adott honap napszama!";
|
||||
static constexpr const char* ErrMinMonth = "Hiba: honap kisebb, mint 1!";
|
||||
|
|
|
|||
|
|
@ -1,95 +1,19 @@
|
|||
//Tóth Dániel Mátyás | IFPQYY | V1
|
||||
#include <exception>
|
||||
#include <iostream>
|
||||
#include "cmydateexception.h"
|
||||
#include "cmydate.h"
|
||||
using namespace std;
|
||||
/*#define TIMESTAMP_YEAR 1970
|
||||
static bool IsLeapYear(int year) {
|
||||
if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
static int GetMonthDayCount(int month, int year) {
|
||||
switch (month)
|
||||
{
|
||||
case 1:
|
||||
case 3:
|
||||
case 5:
|
||||
case 7:
|
||||
case 8:
|
||||
case 10:
|
||||
case 12:
|
||||
return 31;
|
||||
break;
|
||||
case 4:
|
||||
case 6:
|
||||
case 9:
|
||||
case 11:
|
||||
return 30;
|
||||
break;
|
||||
case 2:
|
||||
if (IsLeapYear(year))
|
||||
{
|
||||
return 29;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 28;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new CMyDateException(CMyDateException::ErrUnexpected);
|
||||
break;
|
||||
}
|
||||
}
|
||||
static int DayOfTheYearArgs(int year, int month, int day) {
|
||||
for (int i = 1; i < month; i++)
|
||||
{
|
||||
day += GetMonthDayCount(i, year);
|
||||
}
|
||||
return day;
|
||||
}
|
||||
static int DateToTimeStamp(int year, int month, int day) { //counting from 1970-01-01
|
||||
int y = year - 1;
|
||||
int e = TIMESTAMP_YEAR - 1;
|
||||
|
||||
int days = 365 * (year - TIMESTAMP_YEAR)
|
||||
+ (y / 4 - e / 4)
|
||||
- (y / 100 - e / 100)
|
||||
+ (y / 400 - e / 400);
|
||||
|
||||
return days + DayOfTheYearArgs(year, month, day - 1);
|
||||
}
|
||||
static void TimeStampToDate(int timestamp, int* year, int* month, int* day) {
|
||||
*year = TIMESTAMP_YEAR;
|
||||
while (timestamp < 0)
|
||||
{
|
||||
(*year)--;
|
||||
timestamp += IsLeapYear(*year) ? 366 : 365;
|
||||
}
|
||||
while (timestamp >= (IsLeapYear(*year) ? 366 : 365))
|
||||
{
|
||||
timestamp -= IsLeapYear(*year) ? 366 : 365;
|
||||
(*year)++;
|
||||
}
|
||||
|
||||
*month = 1;
|
||||
int monthDay = GetMonthDayCount(*month, *year);
|
||||
while (timestamp >= monthDay)
|
||||
{
|
||||
timestamp -= monthDay;
|
||||
(*month)++;
|
||||
monthDay = GetMonthDayCount(*month, *year);
|
||||
}
|
||||
|
||||
*day = timestamp + 1;
|
||||
}*/
|
||||
|
||||
int main() {
|
||||
/*int t = DateToTimeStamp(1976, 10, 23);
|
||||
cout << t << "\n";
|
||||
int y = 0, m = 0, d = 0;
|
||||
TimeStampToDate(t, &y, &m, &d);
|
||||
cout << y << ". " << m << ". " << d << ".";*/
|
||||
CMyDate date;
|
||||
try
|
||||
{
|
||||
date.IsValid(1969, 0, 0);
|
||||
}
|
||||
catch (const CMyDateException& e)
|
||||
{
|
||||
cout << e.what();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue