aes67-daemon/test/check.cc
Andrea Bondavalli 838dc59b91 Fixed daemon tests broken built, see #20
Added daemon tests build to build.sh script
Changed daemon version to 2.0.4
2025-03-12 10:00:23 +01:00

87 lines
1.8 KiB
C++

// basic file operations
#include <iostream>
#include <fstream>
#include <cstdint>
using namespace std;
int main(int argc, char* argv[])
{
if (argc < 3) {
cerr << "Usage: " << argv[0] << " sample_format channels" << endl;
exit(1);
}
int len(0);
string format(argv[1]);
if (format == "S16_LE")
len = 2;
else if (format == "S24_3LE")
len = 3;
else if (format == "S32_LE")
len = 4;
else {
cerr << "Unsupported format " << format << endl;
exit(1);
}
int channels = atoi(argv[2]);
if (channels % 2 != 0 || channels <= 0 || channels > 64) {
cerr << "Unsupported channels " << channels << endl;
exit(1);
}
fstream fl;
fl.open("./sink_test.raw", ios::in|ios::binary);
if (!fl.is_open()) {
cout << "cannot open file " << endl;
exit(1);
}
auto begin = fl.tellp();
fl.seekp(0, ios::end);
auto end = fl.tellp();
fl.seekp(0, ios::beg);
auto prev = fl.tellp();
// skip inital silence
while((prev = fl.tellp()) != end && fl.get() == 0);
uint8_t curr = 0, byte = 0;
bool first = true;
fl.seekp(prev);
while(fl.tellp() != end) {
int ch(channels);
while (ch--) {
if (!first) {
byte = fl.get();
if (byte != (uint8_t)curr) goto end;
}
if (len > 1) {
byte = fl.get();
if (byte != (uint8_t)(curr+1)) goto end;
if (len > 2) {
byte = fl.get();
if (byte != (uint8_t)(curr+2)) goto end;
if (len > 3) {
byte = fl.get();
if (byte != (uint8_t)(curr+3)) goto end;
}
}
}
first = false;
}
curr += len;
}
end:
//cout << "expected " << (int)curr << " byte " << (int)byte << endl;
int rc = 0;
if (first || fl.tellp() != end)
{
cout << "error at position: " << fl.tellp() << endl;
rc = 1;
}
else cout << "ok" << endl;
fl.close();
return rc;
}