#pragma once
#include "AstGlobal.h"
#include "AstUtil/StringView.hpp"
#include "AstUtil/Quantity.hpp"
AST_NAMESPACE_BEGIN
@addtogroup
@{
*/
class Quantity;
AST_TEST_CAPI errc_t aTestScriptParse(StringView script);
AST_TEST_CAPI errc_t aTestScriptSyntaxError(StringView str);
AST_TEST_CAPI errc_t aTestScriptEvalRuntimeError(StringView str);
AST_TEST_CAPI errc_t aTestScriptEvalBool(StringView str, bool expectValue);
AST_TEST_CAPI errc_t aTestScriptEvalInt(StringView str, int expectedValue);
AST_TEST_CAPI errc_t aTestScriptEvalDouble(StringView str, double expectedValue);
AST_TEST_CAPI errc_t aTestScriptEvalString(StringView str, StringView expectedValue);
AST_TEST_CAPI errc_t aTestScriptEvalQuantity(StringView str, const Quantity& expectedValue);
template<typename T>
errc_t aTestScriptEval(StringView str, T expectedValue);
template<>
errc_t aTestScriptEval<bool>(StringView str, bool expectedValue)
{
return aTestScriptEvalBool(str, expectedValue);
}
template<>
errc_t aTestScriptEval<int>(StringView str, int expectedValue)
{
return aTestScriptEvalInt(str, expectedValue);
}
template<>
errc_t aTestScriptEval<double>(StringView str, double expectedValue)
{
return aTestScriptEvalDouble(str, expectedValue);
}
template<>
errc_t aTestScriptEval<StringView>(StringView str, StringView expectedValue)
{
return aTestScriptEvalString(str, expectedValue);
}
template<>
errc_t aTestScriptEval<Quantity>(StringView str, Quantity expectedValue)
{
return aTestScriptEvalQuantity(str, expectedValue);
}
AST_NAMESPACE_END