Files
qelectrotech-source-mirror/tests/qttest/tst_reportfoliotitle.cpp
T
DaTweety 1080188f6e Add %T, the target folio's title, to report and cross reference formulas
A folio report could name the folio it points to by position (%f), folio
number (%F), installation (%M) and location (%LM), but not by its title.
EPLAN and other tools print references like "+UV1/1 Versorgung UG/EG.0",
which with %T is the formula "+%LM/%F %T.%c".

- FormulaContext carries the folio title, filled from the title block.
- %T is replaced on its own only, not as the start of a longer word.
- A report whose formula uses %T follows the target folio's title block
  (BorderTitleBlock::informationChanged), as %F already follows its
  folio number.
- The report and cross reference property pages list %T.

tst_reportfoliotitle checks the replacement, that %total and title
block variables keep their values, and an empty title.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 11:47:48 +02:00

81 lines
2.4 KiB
C++

/*
Copyright 2006-2026 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "qetapptest.h"
#include "autoNum/assignvariables.h"
#include <QStandardPaths>
/**
%T in a folio report or cross reference formula is the title of the
folio the reference points to, so a reference can read like the ones
EPLAN prints: "+UV1/1 Versorgung UG/EG.0". %total and the title block
and project variables (lower case only) keep their own values.
*/
class tst_reportfoliotitle : public QObject
{
Q_OBJECT
static QString label(const QString &formula, const autonum::FormulaContext &c)
{
autonum::sequentialNumbers seq;
return autonum::AssignVariables::formulaToLabel(formula, seq, c);
}
static autonum::FormulaContext context()
{
autonum::FormulaContext c;
c.folio = QStringLiteral("1");
c.folio_title = QStringLiteral("Versorgung UG/EG");
c.folio_index = 2;
c.folio_total = 23;
c.locmach = QStringLiteral("UV1");
return c;
}
private slots:
void titleIsReplaced()
{
const QString result = label(QStringLiteral("+%LM/%F %T"), context());
QCOMPARE(result, QStringLiteral("+UV1/1 Versorgung UG/EG"));
}
void otherVariablesKeepTheirValue()
{
autonum::FormulaContext c = context();
c.title_block_fields.addValue(QStringLiteral("typ"), QStringLiteral("SH363N"));
const QString result = label(QStringLiteral("%T / %total / %typ / %{typ}"), c);
QCOMPARE(result, QStringLiteral("Versorgung UG/EG / 23 / SH363N / SH363N"));
}
void emptyTitleLeavesNothing()
{
autonum::FormulaContext c = context();
c.folio_title.clear();
const QString result = label(QStringLiteral("%F%T"), c);
QCOMPARE(result, QStringLiteral("1"));
}
};
int main(int argc, char **argv)
{
QStandardPaths::setTestModeEnabled(true);
return QetAppTest::run<tst_reportfoliotitle>(argc, argv);
}
#include "tst_reportfoliotitle.moc"