/
ArtemNech
/
simpleOpenGL
Обзор
Документация
Войти
/
ArtemNech
/
simpleOpenGL
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
devOpt
tests/ttesttransform.cpp
138 строк
4 KB
Artem Nechitaylenko
QT tests enabled
17 май 2026, 12:43
17 май 2026, 12:43
0e7485d
Код
Авторство
О чём код?
#include "ttesttransform.h" #include "../backend/ogl_sys/NTransform.h" TTestTransform::TTestTransform(QObject *parent) : QObject{parent} {} void TTestTransform::initTestCase() { qDebug() << "=== Starting NTransform tests ==="; } void TTestTransform::cleanupTestCase() { qDebug() << "=== NTransform tests finished ==="; } void TTestTransform::init() { // Подготовка перед каждым тестом } void TTestTransform::cleanup() { // Очистка после каждого теста } void TTestTransform::testScreenToWorld() { ngraph::NTransform t, w; ngraph::NPointF panOffset(100, 50); ngraph::NTransform pan = ngraph::NTransform::translate(panOffset); ngraph::NTransform zoom = ngraph::NTransform::scale(2.0, 2.0); t = pan.combined(zoom); w = t.inverted(); ngraph::NPointF screen(200, 150); //ngraph::NPointF world = t.map(screen); ngraph::NPointF world = w.map(screen); QCOMPARE(world.x(), 50.0); // (200 - 100) / 2 QCOMPARE(world.y(), 50.0); // (150 - 50) / 2 } void TTestTransform::testZoom() { ngraph::NTransform t; // Проверка масштабирования t = ngraph::NTransform::scale(2.0, 2.0); QCOMPARE(t.scaleX(), 2.0); QCOMPARE(t.scaleY(), 2.0); ngraph::NPointF point(10, 10); ngraph::NPointF mapped = t.map(point); QCOMPARE(mapped.x(), 20.0); QCOMPARE(mapped.y(), 20.0); } void TTestTransform::testPan_data() { QTest::addColumn<ngraph::NPointF>("input"); QTest::addColumn<ngraph::NPointF>("expected"); QTest::addColumn<double>("scale"); QTest::addColumn<double>("dx"); QTest::addColumn<double>("dy"); QTest::newRow("origin") << ngraph::NPointF(0, 0) << ngraph::NPointF(0, 0) << 1.0 << 0.0 << 0.0; QTest::newRow("positive_translate") << ngraph::NPointF(10, 10) << ngraph::NPointF(20, 20) << 1.0 << 10.0 << 10.0; QTest::newRow("scale_2x") << ngraph::NPointF(10, 10) << ngraph::NPointF(20, 20) << 2.0 << 0.0 << 0.0; QTest::newRow("scale_and_translate") << ngraph::NPointF(10, 10) << ngraph::NPointF(30, 30) << 2.0 << 10.0 << 10.0; } void TTestTransform::testPan() { QFETCH(ngraph::NPointF, input); QFETCH(ngraph::NPointF, expected); QFETCH(double, scale); QFETCH(double, dx); QFETCH(double, dy); ngraph::NTransform pan = ngraph::NTransform::translate(dx, dy); ngraph::NTransform zoom = ngraph::NTransform::scale(scale, scale); ngraph::NTransform t = pan.combined(zoom); ngraph::NPointF result = t.map(input); QCOMPARE(result.x(), expected.x()); QCOMPARE(result.y(), expected.y()); } void TTestTransform::testInverse() { ngraph::NTransform original = ngraph::NTransform::scale(2.0, 2.0) .combined(ngraph::NTransform::translate(100, 50)); ngraph::NTransform inverse = original.inverted(); ngraph::NTransform identity = original.combined(inverse); ngraph::NPointF testPoint(50, 75); ngraph::NPointF result = identity.map(testPoint); // После применения original + inverse должны вернуться к исходной точке QVERIFY(std::abs(result.x() - testPoint.x()) < 1e-9); QVERIFY(std::abs(result.y() - testPoint.y()) < 1e-9); } void TTestTransform::testRectMapping() { ngraph::NTransform pan = ngraph::NTransform::translate(10, 20); ngraph::NTransform zoom = ngraph::NTransform::scale(2.0, 2.0); ngraph::NTransform t = pan.combined(zoom); ngraph::NRectF rect(ngraph::NPointF(0, 0), ngraph::NPointF(100, 50)); ngraph::NRectF mapped = t.map(rect); QCOMPARE(mapped.left(), 10.0); QCOMPARE(mapped.top(), 20.0); QCOMPARE(mapped.right(), 210.0); QCOMPARE(mapped.bottom(), 120.0); }