File indexing completed on 2024-05-19 16:18:19

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 / Guillaume DE BURE
0010  */
0011 #include "skgtestmacro.h"
0012 #include "skgbankincludes.h"
0013 
0014 /**
0015  * The main function of the unit test
0016  * @param argc the number of arguments
0017  * @param argv the list of arguments
0018  */
0019 int main(int argc, char** argv)
0020 {
0021     Q_UNUSED(argc)
0022     Q_UNUSED(argv)
0023 
0024     // Init test
0025     SKGINITTEST(true)
0026 
0027     QDate now = QDate::currentDate();
0028 
0029     {
0030         // Test objectbase
0031         SKGDocumentBank document1;
0032         SKGTESTERROR(QStringLiteral("document1.initialize()"), document1.initialize(), true)
0033         SKGError err;
0034         {
0035             SKGTEST(QStringLiteral("DOC:getDisplay"), document1.getDisplay(QStringLiteral("v_node.unknown")), QStringLiteral("v_node.unknown"))
0036             SKGTEST(QStringLiteral("DOC:getDisplay"), document1.getDisplay(QStringLiteral("t_comment")), QStringLiteral("Comment"))
0037             SKGTEST(QStringLiteral("DOC:getDisplay"), document1.getDisplay(QStringLiteral("p_Test")), QStringLiteral("Test"))
0038             SKGTEST(QStringLiteral("DOC:getDisplay"), document1.getDisplay(QStringLiteral("operation.p_Test")), QStringLiteral("operation.Test"))
0039 
0040             SKGServices::SKGAttributesList undoredoAttributes;
0041             SKGTESTERROR(QStringLiteral("OBJBASE:getAttributesDescription)"), document1.getAttributesDescription(QStringLiteral("doctransaction"), undoredoAttributes), true)
0042             SKGTEST(QStringLiteral("OBJBASE:undoredoAttributes.count"), undoredoAttributes.count(), 7)
0043             SKGTEST(QStringLiteral("OBJBASE:undoredoAttributes.name"), undoredoAttributes[0].name, QStringLiteral("id"))
0044             SKGTEST(QStringLiteral("OBJBASE:undoredoAttributes.type"), static_cast<unsigned int>(undoredoAttributes[0].type), static_cast<unsigned int>(SKGServices::ID))
0045             SKGTESTBOOL("OBJBASE:undoredoAttributes.notnull", undoredoAttributes[0].notnull, false)
0046             SKGTEST(QStringLiteral("OBJBASE:undoredoAttributes.defaultvalue"), undoredoAttributes[0].defaultvalue, QLatin1String(""))
0047             SKGTEST(QStringLiteral("OBJBASE:undoredoAttributes.name"), undoredoAttributes[2].name, QStringLiteral("t_mode"))
0048             SKGTEST(QStringLiteral("OBJBASE:undoredoAttributes.type"), static_cast<unsigned int>(undoredoAttributes[2].type), static_cast<unsigned int>(SKGServices::TEXT))
0049             SKGTESTBOOL("OBJBASE:undoredoAttributes.notnull", undoredoAttributes[2].notnull, true)
0050             SKGTEST(QStringLiteral("OBJBASE:undoredoAttributes.defaultvalue"), undoredoAttributes[2].defaultvalue, QStringLiteral("'U'"))
0051             /*
0052             | cid | name         | t_type       | notnull | dflt_value | pk |
0053             | 0   | id           | INTEGER    | 99      |            | 1  |
0054             | 1   | name         | TEXT       | 99      |            | 0  |
0055             | 2   | t_mode         | VARCHAR(1) | 0       | 'U'        | 0  |
0056             | 3   | d_date | DATE       | 99      |            | 0  |
0057             | 4   | t_savestep     | VARCHAR(1) | 0       | 'N'        | 0  |
0058             | 5   | parent       | INTEGER    | 0       |            | 0  |
0059             */
0060 
0061             QStringList undoredoAttributeNames;
0062             SKGTESTERROR(QStringLiteral("OBJBASE:getAttributesList)"), document1.getAttributesList(QStringLiteral("doctransaction"), undoredoAttributeNames), true)
0063             SKGTEST(QStringLiteral("OBJBASE:undoredoAttributeNames.count"), undoredoAttributeNames.count(), 7)
0064             SKGTEST(QStringLiteral("OBJBASE:undoredoAttributeNames"), undoredoAttributeNames[0], QStringLiteral("id"))
0065             SKGTEST(QStringLiteral("OBJBASE:undoredoAttributeNames"), undoredoAttributeNames[1], QStringLiteral("t_name"))
0066             SKGTEST(QStringLiteral("OBJBASE:undoredoAttributeNames"), undoredoAttributeNames[2], QStringLiteral("t_mode"))
0067             SKGTEST(QStringLiteral("OBJBASE:undoredoAttributeNames"), undoredoAttributeNames[3], QStringLiteral("d_date"))
0068             SKGTEST(QStringLiteral("OBJBASE:undoredoAttributeNames"), undoredoAttributeNames[4], QStringLiteral("t_savestep"))
0069             SKGTEST(QStringLiteral("OBJBASE:undoredoAttributeNames"), undoredoAttributeNames[5], QStringLiteral("t_refreshviews"))
0070             SKGTEST(QStringLiteral("OBJBASE:undoredoAttributeNames"), undoredoAttributeNames[6], QStringLiteral("i_parent"))
0071 
0072             SKGBEGINTRANSACTION(document1, QStringLiteral("OBJBASE 1"), err)
0073             SKGObjectBase obj1(&document1, QStringLiteral("bank"));
0074             SKGTESTERROR(QStringLiteral("OBJBASE:setAttribute"), obj1.setAttribute(QStringLiteral("t_name"), QStringLiteral("CL")), true)
0075             SKGTESTERROR(QStringLiteral("OBJBASE:save"), obj1.save(), true)
0076 
0077             SKGObjectBase obj2(&document1, QStringLiteral("bank"), obj1.getID());
0078             SKGTESTERROR(QStringLiteral("OBJBASE:load"), obj2.load(), true)
0079             SKGTEST(QStringLiteral("OBJBASE:getAttribute"), obj2.getAttribute(QStringLiteral("t_name")), QStringLiteral("CL"))
0080             SKGTESTERROR(QStringLiteral("OBJBASE:setAttribute"), obj2.setAttribute(QStringLiteral("t_name"), QStringLiteral("CC")), true)
0081             SKGTESTERROR(QStringLiteral("OBJBASE:save"), obj2.save(), true)
0082 
0083             SKGObjectBase obj3(&document1, QStringLiteral("v_bank"), obj2.getID());
0084             SKGTESTERROR(QStringLiteral("OBJBASE:load"), obj3.load(), true)
0085             SKGTEST(QStringLiteral("OBJBASE:getAttribute"), obj3.getAttribute(QStringLiteral("t_name")), QStringLiteral("CC"))
0086             SKGTEST(QStringLiteral("OBJBASE:getTable"), obj3.getTable(), QStringLiteral("v_bank"))
0087             SKGTESTERROR(QStringLiteral("OBJBASE:save"), obj3.save(), true)
0088 
0089             SKGObjectBase obj4(&document1);
0090             SKGTESTBOOL("OBJBASE:Operator =", (obj2 == obj1), true)
0091             SKGTESTBOOL("OBJBASE:Operator =", (obj3 == obj1), true)
0092             SKGTESTBOOL("OBJBASE:Operator =", (obj4 == obj1), false)
0093 
0094             SKGTESTBOOL("OBJBASE:Operator !=", (obj2 != obj1), false)
0095             SKGTESTBOOL("OBJBASE:Operator !=", (obj3 != obj1), false)
0096             SKGTESTBOOL("OBJBASE:Operator !=", (obj4 != obj1), true)
0097 
0098             SKGQStringQStringMap att = obj3.getAttributes();
0099             int nb = obj3.getNbAttributes();
0100             SKGTEST(QStringLiteral("OBJBASE:getNbAttributes"), obj3.getNbAttributes(), att.count())
0101             for (int i = 0; i < nb; ++i) {
0102                 SKGTRACE << i << ":" << obj3.getAttribute(SKGServices::intToString(i)) << SKGENDL;
0103             }
0104             SKGTEST(QStringLiteral("OBJBASE:getAttribute"), obj3.getAttribute(QStringLiteral("2")), QStringLiteral("CC"))
0105             SKGTESTBOOL("OBJBASE:exist", obj3.exist(), true)
0106             SKGTESTERROR(QStringLiteral("OBJBASE:dump"), obj3.dump(), true)
0107 
0108             SKGTEST(QStringLiteral("OBJBASE:getID"), obj3.getID(), 1)
0109             SKGTESTERROR(QStringLiteral("OBJBASE:resetID"), obj3.resetID(), true)
0110             SKGTEST(QStringLiteral("OBJBASE:getID"), obj3.getID(), 0)
0111 
0112             SKGNamedObject tmp1(obj3);
0113             const SKGNamedObject& tmp2 = tmp1;
0114             SKGTEST(QStringLiteral("OBJBASE:getAttribute"), tmp2.getAttribute(QStringLiteral("t_name")), QStringLiteral("CC"))
0115 
0116             // Test error
0117             SKGObjectBase notFound;
0118             SKGTESTERROR(QStringLiteral("OBJBASE:getObject"), document1.getObject(QStringLiteral("v_bank"), QStringLiteral("t_name='NOTFOUND'"), notFound), false)
0119             SKGTESTERROR(QStringLiteral("OBJBASE:getObject"), document1.getObject(QStringLiteral("parameters"), QStringLiteral("'"), notFound), false)
0120             SKGTESTERROR(QStringLiteral("OBJBASE:getObject"), document1.getObject(QStringLiteral("v_bank"), 9999, notFound), false)
0121         }
0122     }
0123     // ============================================================================
0124     // ============================================================================
0125     {
0126         // Test bank document
0127         SKGDocumentBank document1;
0128         SKGTESTERROR(QStringLiteral("document1.initialize()"), document1.initialize(), true)
0129         SKGError err;
0130         SKGTEST(QStringLiteral("BANK:getNbTransaction"), document1.getNbTransaction(), 0) {
0131             // Scope of the transaction
0132             SKGBEGINTRANSACTION(document1, QStringLiteral("BANK_T1"), err)
0133 
0134             // The code here
0135             IFOK(err) {
0136                 SKGTEST(QStringLiteral("BANK:getDepthTransaction"), document1.getDepthTransaction(), 1)
0137 
0138                 // Example; transaction succeeded
0139                 SKGTESTERROR(QStringLiteral("BANK:setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL1")), true)
0140                 SKGTESTERROR(QStringLiteral("BANK:setParameter"), document1.setParameter(QStringLiteral("ATT2"), QStringLiteral("VAL2")), true)
0141                 SKGTESTERROR(QStringLiteral("BANK:setParameter"), document1.setParameter(QStringLiteral("ATT3"), QStringLiteral("VAL2")), true)
0142 
0143                 QStringList oResult;
0144                 SKGTESTERROR(QStringLiteral("BANK:getDistinctValues"), document1.getDistinctValues(QStringLiteral("parameters"), QStringLiteral("t_value"), QStringLiteral("t_value like 'VAL%'"), oResult), true)
0145                 SKGTEST(QStringLiteral("BANK:oResult.size"), oResult.size(), 2)
0146 
0147                 // Test account
0148                 SKGTESTERROR(QStringLiteral("BANK:addOrModifyAccount"), document1.addOrModifyAccount(QStringLiteral("Courant"), QStringLiteral("123"), QStringLiteral("LCL")), true)
0149                 SKGTESTERROR(QStringLiteral("BANK:addOrModifyAccount"), document1.addOrModifyAccount(QStringLiteral("Livret A"), QStringLiteral("456"), QStringLiteral("CREDIT COOP")), true)
0150                 SKGTESTERROR(QStringLiteral("BANK:addOrModifyAccount"), document1.addOrModifyAccount(QStringLiteral("Codevi"), QStringLiteral("789"), QStringLiteral("NEF")), true)
0151                 SKGTESTERROR(QStringLiteral("BANK:addOrModifyAccount"), document1.addOrModifyAccount(QStringLiteral("PEA"), QStringLiteral("ABC"), QStringLiteral("CA")), true)
0152                 SKGTESTERROR(QStringLiteral("BANK:getDistinctValues"), document1.getDistinctValues(QStringLiteral("account"), QStringLiteral("t_name"), oResult), true)
0153                 SKGTEST(QStringLiteral("BANK:oResult.size"), oResult.size(), 4)
0154 
0155                 // Test units
0156                 SKGTESTERROR(QStringLiteral("BANK:addOrModifyUnitValue"), document1.addOrModifyUnitValue(QStringLiteral("E"), now, 1), true)
0157                 SKGTESTERROR(QStringLiteral("BANK:addOrModifyUnitValue"), document1.addOrModifyUnitValue(QStringLiteral("$"), now, 1.6), true)  // Oups, it is an error
0158                 SKGTESTERROR(QStringLiteral("BANK:addOrModifyUnitValue"), document1.addOrModifyUnitValue(QStringLiteral("$"), now, 0.625), true)  // it is better now
0159                 SKGTESTERROR(QStringLiteral("BANK:getDistinctValues"), document1.getDistinctValues(QStringLiteral("unitvalue"), QStringLiteral("rd_unit_id"), oResult), true)
0160                 SKGTEST(QStringLiteral("BANK:oResult.size"), oResult.size(), 2)
0161             }
0162         }  // A commit is done here because the scope is close
0163 
0164         QStringList oResult;
0165         SKGTESTERROR(QStringLiteral("BANK:getDistinctValues"), document1.getDistinctValues(QStringLiteral("unit"), QStringLiteral("t_name"), oResult), true)
0166         SKGTEST(QStringLiteral("BANK:oResult.size"), oResult.size(), 2)
0167         SKGTESTERROR(QStringLiteral("BANK:undoRedoTransaction(BANK_T1, SKGDocument::UNDO)"), document1.undoRedoTransaction(), true)
0168         SKGTESTERROR(QStringLiteral("BANK:getDistinctValues"), document1.getDistinctValues(QStringLiteral("unit"), QStringLiteral("t_name"), oResult), true)
0169         SKGTEST(QStringLiteral("BANK:oResult.size"), oResult.size(), 0)
0170         SKGTESTERROR(QStringLiteral("BANK:undoRedoTransaction(BANK_T1, SKGDocument::REDO)"), document1.undoRedoTransaction(SKGDocument::REDO), true)
0171         SKGTESTERROR(QStringLiteral("BANK:getDistinctValues"), document1.getDistinctValues(QStringLiteral("unit"), QStringLiteral("t_name"), oResult), true)
0172         SKGTEST(QStringLiteral("BANK:oResult.size"), oResult.size(), 2)
0173 
0174         SKGTESTERROR(QStringLiteral("BANK:err"), err, true)
0175     }
0176 
0177     // End test
0178     SKGENDTEST()
0179 }