libcamera/test/ipa/ipa_test.cpp
Paul Elder 46ae1775b0 libcamera: ipa_interface: add header
Define an IPAInterface class which will contain an IPA implementation.
The methods that the IPAInterface exposes form the interface to the IPA
implementation, hence the name. IPA module shared objects will implement
this class.

This also means that IPA module shared objects must be implemented in
C++, so remove the C test IPA module.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2019-06-05 10:44:51 -04:00

72 lines
1.3 KiB
C++

/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Copyright (C) 2019, Google Inc.
*
* load-so.cpp - loading .so tests
*/
#include <iostream>
#include <string.h>
#include "ipa_module.h"
#include "test.h"
using namespace std;
using namespace libcamera;
class IPAModuleTest : public Test
{
protected:
int runTest(const string &path, const struct IPAModuleInfo &testInfo)
{
int ret = 0;
IPAModule *ll = new IPAModule(path);
if (!ll->isValid()) {
cerr << "test IPA module " << path << " is invalid"
<< endl;
delete ll;
return -1;
}
const struct IPAModuleInfo &info = ll->info();
if (strcmp(info.name, testInfo.name)) {
cerr << "test IPA module has incorrect name" << endl;
cerr << "expected \"" << testInfo.name << "\", got \""
<< info.name << "\"" << endl;
ret = -1;
}
if (info.version != testInfo.version) {
cerr << "test IPA module has incorrect version" << endl;
cerr << "expected \"" << testInfo.version << "\", got \""
<< info.version << "\"" << endl;
ret = -1;
}
delete ll;
return ret;
}
int run() override
{
int count = 0;
const struct IPAModuleInfo testInfo = {
"It's over nine thousand!",
9001,
};
count += runTest("test/ipa/ipa-dummy-cpp.so", testInfo);
if (count < 0)
return TestFail;
return TestPass;
}
};
TEST_REGISTER(IPAModuleTest)