ISCE_INSAR/components/isceobj/LineAccessor/test/driverCC.cpp

131 lines
3.1 KiB
C++

#include "driverCC.h"
#include <cmath>
#include <sstream>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <time.h>
#include <complex>
#include "LineAccessor.h"
using namespace std;
int main(int argc, char ** argv)
{
stringstream ss(stringstream::in | stringstream::out);
int choice = 1;
if(argc > 1)
{
ss << argv[1];
ss >> choice;
}
switch(choice)
{
case 1:
case 2:
{
LineAccessor LAGet;
string infile = "testFile";
int fileSize = 4*4*10;
char buffer[fileSize];
//create test file 160 bytes with integer from 0 to 159
for(int i = 0; i < fileSize; ++i)
{
buffer[i] = i;
}
ofstream fout(infile.c_str());
fout.write(buffer,fileSize);
fout.close();
string filemode = "read";
char endian = 'l';
char machineEnd = LAGet.getMachineEndianness();
//choice = 1 test machine and file endianness being the same
if((choice == 1))
{
if((machineEnd == 'b'))
{
endian = 'b';
}
}
else if((choice == 2))
{
if((machineEnd == 'l'))
{
endian = 'b';
}
}
string outfile = (choice == 1 ? "testOutC1": "testOutC2" );
string type = "FLOAT";// using numpy nomenclature for variable type
int col = 4;// width of the tile. this means 10 lines in total. each line is col*sizeof(float) = 4*4 = 16 bytes.
int row = 3;// height of the tile.
// create image object to read from
LAGet.initLineAccessor(infile, filemode, endian, type, row,col);
LineAccessor LASet;
string filemode1 = "writeread";
// create image objet to write into
LASet.initLineAccessor(outfile, filemode1, endian, type, row,col);
uint64_t addressGet =(uint64_t) &LAGet;
uint64_t addressSet =(uint64_t)&LASet;
testImageSetGet_f(&addressGet,&addressSet,&choice);
//need to do flushing and free memory
LASet.finalizeLineAccessor();
LAGet.finalizeLineAccessor();
break;
}
case 3:
{
int fileSize = 4*4*10;
char buffer[fileSize];
for(int i = 0; i < fileSize; ++i)
{
buffer[i] = i;
}
string infile = "testSwap";
string outfile = "testSwapOutC";
string type = "FLOAT";
ofstream fout(infile.c_str());
fout.write(buffer,fileSize);
fout.close();
LineAccessor LAGet;
LAGet.convertFileEndianness(infile,outfile,type);
break;
}
case 4:
{
LineAccessor LAGet;
int numb = 2;
string infile = "testFileBand";
string outfile = "testFileBandOutC";
int fileSize = 4*4*10;
char buffer[fileSize];
for(int i = 0; i < fileSize; ++i)
{
buffer[i] = i;
}
ofstream fout(infile.c_str());
fout.write(buffer,fileSize);
fout.close();
string type = "FLOAT";// using numpy nomenclature for variable type
int col = 4;// width of the tile
LAGet.changeBandScheme(infile, outfile, type, col,numb,BSQ, BIL);
break;
}
default:
{
cout << "Error. Wrong selection" << endl;
ERR_MESSAGE;
}
}
#if(0)
#endif
}