diff --git a/IPXACTmodels/Component/validators/FieldValidator.cpp b/IPXACTmodels/Component/validators/FieldValidator.cpp index d2b8209d2..ff2d20afe 100644 --- a/IPXACTmodels/Component/validators/FieldValidator.cpp +++ b/IPXACTmodels/Component/validators/FieldValidator.cpp @@ -282,17 +282,22 @@ bool FieldValidator::hasValidReserved(QSharedPointer field) const //----------------------------------------------------------------------------- bool FieldValidator::hasValidBitWidth(QSharedPointer field) const { - QString solvedValue = expressionParser_->parseExpression(field->getBitWidth()); + if (field->getFieldDefinitionRef().isEmpty()) + { + QString solvedValue = expressionParser_->parseExpression(field->getBitWidth()); - bool changeOk = true; - quint64 intValue = solvedValue.toULongLong(&changeOk); + bool changeOk = true; + quint64 intValue = solvedValue.toULongLong(&changeOk); - if (changeOk && intValue > 0) - { - return true; + if (changeOk && intValue > 0) + { + return true; + } + + return false; } - return false; + return true; } //----------------------------------------------------------------------------- diff --git a/IPXACTmodels/Component/validators/RegisterFileValidator.cpp b/IPXACTmodels/Component/validators/RegisterFileValidator.cpp index fb8563307..f35dac60b 100644 --- a/IPXACTmodels/Component/validators/RegisterFileValidator.cpp +++ b/IPXACTmodels/Component/validators/RegisterFileValidator.cpp @@ -245,7 +245,7 @@ void RegisterFileValidator::findErrorsInRegisterData(QVector& errors, void RegisterFileValidator::findErrorsInAccessPolicies(QStringList& errors, QSharedPointer selectedRegisterFile, QString const& context) const { - QString registerFileContext = QStringLiteral("register ") + selectedRegisterFile->name() + QStringLiteral(" within ") + context; + QString registerFileContext = QStringLiteral("register file ") + selectedRegisterFile->name() + QStringLiteral(" within ") + context; RegisterBaseValidator::findErrorsInAccessPolicies(errors, selectedRegisterFile, registerFileContext); } diff --git a/editors/ComponentEditor/memoryMaps/memorymapsmodel.cpp b/editors/ComponentEditor/memoryMaps/memorymapsmodel.cpp index 94749b577..4027cced2 100644 --- a/editors/ComponentEditor/memoryMaps/memorymapsmodel.cpp +++ b/editors/ComponentEditor/memoryMaps/memorymapsmodel.cpp @@ -237,7 +237,7 @@ QVariant MemoryMapsModel::data(QModelIndex const& index, int role) const { return KactusColors::MANDATORY_FIELD; } - else if (!index.parent().isValid() && index.column() == MemoryMapsColumns::REMAPSTATE_COLUMN) + else if (index.column() == MemoryMapsColumns::REMAPSTATE_COLUMN) { return KactusColors::DISABLED_FIELD; } diff --git a/tests/IPXACTmodels/Component/tst_AccessPolicyReader.cpp b/tests/IPXACTmodels/Component/tst_AccessPolicyReader.cpp index 845353e48..e7d508e32 100644 --- a/tests/IPXACTmodels/Component/tst_AccessPolicyReader.cpp +++ b/tests/IPXACTmodels/Component/tst_AccessPolicyReader.cpp @@ -71,9 +71,9 @@ void tst_AccessPolicyReader::readModeRefs() QCOMPARE(accessPolicy->getModeReferences()->size(), 2); QCOMPARE(accessPolicy->getModeReferences()->first()->getReference(), QString("normal")); - QCOMPARE(accessPolicy->getModeReferences()->first()->getPriority(), QString("0")); + QCOMPARE(accessPolicy->getModeReferences()->first()->getPriority(), 0); QCOMPARE(accessPolicy->getModeReferences()->at(1)->getReference(), QString("test")); - QCOMPARE(accessPolicy->getModeReferences()->at(1)->getPriority(), QString("1")); + QCOMPARE(accessPolicy->getModeReferences()->at(1)->getPriority(), 1); } //----------------------------------------------------------------------------- diff --git a/tests/IPXACTmodels/Component/tst_AccessPolicyWriter.cpp b/tests/IPXACTmodels/Component/tst_AccessPolicyWriter.cpp index 1218c208b..74e50cb02 100644 --- a/tests/IPXACTmodels/Component/tst_AccessPolicyWriter.cpp +++ b/tests/IPXACTmodels/Component/tst_AccessPolicyWriter.cpp @@ -67,11 +67,11 @@ void tst_AccessPolicyWriter::cleanup() void tst_AccessPolicyWriter::writeModeRefs() { QSharedPointer modeRef1(new ModeReference()); - modeRef1->setPriority("0"); + modeRef1->setPriority(0); modeRef1->setReference("testMode1"); QSharedPointer modeRef2(new ModeReference()); - modeRef2->setPriority("1"); + modeRef2->setPriority(1); modeRef2->setReference("testMode2"); accessPolicy_->getModeReferences()->append(modeRef1); diff --git a/tests/IPXACTmodels/Component/tst_AddressBlockValidator.cpp b/tests/IPXACTmodels/Component/tst_AddressBlockValidator.cpp index 6252631b7..6c1f78558 100644 --- a/tests/IPXACTmodels/Component/tst_AddressBlockValidator.cpp +++ b/tests/IPXACTmodels/Component/tst_AddressBlockValidator.cpp @@ -24,6 +24,8 @@ #include #include #include +#include +#include #include #include @@ -1067,13 +1069,22 @@ void tst_AddressBlockValidator::testAccessPolicies2022() testBlock->setWidth("10"); QSharedPointer modeRef1(new ModeReference()); - modeRef1->setPriority("0"); + modeRef1->setPriority(0); modeRef1->setReference("ref"); QSharedPointer modeRef2(new ModeReference()); - modeRef2->setPriority("0"); + modeRef2->setPriority(0); modeRef2->setReference("ref1"); + QSharedPointer mode1(new Mode("ref")); + QSharedPointer mode2(new Mode("ref1")); + + QSharedPointer dummyComponent(new Component(VLNV("test", "vendor", "library", "component", "1.0"), Document::Revision::Std22)); + dummyComponent->getModes()->append(mode1); + dummyComponent->getModes()->append(mode2); + + validator->componentChange(dummyComponent); + QSharedPointer accessPolicy1(new AccessPolicy()); QSharedPointer accessPolicy2(new AccessPolicy()); accessPolicy1->getModeReferences()->append(modeRef1); @@ -1088,6 +1099,7 @@ void tst_AddressBlockValidator::testAccessPolicies2022() << "One or more mode references in access policies of address block champloo within test contain duplicate priority values." << "One or more mode references in access policies of address block champloo within test contain duplicate mode reference values." << "In address block testBlock in test, multiple access policies are not allowed if one of them lacks a mode reference." + << "Mode reference in access policies of address block champloo within test has invalid or empty reference value 'ref2'." ); // Test duplicate mode reference priority. @@ -1098,18 +1110,27 @@ void tst_AddressBlockValidator::testAccessPolicies2022() // Test duplicate reference. errors.clear(); - modeRef2->setPriority("1"); + modeRef2->setPriority(1); modeRef2->setReference("ref"); validator->findErrorsIn(errors, testBlock, "8", "test"); QVERIFY(errors.contains(possibleErrors.at(1))); QVERIFY(validator->hasValidAccessPolicies(testBlock) == false); - // Test valid. + // Test invalid (not found in component modes). errors.clear(); modeRef2->setReference("ref2"); + validator->findErrorsIn(errors, testBlock, "8", "test"); + QVERIFY(errors.contains(possibleErrors.back())); + + QVERIFY(validator->hasValidAccessPolicies(testBlock) == false); + + // Finally test valid. + errors.clear(); + modeRef2->setReference("ref1"); + validator->findErrorsIn(errors, testBlock, "8", "test"); QVERIFY(std::none_of(possibleErrors.cbegin(), possibleErrors.cend(), [&errors](QString const& str) { @@ -1117,6 +1138,7 @@ void tst_AddressBlockValidator::testAccessPolicies2022() })); QVERIFY(validator->hasValidAccessPolicies(testBlock)); + } //----------------------------------------------------------------------------- diff --git a/tests/IPXACTmodels/Component/tst_AddressBlockWriter.cpp b/tests/IPXACTmodels/Component/tst_AddressBlockWriter.cpp index e5ac9a811..78ed95c71 100644 --- a/tests/IPXACTmodels/Component/tst_AddressBlockWriter.cpp +++ b/tests/IPXACTmodels/Component/tst_AddressBlockWriter.cpp @@ -433,10 +433,10 @@ void tst_AddressBlockWriter::writeAccessPolicies2022() QSharedPointer modeRef1(new ModeReference()); QSharedPointer modeRef2(new ModeReference()); - modeRef1->setPriority("1"); + modeRef1->setPriority(1); modeRef1->setReference("testMode"); - modeRef2->setPriority("2"); + modeRef2->setPriority(2); modeRef2->setReference("testMode2"); testAccessPolicy1->getModeReferences()->append(modeRef1); diff --git a/tests/IPXACTmodels/Component/tst_AddressSpaceValidator.cpp b/tests/IPXACTmodels/Component/tst_AddressSpaceValidator.cpp index d92d44f96..aa3487c12 100755 --- a/tests/IPXACTmodels/Component/tst_AddressSpaceValidator.cpp +++ b/tests/IPXACTmodels/Component/tst_AddressSpaceValidator.cpp @@ -75,7 +75,7 @@ private slots: bool errorIsNotFoundInErrorList(QString const& expectedError, QVector errorList); - QSharedPointer createValidator(); + QSharedPointer createValidator(Document::Revision docRevision); }; //----------------------------------------------------------------------------- @@ -96,7 +96,7 @@ void tst_AddressSpaceValidator::testHasValidName() QSharedPointer testSpace (new AddressSpace(name)); - QSharedPointer validator = createValidator(); + QSharedPointer validator = createValidator(Document::Revision::Std14); QCOMPARE(validator->hasValidName(testSpace->name()), isValid); @@ -139,7 +139,7 @@ void tst_AddressSpaceValidator::testHasValidIsPresent() QSharedPointer testSpace (new AddressSpace("TestAddressBlock")); testSpace->setIsPresent(isPresent); - QSharedPointer validator = createValidator(); + QSharedPointer validator = createValidator(Document::Revision::Std14); QCOMPARE(validator->hasValidIsPresent(testSpace->getIsPresent()), isValid); @@ -184,7 +184,7 @@ void tst_AddressSpaceValidator::testHasValidRange() QSharedPointer testSpace (new AddressSpace("testSpace", range, "0")); - QSharedPointer validator = createValidator(); + QSharedPointer validator = createValidator(Document::Revision::Std14); QCOMPARE(validator->hasValidRange(testSpace), isValid); @@ -232,7 +232,7 @@ void tst_AddressSpaceValidator::testHasValidWidth() QSharedPointer testSpace (new AddressSpace("testSpace", "10", width)); - QSharedPointer validator = createValidator(); + QSharedPointer validator = createValidator(Document::Revision::Std14); QCOMPARE(validator->hasValidWidth(testSpace), isValid); @@ -283,7 +283,7 @@ void tst_AddressSpaceValidator::testSegmentHasValidName() QSharedPointer testSpace (new AddressSpace("testSpace", "100")); testSpace->getSegments()->append(testSegment); - QSharedPointer validator = createValidator(); + QSharedPointer validator = createValidator(Document::Revision::Std14); QCOMPARE(validator->hasValidSegments(testSpace), isValid); @@ -328,7 +328,7 @@ void tst_AddressSpaceValidator::testSegmentsHaveUniqueNames() testSpace->getSegments()->append(segmentOne); testSpace->getSegments()->append(segmentTwo); - QSharedPointer validator = createValidator(); + QSharedPointer validator = createValidator(Document::Revision::Std14); QCOMPARE(validator->hasValidSegments(testSpace), false); @@ -360,7 +360,7 @@ void tst_AddressSpaceValidator::testSegmentHasValidIsPresent() QSharedPointer testSpace (new AddressSpace("TestAddressBlock", "100")); testSpace->getSegments()->append(testSegment); - QSharedPointer validator = createValidator(); + QSharedPointer validator = createValidator(Document::Revision::Std14); QCOMPARE(validator->hasValidSegments(testSpace), isValid); if (!isValid) @@ -412,7 +412,7 @@ void tst_AddressSpaceValidator::testSegmentHasValidAddressOffset() testSpace->setRange("50000000000"); } - QSharedPointer validator = createValidator(); + QSharedPointer validator = createValidator(Document::Revision::Std14); QCOMPARE(validator->hasValidSegments(testSpace), isValid); if (!isValid) @@ -465,7 +465,7 @@ void tst_AddressSpaceValidator::testSegmentHasValidRange() testSpace->setRange("50000000000"); } - QSharedPointer validator = createValidator(); + QSharedPointer validator = createValidator(Document::Revision::Std14); QCOMPARE(validator->hasValidSegments(testSpace), isValid); if (!isValid) @@ -515,7 +515,7 @@ void tst_AddressSpaceValidator::testSegmentIsContainedWithinAddressSpace() QSharedPointer testSpace (new AddressSpace("Wanpan", spaceRange)); testSpace->getSegments()->append(testSegment); - QSharedPointer validator = createValidator(); + QSharedPointer validator = createValidator(Document::Revision::Std14); QCOMPARE(validator->hasValidSegments(testSpace), isValid); if (!isValid) @@ -576,7 +576,7 @@ void tst_AddressSpaceValidator::testOverlappingSegments() testSpace->getSegments()->append(segmentOne); testSpace->getSegments()->append(segmentTwo); - QSharedPointer validator = createValidator(); + QSharedPointer validator = createValidator(Document::Revision::Std14); QCOMPARE(validator->hasValidSegments(testSpace), isValid); if (!isValid) @@ -643,7 +643,7 @@ void tst_AddressSpaceValidator::testHasValidAddressUnitBits() QSharedPointer testSpace (new AddressSpace("TestAddressBlock")); testSpace->setAddressUnitBits(addressUnitBits); - QSharedPointer validator = createValidator(); + QSharedPointer validator = createValidator(Document::Revision::Std14); QCOMPARE(validator->hasValidAddressUnitBits(testSpace), isValid); if (!isValid) @@ -688,7 +688,7 @@ void tst_AddressSpaceValidator::testHasValidLocalMemoryMap() QSharedPointer testSpace (new AddressSpace("testSpace")); testSpace->setLocalMemoryMap(testLocalMap); - QSharedPointer validator = createValidator(); + QSharedPointer validator = createValidator(Document::Revision::Std14); QCOMPARE(validator->hasValidLocalMemoryMap(testSpace), false); QVector foundErrors; @@ -719,7 +719,7 @@ void tst_AddressSpaceValidator::testHasValidParameters() QSharedPointer testSpace (new AddressSpace("testSpace")); testSpace->getParameters()->append(testParameter); - QSharedPointer validator = createValidator(); + QSharedPointer validator = createValidator(Document::Revision::Std14); QCOMPARE(validator->hasValidParameters(testSpace), false); QVector errorsFound; @@ -774,21 +774,21 @@ bool tst_AddressSpaceValidator::errorIsNotFoundInErrorList(QString const& expect //----------------------------------------------------------------------------- // Function: tst_AddressSpaceValidator::createValidator() //----------------------------------------------------------------------------- -QSharedPointer tst_AddressSpaceValidator::createValidator() +QSharedPointer tst_AddressSpaceValidator::createValidator(Document::Revision docRevision) { QSharedPointer parser(new SystemVerilogExpressionParser()); QSharedPointer parameterValidator( - new ParameterValidator(parser, QSharedPointer > >())); + new ParameterValidator(parser, QSharedPointer > >(), docRevision)); QSharedPointer enumeratedValueValidator(new EnumeratedValueValidator(parser)); QSharedPointer fieldValidator( new FieldValidator(parser, enumeratedValueValidator, parameterValidator)); QSharedPointer registerValidator( new RegisterValidator(parser, fieldValidator, parameterValidator)); QSharedPointer registerFileValidator(new RegisterFileValidator(parser, - registerValidator, parameterValidator)); + registerValidator, parameterValidator, docRevision)); QSharedPointer addressBlockValidator( - new AddressBlockValidator(parser, registerValidator, registerFileValidator, parameterValidator)); - QSharedPointer subspaceValidator(new SubspaceMapValidator(parser, parameterValidator)); + new AddressBlockValidator(parser, registerValidator, registerFileValidator, parameterValidator, docRevision)); + QSharedPointer subspaceValidator(new SubspaceMapValidator(parser, parameterValidator, docRevision)); QSharedPointer localMemoryMapValidator( new MemoryMapBaseValidator(parser, addressBlockValidator, subspaceValidator)); diff --git a/tests/IPXACTmodels/Component/tst_FieldAccessPolicyReader.cpp b/tests/IPXACTmodels/Component/tst_FieldAccessPolicyReader.cpp index c9e7797d8..7c7152217 100644 --- a/tests/IPXACTmodels/Component/tst_FieldAccessPolicyReader.cpp +++ b/tests/IPXACTmodels/Component/tst_FieldAccessPolicyReader.cpp @@ -80,9 +80,9 @@ void tst_FieldAccessPolicyReader::readModeRefs() QCOMPARE(fieldAccessPolicy->getModeReferences()->size(), 2); QCOMPARE(fieldAccessPolicy->getModeReferences()->first()->getReference(), QString("normal")); - QCOMPARE(fieldAccessPolicy->getModeReferences()->first()->getPriority(), QString("0")); + QCOMPARE(fieldAccessPolicy->getModeReferences()->first()->getPriority(), 0); QCOMPARE(fieldAccessPolicy->getModeReferences()->at(1)->getReference(), QString("test")); - QCOMPARE(fieldAccessPolicy->getModeReferences()->at(1)->getPriority(), QString("1")); + QCOMPARE(fieldAccessPolicy->getModeReferences()->at(1)->getPriority(), 1); } //----------------------------------------------------------------------------- diff --git a/tests/IPXACTmodels/Component/tst_FieldAccessPolicyValidator.cpp b/tests/IPXACTmodels/Component/tst_FieldAccessPolicyValidator.cpp index 22a985341..970e2574a 100644 --- a/tests/IPXACTmodels/Component/tst_FieldAccessPolicyValidator.cpp +++ b/tests/IPXACTmodels/Component/tst_FieldAccessPolicyValidator.cpp @@ -11,6 +11,7 @@ #include #include +#include #include @@ -90,17 +91,17 @@ void tst_FieldAccessPolicyValidator::testDefinitionRefIsValid() QStringList errorList; - validator_.findErrorsIn(errorList, fieldAccessPolicy_, "test"); + validator_.findErrorsIn(errorList, fieldAccessPolicy_, "test", QSharedPointer > >()); QCOMPARE(errorList.size(), 1); // No typedefinitions. - QVERIFY(validator_.validate(fieldAccessPolicy_) == false); + QVERIFY(validator_.validate(fieldAccessPolicy_, QSharedPointer > >()) == false); errorList.clear(); fieldAccessPolicy_->setFieldAccessPolicyTypeDefinitionRef("testTypeDefinitions"); - validator_.findErrorsIn(errorList, fieldAccessPolicy_, "test"); + validator_.findErrorsIn(errorList, fieldAccessPolicy_, "test", QSharedPointer > >()); QCOMPARE(errorList.size(), 0); - QVERIFY(validator_.validate(fieldAccessPolicy_)); + QVERIFY(validator_.validate(fieldAccessPolicy_, QSharedPointer > >())); } //----------------------------------------------------------------------------- @@ -124,7 +125,7 @@ void tst_FieldAccessPolicyValidator::testAccessIsValid() if (!isValid) { QVector errorList; - validator_.findErrorsIn(errorList, fieldAccessPolicy_, "test"); + validator_.findErrorsIn(errorList, fieldAccessPolicy_, "test", QSharedPointer > >()); if (fieldAccessPolicy_->getAccess() == AccessTypes::READ_ONLY && fieldAccessPolicy_->getModifiedWrite() != General::MODIFIED_WRITE_COUNT) @@ -206,7 +207,7 @@ void tst_FieldAccessPolicyValidator::testWriteValueConstraintIsValid() if (!isValid) { QVector foundErrors; - validator_.findErrorsIn(foundErrors, fieldAccessPolicy_, "test"); + validator_.findErrorsIn(foundErrors, fieldAccessPolicy_, "test", QSharedPointer > >()); if (testConstraint->getType() == WriteValueConstraint::TYPE_COUNT) { @@ -297,7 +298,7 @@ void tst_FieldAccessPolicyValidator::testReadResponseIsValid() { QStringList errors; - validator_.findErrorsIn(errors, fieldAccessPolicy_, "test"); + validator_.findErrorsIn(errors, fieldAccessPolicy_, "test", QSharedPointer > >()); QString expectedError = QObject::tr("Invalid read response value for field access policy within test"); @@ -345,7 +346,7 @@ void tst_FieldAccessPolicyValidator::testBroadcastsAreValid() QString expectedErrorField("Field reference in test must contain a reference to a field."); - validator_.findErrorsIn(errors, fieldAccessPolicy_, "test"); + validator_.findErrorsIn(errors, fieldAccessPolicy_, "test", QSharedPointer > >()); QCOMPARE(errors.size(), 2); QVERIFY(errorIsNotFoundInErrorList(expectedErrorChoice, errors) == false); QVERIFY(errorIsNotFoundInErrorList(expectedErrorField, errors) == false); @@ -355,7 +356,7 @@ void tst_FieldAccessPolicyValidator::testBroadcastsAreValid() fieldReference->setReference(fieldRef, FieldReference::FIELD); fieldReference->clearReference(FieldReference::ADDRESS_SPACE); - validator_.findErrorsIn(errors, fieldAccessPolicy_, "test"); + validator_.findErrorsIn(errors, fieldAccessPolicy_, "test", QSharedPointer > >()); QCOMPARE(errors.size(), 0); QVERIFY(validator_.hasValidBroadcasts(fieldAccessPolicy_)); } @@ -377,21 +378,25 @@ void tst_FieldAccessPolicyValidator::testAccessRestrictionsAreValid() fieldAccessPolicy_->getAccessRestrictions()->append(accessRestriction); fieldAccessPolicy_->getAccessRestrictions()->append(accessRestriction2); - // No modes -> error + QSharedPointer > > availableModes(new QList >()); + availableModes->append(QSharedPointer(new Mode("testMode"))); + availableModes->append(QSharedPointer(new Mode("testMode2"))); + + // No mode references set -> error QStringList errors; - validator_.findErrorsIn(errors, fieldAccessPolicy_, "test"); + validator_.findErrorsIn(errors, fieldAccessPolicy_, "test", availableModes); QCOMPARE(errors.size(), 1); errors.clear(); // Duplicate modes in any of the access restrictions -> error modeRef->setReference("testMode"); - modeRef->setPriority("0"); + modeRef->setPriority(0); modeRef2->setReference("testMode"); - modeRef2->setPriority("1"); + modeRef2->setPriority(1); - validator_.findErrorsIn(errors, fieldAccessPolicy_, "test"); + validator_.findErrorsIn(errors, fieldAccessPolicy_, "test", availableModes); QCOMPARE(errors.size(), 1); errors.clear(); @@ -404,14 +409,14 @@ void tst_FieldAccessPolicyValidator::testAccessRestrictionsAreValid() accessRestriction->writeAccessMask_ = QString("asdasd"); // Not valid accessRestriction2->writeAccessMask_ = QString("2'b11"); - validator_.findErrorsIn(errors, fieldAccessPolicy_, "test"); + validator_.findErrorsIn(errors, fieldAccessPolicy_, "test", availableModes); QCOMPARE(errors.size(), 2); errors.clear(); accessRestriction2->readAccessMask_ = QString("'h2"); accessRestriction->writeAccessMask_ = QString("'b1111"); - validator_.findErrorsIn(errors, fieldAccessPolicy_, "test"); + validator_.findErrorsIn(errors, fieldAccessPolicy_, "test", availableModes); QCOMPARE(errors.size(), 0); } @@ -430,7 +435,7 @@ void tst_FieldAccessPolicyValidator::testReserved() if (!isValid) { QStringList foundErrors; - validator_.findErrorsIn(foundErrors, fieldAccessPolicy_, "test"); + validator_.findErrorsIn(foundErrors, fieldAccessPolicy_, "test", QSharedPointer > >()); QString expectedError = QObject::tr("Invalid reserved set for field access policy within %1").arg("test"); if (errorIsNotFoundInErrorList(expectedError, foundErrors)) diff --git a/tests/IPXACTmodels/Component/tst_FieldAccessPolicyWriter.cpp b/tests/IPXACTmodels/Component/tst_FieldAccessPolicyWriter.cpp index 6f19338ee..2d7a53ce2 100644 --- a/tests/IPXACTmodels/Component/tst_FieldAccessPolicyWriter.cpp +++ b/tests/IPXACTmodels/Component/tst_FieldAccessPolicyWriter.cpp @@ -76,11 +76,11 @@ void tst_FieldAccessPolicyWriter::cleanup() void tst_FieldAccessPolicyWriter::writeModeRefs() { QSharedPointer modeRef1(new ModeReference()); - modeRef1->setPriority("0"); + modeRef1->setPriority(0); modeRef1->setReference("testMode1"); QSharedPointer modeRef2(new ModeReference()); - modeRef2->setPriority("1"); + modeRef2->setPriority(1); modeRef2->setReference("testMode2"); fieldAccessPolicy_->getModeReferences()->append(modeRef1); @@ -328,7 +328,7 @@ void tst_FieldAccessPolicyWriter::writeAccessRestrictions() new FieldAccessPolicy::AccessRestriction()); QSharedPointer testModeRef(new ModeReference()); - testModeRef->setPriority("0"); + testModeRef->setPriority(0); testModeRef->setReference("modereference"); accessRestriction->modeRefs_->append(testModeRef); diff --git a/tests/IPXACTmodels/Component/tst_FieldReferenceValidator.cpp b/tests/IPXACTmodels/Component/tst_FieldReferenceValidator.cpp index 6b21b1111..0d1453fbe 100644 --- a/tests/IPXACTmodels/Component/tst_FieldReferenceValidator.cpp +++ b/tests/IPXACTmodels/Component/tst_FieldReferenceValidator.cpp @@ -10,7 +10,7 @@ //----------------------------------------------------------------------------- #include -#include +#include #include diff --git a/tests/IPXACTmodels/Component/tst_FieldValidator.cpp b/tests/IPXACTmodels/Component/tst_FieldValidator.cpp index ae75d3ba2..90ba04174 100644 --- a/tests/IPXACTmodels/Component/tst_FieldValidator.cpp +++ b/tests/IPXACTmodels/Component/tst_FieldValidator.cpp @@ -12,12 +12,13 @@ #include #include #include -#include +#include #include #include #include #include #include +#include #include #include @@ -223,7 +224,7 @@ void tst_FieldValidator::testMemoryArrayIsValid() QList foundErrors; validator.findErrorsIn(foundErrors, testField, "test"); - QString expectedError = QObject::tr("No dimensions defined for memory array in test"); + QString expectedError = QObject::tr("No dimensions defined for memory array in field testField within test"); if (errorIsNotFoundInErrorList(expectedError, foundErrors)) { QFAIL("No error message found"); @@ -1005,10 +1006,10 @@ void tst_FieldValidator::testAccessPolicyModeRefs() testField->setBitWidth("8"); QSharedPointer modeRef1(new ModeReference()); - modeRef1->setPriority("0"); + modeRef1->setPriority(0); modeRef1->setReference("ref"); QSharedPointer modeRef2(new ModeReference()); - modeRef2->setPriority("0"); + modeRef2->setPriority(0); modeRef2->setReference("ref1"); QSharedPointer testFieldAccessPolicy(new FieldAccessPolicy()); @@ -1025,6 +1026,14 @@ void tst_FieldValidator::testAccessPolicyModeRefs() new ParameterValidator(parser, QSharedPointer > >(), Document::Revision::Std22)); FieldValidator validator(parser, enumeratedValueValidator, parameterValidator, Document::Revision::Std22); + QSharedPointer dummyComponent(new Component(VLNV(VLNV::COMPONENT, "vendor", "library", "name", "1.0"), Document::Revision::Std22)); + QSharedPointer mode1(new Mode("ref")); + QSharedPointer mode2(new Mode("ref1")); + dummyComponent->getModes()->append(mode1); + dummyComponent->getModes()->append(mode2); + + validator.componentChange(dummyComponent); + QStringList errors; // Test duplicate priority. @@ -1036,7 +1045,7 @@ void tst_FieldValidator::testAccessPolicyModeRefs() // Test duplicate reference. errors.clear(); - modeRef2->setPriority("1"); + modeRef2->setPriority(1); modeRef2->setReference("ref"); validator.findErrorsIn(errors, testField, "test"); @@ -1047,7 +1056,7 @@ void tst_FieldValidator::testAccessPolicyModeRefs() // Test valid. errors.clear(); - modeRef2->setReference("ref2"); + modeRef2->setReference("ref1"); validator.findErrorsIn(errors, testField, "test"); QCOMPARE(errors.size(), 0); diff --git a/tests/IPXACTmodels/Component/tst_MemoryMapReader.cpp b/tests/IPXACTmodels/Component/tst_MemoryMapReader.cpp index d0ba26572..45874dc15 100644 --- a/tests/IPXACTmodels/Component/tst_MemoryMapReader.cpp +++ b/tests/IPXACTmodels/Component/tst_MemoryMapReader.cpp @@ -406,7 +406,7 @@ void tst_MemoryMapReader::readMemoryRemap2022() QCOMPARE(testMemoryRemap->description(), QString("describedRemap")); QCOMPARE(testMemoryRemap->getModeReferences()->size(), 2); QCOMPARE(testMemoryRemap->getModeReferences()->first()->getReference(), QString("testMode")); - QCOMPARE(testMemoryRemap->getModeReferences()->back()->getPriority(), QString("1")); + QCOMPARE(testMemoryRemap->getModeReferences()->back()->getPriority(), 1); QCOMPARE(testMemoryRemap->getMemoryRemapDefinitionReference(), QString("testRemapDef")); QCOMPARE(testMemoryRemap->getTypeDefinitionsReference(), QString("testDefinitions")); diff --git a/tests/IPXACTmodels/Component/tst_MemoryMapValidator.cpp b/tests/IPXACTmodels/Component/tst_MemoryMapValidator.cpp index 1d4c4ef57..170f07dd6 100755 --- a/tests/IPXACTmodels/Component/tst_MemoryMapValidator.cpp +++ b/tests/IPXACTmodels/Component/tst_MemoryMapValidator.cpp @@ -473,11 +473,11 @@ void tst_MemoryMapValidator::testMemoryRemapsHaveUniqueRemapStates_data() void tst_MemoryMapValidator::testHasValidMemoryRemapModeRefs2022() { QFETCH(QString, modeRef1); - QFETCH(QString, priority1); + QFETCH(int, priority1); QFETCH(QString, modeRef2); - QFETCH(QString, priority2); + QFETCH(int, priority2); QFETCH(QString, modeRef3); - QFETCH(QString, priority3); + QFETCH(int, priority3); QFETCH(QString, invalidRemapName); QFETCH(bool, refsAreValid); QFETCH(bool, prioritiesAreValid); @@ -542,14 +542,7 @@ void tst_MemoryMapValidator::testHasValidMemoryRemapModeRefs2022() } else if (!prioritiesAreValid) { - if ((*invalidRemapIt)->getModeReferences()->first()->getPriority().isEmpty()) - { - expectedError = QObject::tr("Empty mode reference priority set for memory remap %1 in memory map testMap").arg(invalidRemapName); - } - else - { - expectedError = QObject::tr("Duplicate mode reference priority set for memory remap %1 in memory map testMap").arg(invalidRemapName); - } + expectedError = QObject::tr("Duplicate mode reference priority set for memory remap %1 in memory map testMap").arg(invalidRemapName); } if (errorIsNotFoundInErrorList(expectedError, foundErrors)) @@ -565,21 +558,20 @@ void tst_MemoryMapValidator::testHasValidMemoryRemapModeRefs2022() void tst_MemoryMapValidator::testHasValidMemoryRemapModeRefs2022_data() { QTest::addColumn("modeRef1"); - QTest::addColumn("priority1"); + QTest::addColumn("priority1"); QTest::addColumn("modeRef2"); - QTest::addColumn("priority2"); + QTest::addColumn("priority2"); QTest::addColumn("modeRef3"); - QTest::addColumn("priority3"); + QTest::addColumn("priority3"); QTest::addColumn("invalidRemapName"); QTest::addColumn("refsAreValid"); QTest::addColumn("prioritiesAreValid"); - QTest::addRow("Missing mode ref is invalid") << "" << "" << "testmode2" << "2" << "testmode3" << "3" << "testRemap1" << false << true; - QTest::addRow("Duplicate mode ref is invalid") << "testmode" << "0" << "testmode" << "1" << "testmode3" << "3" << "testRemap2" << false << true; - QTest::addRow("Duplicate mode ref priority in same remap is invalid") << "testmode1" << "0" << "testmode2" << "1" << "testmode3" << "1" << "testRemap2" << true << false; - QTest::addRow("Duplicate mode ref priority in different remaps is valid") << "testmode1" << "1" << "testmode2" << "1" << "testmode3" << "3" << "" << true << true; - QTest::addRow("Unique mode refs is valid") << "testmode1" << "0" << "testmode2" << "1" << "testmode3" << "2" << "" << true << true; - QTest::addRow("Empty priority is invalid") << "testmode1" << "" << "testmode2" << "1" << "testmode3" << "2" << "testRemap1" << true << false; + QTest::addRow("Missing mode ref is invalid") << "" << 0 << "testmode2" << 2 << "testmode3" << 3 << "testRemap1" << false << true; + QTest::addRow("Duplicate mode ref is invalid") << "testmode" << 0 << "testmode" << 1 << "testmode3" << 3 << "testRemap2" << false << true; + QTest::addRow("Duplicate mode ref priority in same remap is valid") << "testmode1" << 0 << "testmode2" << 1 << "testmode3" << 1 << "testRemap2" << true << true; + QTest::addRow("Duplicate mode ref priority in different remaps is valid") << "testmode1" << 1 << "testmode2" << 1 << "testmode3" << 3 << "" << true << true; + QTest::addRow("Unique mode refs is valid") << "testmode1" << 0 << "testmode2" << 1 << "testmode3" << 2 << "" << true << true; } //----------------------------------------------------------------------------- diff --git a/tests/IPXACTmodels/Component/tst_MemoryMapWriter.cpp b/tests/IPXACTmodels/Component/tst_MemoryMapWriter.cpp index facce9d26..39fd5f368 100644 --- a/tests/IPXACTmodels/Component/tst_MemoryMapWriter.cpp +++ b/tests/IPXACTmodels/Component/tst_MemoryMapWriter.cpp @@ -349,11 +349,11 @@ void tst_MemoryMapWriter::writeMemoryRemap2022() testMemoryRemap->setTypeDefinitionsReference("testTypeDefs"); QSharedPointer modeRef1(new ModeReference()); - modeRef1->setPriority("0"); + modeRef1->setPriority(0); modeRef1->setReference("testMode"); QSharedPointer modeRef2(new ModeReference()); - modeRef2->setPriority("1"); + modeRef2->setPriority(1); modeRef2->setReference("testMode2"); testMemoryRemap->getModeReferences()->append(modeRef1); diff --git a/tests/IPXACTmodels/Component/tst_RegisterFileValidator.cpp b/tests/IPXACTmodels/Component/tst_RegisterFileValidator.cpp index f3882e50e..74ba4fdbd 100644 --- a/tests/IPXACTmodels/Component/tst_RegisterFileValidator.cpp +++ b/tests/IPXACTmodels/Component/tst_RegisterFileValidator.cpp @@ -21,6 +21,8 @@ #include #include #include +#include +#include #include #include @@ -439,11 +441,11 @@ void tst_RegisterFileValidator::testAccessPoliciesAreValid() QSharedPointer testRegisterFile(new RegisterFile("test", "8", "8")); QSharedPointer modeRef1(new ModeReference()); - modeRef1->setPriority("0"); + modeRef1->setPriority(0); modeRef1->setReference("ref"); QSharedPointer modeRef2(new ModeReference()); - modeRef2->setPriority("0"); + modeRef2->setPriority(0); modeRef2->setReference("ref1"); QSharedPointer accessPolicy1(new AccessPolicy()); @@ -463,12 +465,20 @@ void tst_RegisterFileValidator::testAccessPoliciesAreValid() RegisterFileValidator validator(parser, registerValidator, parameterValidator, Document::Revision::Std22); + QSharedPointer dummyComponent(new Component(VLNV(VLNV::COMPONENT, "vendor", "libray", "name", "1.0"), Document::Revision::Std22)); + QSharedPointer mode1(new Mode("ref")); + QSharedPointer mode2(new Mode("ref1")); + dummyComponent->getModes()->append(mode1); + dummyComponent->getModes()->append(mode2); + + validator.componentChange(dummyComponent); + QStringList errors; QStringList possibleErrors(QStringList() - << "One or more mode references in access policies of register test within test contain duplicate priority values." - << "One or more mode references in access policies of register test within test contain duplicate mode reference values." - << "In register test in test, multiple access policies are not allowed if one of them lacks a mode reference." + << "One or more mode references in access policies of register file test within test contain duplicate priority values." + << "One or more mode references in access policies of register file test within test contain duplicate mode reference values." + << "In register file test in test, multiple access policies are not allowed if one of them lacks a mode reference." ); // Test duplicate mode reference priority. @@ -479,18 +489,31 @@ void tst_RegisterFileValidator::testAccessPoliciesAreValid() // Test duplicate reference. errors.clear(); - modeRef2->setPriority("1"); + modeRef2->setPriority(1); modeRef2->setReference("ref"); validator.findErrorsIn(errors, testRegisterFile, "test", "8", "32"); QVERIFY(errors.contains(possibleErrors.at(1))); QVERIFY(validator.hasValidAccessPolicies(testRegisterFile) == false); - // Test valid. + // Test invalid. errors.clear(); modeRef2->setReference("ref2"); + validator.findErrorsIn(errors, testRegisterFile, "test", "8", "32"); + QVERIFY(std::none_of(possibleErrors.cbegin(), possibleErrors.cend(), [&errors](QString const& str) + { + return errors.contains(str); + })); + + QVERIFY(validator.hasValidAccessPolicies(testRegisterFile) == false); + + // Test valid. + errors.clear(); + + modeRef2->setReference("ref1"); + validator.findErrorsIn(errors, testRegisterFile, "test", "8", "32"); QVERIFY(std::none_of(possibleErrors.cbegin(), possibleErrors.cend(), [&errors](QString const& str) { diff --git a/tests/IPXACTmodels/Component/tst_RegisterReader.cpp b/tests/IPXACTmodels/Component/tst_RegisterReader.cpp index 4d41ad88a..15516a99a 100644 --- a/tests/IPXACTmodels/Component/tst_RegisterReader.cpp +++ b/tests/IPXACTmodels/Component/tst_RegisterReader.cpp @@ -501,14 +501,14 @@ void tst_RegisterReader::readRegisterAccessPolicies2022() auto accessPolicy2 = testRegister->getAccessPolicies()->at(1); QCOMPARE(accessPolicy1->getModeReferences()->size(), 1); - QCOMPARE(accessPolicy1->getModeReferences()->first()->getPriority(), QString("0")); + QCOMPARE(accessPolicy1->getModeReferences()->first()->getPriority(), 0); QCOMPARE(accessPolicy1->getModeReferences()->first()->getReference(), QString("testMode")); QCOMPARE(accessPolicy1->getAccess(), AccessTypes::READ_ONLY); QCOMPARE(accessPolicy2->getModeReferences()->size(), 2); - QCOMPARE(accessPolicy2->getModeReferences()->first()->getPriority(), QString("1")); + QCOMPARE(accessPolicy2->getModeReferences()->first()->getPriority(), 1); QCOMPARE(accessPolicy2->getModeReferences()->first()->getReference(), QString("testMode2")); - QCOMPARE(accessPolicy2->getModeReferences()->at(1)->getPriority(), QString("2")); + QCOMPARE(accessPolicy2->getModeReferences()->at(1)->getPriority(), 2); QCOMPARE(accessPolicy2->getModeReferences()->at(1)->getReference(), QString("testMode3")); } @@ -587,9 +587,9 @@ void tst_RegisterReader::readAlternateRegisters2022() auto modeRefs = alternateRegister->getModeReferences(); QCOMPARE(modeRefs->size(), 2); - QCOMPARE(modeRefs->first()->getPriority(), QString("0")); + QCOMPARE(modeRefs->first()->getPriority(), 0); QCOMPARE(modeRefs->first()->getReference(), QString("testMode")); - QCOMPARE(modeRefs->at(1)->getPriority(), QString("1")); + QCOMPARE(modeRefs->at(1)->getPriority(), 1); QCOMPARE(modeRefs->at(1)->getReference(), QString("testMode2")); auto accessPolicies = alternateRegister->getAccessPolicies(); @@ -599,14 +599,14 @@ void tst_RegisterReader::readAlternateRegisters2022() auto accessPolicy2 = alternateRegister->getAccessPolicies()->at(1); QCOMPARE(accessPolicy1->getModeReferences()->size(), 1); - QCOMPARE(accessPolicy1->getModeReferences()->first()->getPriority(), QString("0")); + QCOMPARE(accessPolicy1->getModeReferences()->first()->getPriority(), 0); QCOMPARE(accessPolicy1->getModeReferences()->first()->getReference(), QString("testMode")); QCOMPARE(accessPolicy1->getAccess(), AccessTypes::READ_ONLY); QCOMPARE(accessPolicy2->getModeReferences()->size(), 2); - QCOMPARE(accessPolicy2->getModeReferences()->first()->getPriority(), QString("1")); + QCOMPARE(accessPolicy2->getModeReferences()->first()->getPriority(), 1); QCOMPARE(accessPolicy2->getModeReferences()->first()->getReference(), QString("testMode2")); - QCOMPARE(accessPolicy2->getModeReferences()->at(1)->getPriority(), QString("2")); + QCOMPARE(accessPolicy2->getModeReferences()->at(1)->getPriority(), 2); QCOMPARE(accessPolicy2->getModeReferences()->at(1)->getReference(), QString("testMode3")); QCOMPARE(alternateRegister->getFields()->size(), 1); @@ -969,14 +969,14 @@ void tst_RegisterReader::readRegisterFileAccessPolicies2022() auto accessPolicy2 = testRegisterFile->getAccessPolicies()->at(1); QCOMPARE(accessPolicy1->getModeReferences()->size(), 1); - QCOMPARE(accessPolicy1->getModeReferences()->first()->getPriority(), QString("0")); + QCOMPARE(accessPolicy1->getModeReferences()->first()->getPriority(), 0); QCOMPARE(accessPolicy1->getModeReferences()->first()->getReference(), QString("testMode")); QCOMPARE(accessPolicy1->getAccess(), AccessTypes::READ_ONLY); QCOMPARE(accessPolicy2->getModeReferences()->size(), 2); - QCOMPARE(accessPolicy2->getModeReferences()->first()->getPriority(), QString("1")); + QCOMPARE(accessPolicy2->getModeReferences()->first()->getPriority(), 1); QCOMPARE(accessPolicy2->getModeReferences()->first()->getReference(), QString("testMode2")); - QCOMPARE(accessPolicy2->getModeReferences()->at(1)->getPriority(), QString("2")); + QCOMPARE(accessPolicy2->getModeReferences()->at(1)->getPriority(), 2); QCOMPARE(accessPolicy2->getModeReferences()->at(1)->getReference(), QString("testMode3")); } diff --git a/tests/IPXACTmodels/Component/tst_RegisterValidator.cpp b/tests/IPXACTmodels/Component/tst_RegisterValidator.cpp index 42d6c9321..864668429 100644 --- a/tests/IPXACTmodels/Component/tst_RegisterValidator.cpp +++ b/tests/IPXACTmodels/Component/tst_RegisterValidator.cpp @@ -20,6 +20,8 @@ #include #include #include +#include +#include #include #include @@ -1258,11 +1260,11 @@ void tst_RegisterValidator::testRegisterAccessPoliciesAreValid2022() QSharedPointer testRegister(new Register("test", "8", "8")); QSharedPointer modeRef1(new ModeReference()); - modeRef1->setPriority("0"); + modeRef1->setPriority(0); modeRef1->setReference("ref"); QSharedPointer modeRef2(new ModeReference()); - modeRef2->setPriority("0"); + modeRef2->setPriority(0); modeRef2->setReference("ref1"); QSharedPointer accessPolicy1(new AccessPolicy()); @@ -1280,11 +1282,20 @@ void tst_RegisterValidator::testRegisterAccessPoliciesAreValid2022() QSharedPointer fieldValidator(new FieldValidator(parser, enumValidator, parameterValidator)); RegisterValidator validator(parser, fieldValidator, parameterValidator, Document::Revision::Std22); + QSharedPointer dummyComponent(new Component(VLNV(VLNV::COMPONENT, "vendor", "library", "name", "version"), Document::Revision::Std22)); + QSharedPointer mode1(new Mode("ref")); + QSharedPointer mode2(new Mode("ref1")); + dummyComponent->getModes()->append(mode1); + dummyComponent->getModes()->append(mode2); + + validator.componentChange(dummyComponent); + QStringList errors; QStringList possibleErrors(QStringList() << "One or more mode references in access policies of register 'test' within test contain duplicate priority values." << "One or more mode references in access policies of register 'test' within test contain duplicate mode reference values." + << "Mode reference in access policies of register 'test' within test has invalid or empty reference value 'ref2'." << "In register test in test, multiple access policies are not allowed if one of them lacks a mode reference." ); @@ -1296,18 +1307,26 @@ void tst_RegisterValidator::testRegisterAccessPoliciesAreValid2022() // Test duplicate reference. errors.clear(); - modeRef2->setPriority("1"); + modeRef2->setPriority(1); modeRef2->setReference("ref"); validator.findErrorsIn(errors, testRegister, "test"); QVERIFY(errors.contains(possibleErrors.at(1))); QVERIFY(validator.hasValidAccessPolicies(testRegister) == false); - // Test valid. + // Test invalid mode ref. errors.clear(); modeRef2->setReference("ref2"); + validator.findErrorsIn(errors, testRegister, "test"); + QVERIFY(errors.contains(possibleErrors.at(2))); + + + // Test valid mode refs. + errors.clear(); + modeRef2->setReference("ref1"); + validator.findErrorsIn(errors, testRegister, "test"); QVERIFY(std::none_of(possibleErrors.cbegin(), possibleErrors.cend(), [&errors](QString const& str) { @@ -1324,13 +1343,11 @@ void tst_RegisterValidator::testModeRefsOfAlternativeRegisetrsAreValid2022() { QSharedPointer registerField(new Field("regField")); registerField->setBitOffset("8"); - registerField->setBitWidth("4"); registerField->setTypeDefinitionsRef("testTypeDefinitions"); registerField->setFieldDefinitionRef("testField"); QSharedPointer altRegisterField(new Field("altRegField")); altRegisterField->setBitOffset("8"); - altRegisterField->setBitWidth("4"); altRegisterField->setTypeDefinitionsRef("testTypeDefinitions2"); altRegisterField->setFieldDefinitionRef("testField2"); @@ -1348,11 +1365,11 @@ void tst_RegisterValidator::testModeRefsOfAlternativeRegisetrsAreValid2022() testRegister->getAlternateRegisters()->append(alternateRegister2); QSharedPointer modeRef1(new ModeReference()); - modeRef1->setPriority("0"); + modeRef1->setPriority(0); modeRef1->setReference("testMode"); QSharedPointer modeRef2(new ModeReference()); - modeRef2->setPriority("1"); + modeRef2->setPriority(1); modeRef2->setReference("testMode2"); QSharedPointer parser(new SystemVerilogExpressionParser()); @@ -1362,6 +1379,14 @@ void tst_RegisterValidator::testModeRefsOfAlternativeRegisetrsAreValid2022() QSharedPointer fieldValidator(new FieldValidator(parser, enumValidator, parameterValidator)); RegisterValidator validator(parser, fieldValidator, parameterValidator, Document::Revision::Std22); + QSharedPointer dummyComponent(new Component(VLNV(VLNV::COMPONENT, "vendor", "library", "name", "version"), Document::Revision::Std22)); + QSharedPointer mode1(new Mode("testMode")); + QSharedPointer mode2(new Mode("testMode2")); + dummyComponent->getModes()->append(mode1); + dummyComponent->getModes()->append(mode2); + + validator.componentChange(dummyComponent); + QStringList errors; // Test no mode refs = error @@ -1383,14 +1408,14 @@ void tst_RegisterValidator::testModeRefsOfAlternativeRegisetrsAreValid2022() errors.clear(); // Test duplicate priority - modeRef1->setPriority("1"); + modeRef1->setPriority(1); validator.findErrorsIn(errors, testRegister, "test"); QCOMPARE(errors.size(), 1); QVERIFY(validator.hasValidAlternateRegisters(testRegister) == false); errors.clear(); - modeRef1->setPriority("0"); + modeRef1->setPriority(0); // Test duplicate reference modeRef1->setReference("testMode2"); @@ -1407,23 +1432,6 @@ void tst_RegisterValidator::testModeRefsOfAlternativeRegisetrsAreValid2022() QCOMPARE(errors.size(), 1); QVERIFY(errors.contains("Mode reference in alternate register testAlternate within register testRegister has invalid or empty reference value 'value with whitespace'.")); QVERIFY(validator.hasValidAlternateRegisters(testRegister) == false); - - errors.clear(); - modeRef1->setReference("testMode"); - - // Test invalid priority value. - modeRef1->setPriority("abc"); - validator.findErrorsIn(errors, testRegister, "test"); - QCOMPARE(errors.size(), 1); - QVERIFY(errors.contains("Mode reference in alternate register testAlternate within register testRegister has invalid or empty priority 'abc'.")); - QVERIFY(validator.hasValidAlternateRegisters(testRegister) == false); - - errors.clear(); - modeRef1->setPriority("-1"); - validator.findErrorsIn(errors, testRegister, "test"); - QCOMPARE(errors.size(), 1); - QVERIFY(errors.contains("Mode reference in alternate register testAlternate within register testRegister has invalid or empty priority '-1'.")); - QVERIFY(validator.hasValidAlternateRegisters(testRegister) == false); } //----------------------------------------------------------------------------- @@ -1436,13 +1444,11 @@ void tst_RegisterValidator::testAlternateRegisterAccessPoliciesAreValid2022() QSharedPointer registerField(new Field("regField")); registerField->setBitOffset("8"); - registerField->setBitWidth("4"); registerField->setTypeDefinitionsRef("testTypeDefinitions"); registerField->setFieldDefinitionRef("testField"); QSharedPointer altRegisterField(new Field("altRegField")); altRegisterField->setBitOffset("8"); - altRegisterField->setBitWidth("4"); altRegisterField->setTypeDefinitionsRef("testTypeDefinitions2"); altRegisterField->setFieldDefinitionRef("testField2"); @@ -1452,15 +1458,15 @@ void tst_RegisterValidator::testAlternateRegisterAccessPoliciesAreValid2022() testRegister->getAlternateRegisters()->append(alternateRegister); QSharedPointer modeRef1(new ModeReference()); - modeRef1->setPriority("0"); + modeRef1->setPriority(0); modeRef1->setReference("ref"); QSharedPointer modeRef2(new ModeReference()); - modeRef2->setPriority("0"); + modeRef2->setPriority(0); modeRef2->setReference("ref1"); QSharedPointer altRegisterModeRef(new ModeReference()); - altRegisterModeRef->setPriority("1000"); + altRegisterModeRef->setPriority(1000); altRegisterModeRef->setReference("superUnique"); QSharedPointer accessPolicy1(new AccessPolicy()); @@ -1479,6 +1485,16 @@ void tst_RegisterValidator::testAlternateRegisterAccessPoliciesAreValid2022() QSharedPointer fieldValidator(new FieldValidator(parser, enumValidator, parameterValidator)); RegisterValidator validator(parser, fieldValidator, parameterValidator, Document::Revision::Std22); + QSharedPointer dummyComponent(new Component(VLNV(VLNV::COMPONENT, "vendor", "library", "name", "version"), Document::Revision::Std22)); + QSharedPointer mode1(new Mode("ref")); + QSharedPointer mode2(new Mode("ref1")); + QSharedPointer mode3(new Mode("superUnique")); + dummyComponent->getModes()->append(mode1); + dummyComponent->getModes()->append(mode2); + dummyComponent->getModes()->append(mode3); + + validator.componentChange(dummyComponent); + QStringList errors; QStringList possibleErrors(QStringList() @@ -1495,17 +1511,17 @@ void tst_RegisterValidator::testAlternateRegisterAccessPoliciesAreValid2022() // Test duplicate reference. errors.clear(); - modeRef2->setPriority("1"); + modeRef2->setPriority(1); modeRef2->setReference("ref"); validator.findErrorsIn(errors, testRegister, "test"); QVERIFY(errors.contains(possibleErrors.at(1))); QVERIFY(validator.hasValidAlternateRegisters(testRegister) == false); - // Test valid. + // Test valid mode ref. errors.clear(); - modeRef2->setReference("ref2"); + modeRef2->setReference("ref1"); validator.findErrorsIn(errors, testRegister, "test"); QVERIFY(std::none_of(possibleErrors.cbegin(), possibleErrors.cend(), [&errors](QString const& str) diff --git a/tests/IPXACTmodels/Component/tst_RegisterWriter.cpp b/tests/IPXACTmodels/Component/tst_RegisterWriter.cpp index 2fb6cbac9..63ba32e7d 100644 --- a/tests/IPXACTmodels/Component/tst_RegisterWriter.cpp +++ b/tests/IPXACTmodels/Component/tst_RegisterWriter.cpp @@ -417,15 +417,15 @@ void tst_RegisterWriter::writeRegisterAlternateRegisters2022() QSharedPointer modeRef1(new ModeReference()); modeRef1->setReference("testMode"); - modeRef1->setPriority("0"); + modeRef1->setPriority(0); QSharedPointer modeRef2(new ModeReference()); modeRef2->setReference("testMode2"); - modeRef2->setPriority("1"); + modeRef2->setPriority(1); QSharedPointer modeRef3(new ModeReference(*modeRef1)); modeRef3->setReference("testMode3"); - modeRef3->setPriority("2"); + modeRef3->setPriority(2); QSharedPointer accessPolicy1(new AccessPolicy()); @@ -620,7 +620,7 @@ void tst_RegisterWriter::writeRegisterAccessPolicies2022() QSharedPointer modeRef1(new ModeReference()); modeRef1->setReference("testMode"); - modeRef1->setPriority("0"); + modeRef1->setPriority(0); QSharedPointer accessPolicy1(new AccessPolicy()); accessPolicy1->getModeReferences()->append(modeRef1); @@ -629,11 +629,11 @@ void tst_RegisterWriter::writeRegisterAccessPolicies2022() QSharedPointer modeRef2(new ModeReference()); modeRef2->setReference("testMode2"); - modeRef2->setPriority("1"); + modeRef2->setPriority(1); QSharedPointer modeRef3(new ModeReference(*modeRef1)); modeRef3->setReference("testMode3"); - modeRef3->setPriority("2"); + modeRef3->setPriority(2); QSharedPointer accessPolicy2(new AccessPolicy()); accessPolicy2->getModeReferences()->append(modeRef2); @@ -996,7 +996,7 @@ void tst_RegisterWriter::writeRegisterFileAccessPolicies2022() QSharedPointer modeRef1(new ModeReference()); modeRef1->setReference("testMode"); - modeRef1->setPriority("0"); + modeRef1->setPriority(0); QSharedPointer accessPolicy1(new AccessPolicy()); accessPolicy1->getModeReferences()->append(modeRef1); @@ -1005,11 +1005,11 @@ void tst_RegisterWriter::writeRegisterFileAccessPolicies2022() QSharedPointer modeRef2(new ModeReference()); modeRef2->setReference("testMode2"); - modeRef2->setPriority("1"); + modeRef2->setPriority(1); QSharedPointer modeRef3(new ModeReference(*modeRef1)); modeRef3->setReference("testMode3"); - modeRef3->setPriority("2"); + modeRef3->setPriority(2); QSharedPointer accessPolicy2(new AccessPolicy()); accessPolicy2->getModeReferences()->append(modeRef2); diff --git a/version.h b/version.h index 85ea433c2..adb1934f5 100644 --- a/version.h +++ b/version.h @@ -10,20 +10,20 @@ #ifndef VERSIONNO__H #define VERSIONNO__H -#define VERSION_FULL 3.12.1016.0 +#define VERSION_FULL 3.12.1018.0 #define VERSION_BASEYEAR 0 -#define VERSION_DATE "2023-11-20" -#define VERSION_TIME "10:05:57" +#define VERSION_DATE "2023-11-21" +#define VERSION_TIME "12:24:57" #define VERSION_MAJOR 3 #define VERSION_MINOR 12 -#define VERSION_BUILDNO 1016 +#define VERSION_BUILDNO 1018 #define VERSION_EXTEND 0 -#define VERSION_FILE 3,12,1016,0 -#define VERSION_PRODUCT 3,12,1016,0 -#define VERSION_FILESTR "3,12,1016,0" -#define VERSION_PRODUCTSTR "3,12,1016,0" +#define VERSION_FILE 3,12,1018,0 +#define VERSION_PRODUCT 3,12,1018,0 +#define VERSION_FILESTR "3,12,1018,0" +#define VERSION_PRODUCTSTR "3,12,1018,0" #endif