Add test case for NAZ
This commit is contained in:
parent
7b7dd6d103
commit
a22145002c
199
main/main.cpp
199
main/main.cpp
@ -37,8 +37,8 @@ extern "C" char* strptime(const char* s,
|
||||
#define SZEGED (0)
|
||||
#define SCHOENAU_KOENIGSEE (0)
|
||||
#define NEUHAUSER_KORNEUBURG (0)
|
||||
#define NEUHAUSER_LINSINGER_MASCHINENBAU (1)
|
||||
#define NEUHAUSER_NORDISCHES_AUSBILDUNGSZENTRUM (0)
|
||||
#define NEUHAUSER_LINSINGER_MASCHINENBAU (0)
|
||||
#define NEUHAUSER_NORDISCHES_AUSBILDUNGSZENTRUM (1)
|
||||
#define NEUHAUSER_BILEXA_GALTUER (0)
|
||||
#define NEUHAUSER_KIRCHDORF (0)
|
||||
|
||||
@ -509,6 +509,17 @@ int main() {
|
||||
cout << endl;
|
||||
|
||||
if (isParsed) {
|
||||
|
||||
int v = compute_product_price(&cfg, PERMIT_TYPE::DAY_TICKET_ADULT);
|
||||
qCritical() << "price adult" << v;
|
||||
|
||||
int w = compute_product_price(&cfg, PERMIT_TYPE::DAY_TICKET_TEEN);
|
||||
qCritical() << "price teen" << w;
|
||||
|
||||
return 0;
|
||||
|
||||
|
||||
|
||||
QDateTime s(QDate(2023, 11, 30), QTime());
|
||||
QDateTime end;
|
||||
struct price_t price;
|
||||
@ -643,10 +654,11 @@ int main() {
|
||||
int pop_max_time;
|
||||
int pop_min_price;
|
||||
int pop_max_price;
|
||||
int pop_daily_card_price;
|
||||
|
||||
for (int t=1; t < 2; ++t) {
|
||||
for (int zone=2; zone < 3; ++zone) {
|
||||
//for (int t=6; t < 7; t+=20) {
|
||||
switch (t) {
|
||||
switch (zone) {
|
||||
case 1: {
|
||||
input.open("/opt/ptu5/opt/customer_281/etc/psa_tariff/tariff01.json");
|
||||
//pop_max_time = 6*60;
|
||||
@ -690,43 +702,186 @@ int main() {
|
||||
pop_max_time = get_maximal_parkingtime(&cfg);
|
||||
pop_min_price = get_minimal_parkingprice(&cfg);
|
||||
pop_max_price = get_maximal_parkingprice(&cfg);
|
||||
pop_daily_card_price = cfg.getPaymentOptions().pop_daily_card_price;
|
||||
|
||||
qCritical() << " pop_min_time: " << pop_min_time;
|
||||
qCritical() << " pop_max_time: " << pop_max_time;
|
||||
qCritical() << " pop_min_price: " << pop_min_price;
|
||||
qCritical() << " pop_max_price: " << pop_max_price;
|
||||
qCritical() << "pop_daily_card_price: " << cfg.getPaymentOptions().pop_daily_card_price;
|
||||
qCritical() << "pop_daily_card_price: " << pop_daily_card_price;
|
||||
|
||||
if (pop_min_time > pop_max_time) {
|
||||
qCritical() << "ERROR pop_min_time > pop_max_time"
|
||||
<< pop_min_time << pop_max_time;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (pop_min_price > pop_max_price) {
|
||||
qCritical() << "ERROR pop_min_price > pop_max_price"
|
||||
<< pop_min_price << pop_max_price;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (pop_daily_card_price < pop_max_price) {
|
||||
qCritical() << "ERROR pop_daily_card_price < pop_max_price"
|
||||
<< pop_daily_card_price << pop_max_price;
|
||||
return -1;
|
||||
}
|
||||
|
||||
QMap<int, int> m;
|
||||
|
||||
{
|
||||
// zone 1 (lila)
|
||||
QDateTime s(QDate(2023, 11, 30), QTime());
|
||||
QDateTime end;
|
||||
int cnt = 1;
|
||||
#if 0
|
||||
for (int duration = 15; duration <= pop_max_time; duration += 5) {
|
||||
#if 1
|
||||
if (zone == 1) {
|
||||
m.insert(5, pop_min_price);
|
||||
m.insert(10, pop_min_price);
|
||||
|
||||
m.insert(pop_min_time, pop_min_price);
|
||||
m.insert(20, 55);
|
||||
m.insert(25, 69);
|
||||
m.insert(30, 83);
|
||||
m.insert(35, 97);
|
||||
m.insert(40, 110);
|
||||
m.insert(45, 124);
|
||||
m.insert(50, 138);
|
||||
m.insert(55, 152);
|
||||
m.insert(60, 165);
|
||||
|
||||
m.insert(65, 179);
|
||||
m.insert(70, 193);
|
||||
m.insert(75, 207);
|
||||
m.insert(80, 220);
|
||||
m.insert(85, 234);
|
||||
m.insert(90, 248);
|
||||
m.insert(95, 262);
|
||||
m.insert(100, 275);
|
||||
m.insert(105, 289);
|
||||
m.insert(110, 303);
|
||||
m.insert(115, 317);
|
||||
m.insert(120, 330);
|
||||
|
||||
m.insert(125, 344);
|
||||
m.insert(130, 358);
|
||||
m.insert(135, 372);
|
||||
m.insert(140, 385);
|
||||
m.insert(145, 399);
|
||||
m.insert(150, 413);
|
||||
m.insert(155, 427);
|
||||
m.insert(160, 440);
|
||||
m.insert(165, 454);
|
||||
m.insert(170, 468);
|
||||
m.insert(175, 482);
|
||||
m.insert(180, 495);
|
||||
|
||||
m.insert(185, 509);
|
||||
m.insert(190, 523);
|
||||
m.insert(195, 537);
|
||||
m.insert(200, 550);
|
||||
m.insert(205, 564);
|
||||
m.insert(210, 578);
|
||||
m.insert(215, 592);
|
||||
m.insert(220, 605);
|
||||
m.insert(225, 619);
|
||||
m.insert(230, 633);
|
||||
m.insert(235, 647);
|
||||
m.insert(240, 660);
|
||||
|
||||
m.insert(245, 674);
|
||||
m.insert(250, 688);
|
||||
m.insert(255, 702);
|
||||
m.insert(260, 715);
|
||||
m.insert(265, 729);
|
||||
m.insert(270, 743);
|
||||
m.insert(275, 757);
|
||||
m.insert(280, 770);
|
||||
m.insert(285, 784);
|
||||
m.insert(290, 798);
|
||||
m.insert(295, 812);
|
||||
m.insert(300, 825);
|
||||
|
||||
m.insert(305, 839);
|
||||
m.insert(310, 853);
|
||||
m.insert(315, 867);
|
||||
m.insert(320, 880);
|
||||
m.insert(325, 894);
|
||||
m.insert(330, 908);
|
||||
m.insert(335, 922);
|
||||
m.insert(340, 935);
|
||||
m.insert(345, 949);
|
||||
m.insert(350, 963);
|
||||
m.insert(355, 977);
|
||||
m.insert(360, pop_max_price);
|
||||
|
||||
m.insert(365, pop_max_price);
|
||||
m.insert(370, pop_max_price);
|
||||
m.insert(375, pop_max_price);
|
||||
m.insert(380, pop_max_price);
|
||||
m.insert(385, pop_max_price);
|
||||
m.insert(390, pop_max_price);
|
||||
m.insert(395, pop_max_price);
|
||||
m.insert(400, pop_max_price);
|
||||
m.insert(405, pop_max_price);
|
||||
m.insert(410, pop_max_price);
|
||||
m.insert(415, pop_max_price);
|
||||
m.insert(420, pop_max_price);
|
||||
} else
|
||||
if (zone == 2) {
|
||||
|
||||
}
|
||||
|
||||
struct price_t price;
|
||||
for (int duration = pop_min_time; duration <= pop_max_time; duration += 5) {
|
||||
for (int offset = 480; offset < 1080; ++offset) {
|
||||
QDateTime start = s.addSecs(offset * 60);
|
||||
// qCritical() << "start" << start.toString(Qt::ISODate);
|
||||
end = QDateTime();
|
||||
price.netto = 0;
|
||||
if (compute_price_for_parking_ticket(&cfg, start, duration, end, &price)) {
|
||||
double cost = price.netto;
|
||||
|
||||
double cost = Calculator::GetInstance().GetCostFromDuration(&cfg, 3, start, end, duration);
|
||||
// Q_ASSERT(cost == duration*2.5);
|
||||
//qCritical() << "";
|
||||
qCritical() << cnt << "start" << start.toString(Qt::ISODate)
|
||||
<< "end" << end.toString(Qt::ISODate)
|
||||
qCritical() << start.toString(Qt::ISODate) << end.toString(Qt::ISODate)
|
||||
<< duration << cost;
|
||||
|
||||
//if (cost != m[duration]) {
|
||||
// qCritical() << "ERROR computing_price_for_parking_ticket"
|
||||
// << "duration" << duration
|
||||
// << "HAVE cost" << cost
|
||||
// << "SHOULD HAVE cost" << m[duration];
|
||||
// return -1;
|
||||
//}
|
||||
} else {
|
||||
qCritical() << "ERROR computing_price_for_parking_ticket AT"
|
||||
<< cnt << "duration" << duration
|
||||
<< "start" << start.toString(Qt::ISODate);
|
||||
return -1;
|
||||
}
|
||||
start = s.addSecs(offset * 60);
|
||||
end = QDateTime();
|
||||
price.netto = 0;
|
||||
|
||||
if (zone == 1) { // || zone == 2)
|
||||
if (compute_price_for_daily_ticket(&cfg, start, end, PERMIT_TYPE::DAY_TICKET, &price)) {
|
||||
if (price.netto != pop_daily_card_price) {
|
||||
qCritical() << "ERROR computing_price_for_daily_ticket"
|
||||
<< "duration" << duration
|
||||
<< "cost" << cost;
|
||||
<< "HAVE cost" << price.netto
|
||||
<< "SHOULD HAVE cost" << pop_daily_card_price;
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
qCritical() << "ERROR computing_price_for_daily_ticket AT"
|
||||
<< "start" << start.toString(Qt::ISODate);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
std::string duration = Calculator::GetInstance().GetDurationFromCost(&cfg,
|
||||
3,
|
||||
start.toString(Qt::ISODate).toStdString().c_str(),
|
||||
cost, false, true);
|
||||
//Q_ASSERT(cost == duration*2.5);
|
||||
qCritical() << cnt << "start" << start.toString(Qt::ISODate)
|
||||
<< "cost" << cost
|
||||
<< "until" << duration.c_str() << start.secsTo(QDateTime::fromString(duration.c_str(), Qt::ISODate)) / 60;
|
||||
++cnt;
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
QDateTime start = s.addSecs(480 * 60); // 8:00:00
|
||||
double cost = 2000;
|
||||
|
Loading…
Reference in New Issue
Block a user