1 /*  Author: Kenneth Leiter
2 	E-mail: kenneth.leiter@us.army.mil
3 
4 	Writes values to XdmfArrays and then tries to read them.  Compares the values for equality and
5 	tests the accuracy of some convenience functions.
6 */
7 
8 #include <Xdmf.h>
9 #include <XdmfArray.h>
10 
main(int argc,const char * argv[])11 int main( int argc, const char* argv[] )
12 {
13 	XdmfArray * intArray = new XdmfArray();
14 	intArray->SetNumberType(XDMF_INT64_TYPE);
15 	if (strcmp(intArray->GetNumberTypeAsString(), "XDMF_INT64_TYPE") != 0) return -1;
16 	intArray->SetShapeFromString("3 3");
17 	if (strcmp(intArray->GetShapeAsString(), "3 3") != 0) return -1;
18 	if (intArray->GetNumberOfElements() != 9) return -1;
19 	long toWrite [9] = {0, 1, 3, 4, 500, -5000, 500000, 9223372036854775807, -9223372036854775807};
20 	for (int i=0; i<9; i++)
21 	{
22 		intArray->SetValueFromInt64(i,toWrite[i]);
23 	}
24 	for (int i=0; i<9; i++)
25 	{
26 		if(intArray->GetValueAsInt64(i) != toWrite[i]) return -1;
27 	}
28 	if (intArray->GetMaxAsInt64() != 9223372036854775807) return -1;
29 	if (intArray->GetMinAsInt64() != -9223372036854775807) return -1;
30 	delete intArray;
31 
32 	XdmfArray * floatArray = new XdmfArray();
33 	floatArray->SetNumberType(XDMF_FLOAT64_TYPE);
34 	if (floatArray->GetNumberType() != XDMF_FLOAT64_TYPE) return -1;
35 	floatArray->SetShapeFromString("2 2 2");
36 	if (strcmp(floatArray->GetShapeAsString(), "2 2 2") != 0) return -1;
37 	if (floatArray->GetNumberOfElements() != 8) return -1;
38 	double floatToWrite [8] = {0, -1, 1100.256, 1.1, 1000.50 , 5.6234567, -60.2, 60.25659};
39 	floatArray->SetValues(0, floatToWrite, 8, 1, 1);
40 	for (int i=0; i<8; i++)
41 	{
42 		if(floatArray->GetValueAsFloat64(i) != floatToWrite[i]) return -1;
43 	}
44 	if (floatArray->GetMaxAsFloat64() != 1100.256) return -1;
45 	if (floatArray->GetMinAsFloat64() != -60.2) return -1;
46 	delete floatArray;
47 
48 	XdmfArray * opArray = new XdmfArray();
49 	opArray->SetNumberType(XDMF_INT32_TYPE);
50 	if (strcmp(opArray->GetNumberTypeAsString(), "XDMF_INT32_TYPE") != 0) return -1;
51 	opArray->SetNumberOfElements(10);
52 	if (strcmp(opArray->GetShapeAsString(), "10") != 0) return -1;
53 	if (opArray->GetNumberOfElements() != 10) return -1;
54 	opArray->Generate(0, 9);
55 	for (int i=0; i<opArray->GetNumberOfElements(); i++)
56 	{
57 		if(opArray->GetValueAsInt32(i) != i) return -1;
58 	}
59 
60 	delete opArray;
61 
62 	return 0;
63 }
64