File indexing completed on 2024-05-12 16:45:29

0001 /***************************************************************************
0002  * SPDX-FileCopyrightText: 2022 S. MANKOWSKI stephane@mankowski.fr
0003  * SPDX-FileCopyrightText: 2022 G. DE BURE support@mankowski.fr
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  ***************************************************************************/
0006 /** @file
0007  * This file is a test script.
0008  *
0009  * @author Stephane MANKOWSKI
0010  */
0011 #include "skgtestmacro.h"
0012 #include "skgtreemap.h"
0013 
0014 #define SKGTESTLAYOUT(VARIABLE, NAME, X, Y, W, H, VALUE) \
0015     SKGTEST(QStringLiteral("getID"), (VARIABLE).getID(), NAME)\
0016     SKGTEST(QStringLiteral("getX"), SKGServices::doubleToString((VARIABLE).getX()), SKGServices::doubleToString(X))\
0017     SKGTEST(QStringLiteral("getY"), SKGServices::doubleToString((VARIABLE).getY()), SKGServices::doubleToString(Y))\
0018     SKGTEST(QStringLiteral("getW"), SKGServices::doubleToString((VARIABLE).getW()), SKGServices::doubleToString(W))\
0019     SKGTEST(QStringLiteral("getH"), SKGServices::doubleToString((VARIABLE).getH()), SKGServices::doubleToString(H))\
0020     SKGTEST(QStringLiteral("getValue"), SKGServices::doubleToString((VARIABLE).getValue()), SKGServices::doubleToString(VALUE))
0021 
0022 int main(int argc, char** argv)
0023 {
0024     Q_UNUSED(argc)
0025     Q_UNUSED(argv)
0026 
0027     // Init test
0028     SKGINITTEST(true)
0029 
0030     // A Very simple case (1 element)
0031     {
0032         // Build initial test case
0033         SKGTreeMap t1(QStringLiteral("Root"), 0, 0, 0, 6, 4);
0034         t1.addChild(SKGTreeMap(QStringLiteral("1.1"), 100));
0035 
0036         // Compute the layout
0037         t1.compute();
0038 
0039         // Check root
0040         SKGTESTLAYOUT(t1, QStringLiteral("Root"), 0.0, 0.0, 6.0, 4.0, 100.0);
0041 
0042         // Check the layout
0043         auto tiles = t1.getChildren();
0044         SKGTESTLAYOUT(tiles[0], QStringLiteral("1.1"), 0.0, 0.0, 6.0, 4.0, 100.0);
0045     }
0046 
0047     // A simple case (2 elements horizontal)
0048     {
0049         // Build initial test case
0050         SKGTreeMap t1(QStringLiteral("Root"), 0, 0, 0, 6, 4);
0051         t1.addChild(SKGTreeMap(QStringLiteral("1.1"), 100));
0052         t1.addChild(SKGTreeMap(QStringLiteral("1.2"), 300));
0053 
0054         // Compute the layout
0055         t1.compute();
0056 
0057         // Check root
0058         SKGTESTLAYOUT(t1, QStringLiteral("Root"), 0.0, 0.0, 6.0, 4.0, 400.0);
0059 
0060         // Check the layout
0061         auto tiles = t1.getChildren();
0062         SKGTESTLAYOUT(tiles[0], QStringLiteral("1.2"), 0.0, 0.0, 4.5, 4.0, 300.0);
0063         SKGTESTLAYOUT(tiles[1], QStringLiteral("1.1"), 4.5, 0.0, 1.5, 4.0, 100.0);
0064     }
0065 
0066     // A simple case (2 elements vertical)
0067     {
0068         // Build initial test case
0069         SKGTreeMap t1(QStringLiteral("Root"), 0, 0, 0, 4, 6);
0070         t1.addChild(SKGTreeMap(QStringLiteral("1.1"), 100));
0071         t1.addChild(SKGTreeMap(QStringLiteral("1.2"), 300));
0072 
0073         // Compute the layout
0074         t1.compute();
0075 
0076         // Check root
0077         SKGTESTLAYOUT(t1, QStringLiteral("Root"), 0.0, 0.0, 4.0, 6.0, 400.0);
0078 
0079         // Check the layout
0080         auto tiles = t1.getChildren();
0081         SKGTESTLAYOUT(tiles[0], QStringLiteral("1.2"), 0.0, 0.0, 4.0, 4.5, 300.0);
0082         SKGTESTLAYOUT(tiles[1], QStringLiteral("1.1"), 0.0, 4.5, 4.0, 1.5, 100.0);
0083     }
0084 
0085     // More complex case
0086     // 4 |------------|
0087     //   | 6    |2|2|1|
0088     //   |      |-----|
0089     // 2 |-------4  |3|
0090     //   | 6    |   | |
0091     //   |      |   | |
0092     // 0 |------------|
0093     //   0      3     6
0094     {
0095         // Build initial test case
0096         SKGTreeMap t1(QStringLiteral("Root"), 0, 0, 0, 6, 4);
0097         t1.addChild(SKGTreeMap(QStringLiteral("1.1"), 6));
0098         t1.addChild(SKGTreeMap(QStringLiteral("1.6"), 2));
0099         t1.addChild(SKGTreeMap(QStringLiteral("1.3"), 4));
0100         t1.addChild(SKGTreeMap(QStringLiteral("1.4"), 3));
0101         t1.addChild(SKGTreeMap(QStringLiteral("1.5"), 2));
0102         t1.addChild(SKGTreeMap(QStringLiteral("1.2"), 6));
0103         t1.addChild(SKGTreeMap(QStringLiteral("1.7"), 1));
0104         t1.addChild(SKGTreeMap(QStringLiteral("1.8"), 0));
0105 
0106         // Compute the layout
0107         t1.compute();
0108 
0109         // Check root
0110         auto result = t1.getAllTilesById();
0111         SKGTESTLAYOUT(result[QStringLiteral("Root")], QStringLiteral("Root"), 0.0, 0.0, 6.0, 4.0, 24.0);
0112 
0113         // Check the layout
0114         SKGTESTLAYOUT(result[QStringLiteral("1.1")], QStringLiteral("1.1"), 0.0, 0.0, 3.0, 2.0, 6.0);
0115         SKGTESTLAYOUT(result[QStringLiteral("1.2")], QStringLiteral("1.2"), 0.0, 2.0, 3.0, 2.0, 6.0);
0116         SKGTESTLAYOUT(result[QStringLiteral("1.3")], QStringLiteral("1.3"), 3.0, 0.0, 4.0 * 3.0 / 7.0, 7.0 / 3.0, 4.0);
0117         SKGTESTLAYOUT(result[QStringLiteral("1.4")], QStringLiteral("1.4"), 3.0 + 4.0 * 3.0 / 7.0, 0.0, 3.0 * 3.0 / 7.0, 7.0 / 3.0, 3.0);
0118 
0119         SKGTESTLAYOUT(result[QStringLiteral("1.5")], QStringLiteral("1.5"), 3.0, 7.0 / 3.0, 2.0 * 3.0 / 5.0, 4.0 - 7.0 / 3.0, 2.0);
0120         SKGTESTLAYOUT(result[QStringLiteral("1.6")], QStringLiteral("1.6"), 3.0 + 2.0 * 3.0 / 5.0, 7.0 / 3.0, 2.0 * 3.0 / 5.0, 4.0 - 7.0 / 3.0, 2.0);
0121         SKGTESTLAYOUT(result[QStringLiteral("1.7")], QStringLiteral("1.7"), 3.0 + 4.0 * 3.0 / 5.0, 7.0 / 3.0, 1.0 * 3.0 / 5.0, 4.0 - 7.0 / 3.0, 1.0);
0122         SKGTESTLAYOUT(result[QStringLiteral("1.8")], QStringLiteral("1.8"), 3.0 + 4.0 * 3.0 / 5.0, 4.0, 0.6, 0, 0);
0123     }
0124 
0125     // End test
0126     SKGENDTEST()
0127 }