1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
/*
SPDX-FileCopyrightText: 2012 Olivier de Gaalon <olivier.jg@gmail.com>
SPDX-License-Identifier: LGPL-2.0-only
*/
#ifndef KDEVPLATFORM_JSONTYPETESTS_H
#define KDEVPLATFORM_JSONTYPETESTS_H
#include "language/duchain/types/abstracttype.h"
#include "language/duchain/types/constantintegraltype.h"
#include "language/duchain/types/delayedtype.h"
#include "language/duchain/types/functiontype.h"
#include "jsontesthelpers.h"
/**
* Quick Reference:
* toString : string
* isConst : bool
* plainValue : qint64
*/
namespace KDevelop {
namespace TypeTests {
using namespace JsonTestHelpers;
///JSON type: string
///@returns whether the type toString matches the given value
TypeTest(toString)
{
QString typeStr = type ? type->toString() : QStringLiteral("<no type>");
return compareValues(typeStr, value, QStringLiteral("Type's toString"));
}
///JSON type: bool
///@returns whether type's constness matches the given value
TypeTest(isConst)
{
VERIFY_TYPE(bool);
bool typeIsConst = false;
if (auto delayed = type.dynamicCast<DelayedType>())
typeIsConst = delayed->identifier().isConstant();
else
typeIsConst = (type->modifiers() & AbstractType::ConstModifier);
if (typeIsConst != value.toBool())
return typeIsConst ? QStringLiteral("Type is constant, but test data expects non-const.") :
QStringLiteral("Type is non-const, but test data expects constant.");
return SUCCESS();
}
///JSON type: qint64
///@returns Whether ConstantIntegralType's plainValue matches the given value
TypeTest(plainValue)
{
VERIFY_TYPE(qint64);
auto constantIntegralType = type.dynamicCast<ConstantIntegralType>();
VERIFY_NOT_NULL(constantIntegralType);
return compareValues(constantIntegralType->plainValue(), value,
QStringLiteral("ConstantIntegralType's plainValue"));
}
}
}
#endif //KDEVPLATFORM_JSONTYPETESTS_H
|