Files
2022-12-13 12:44:04 +01:00

409 lines
9.9 KiB
Java

//-----------------------------------------------------------------------------
// Copyright (c) 1994,1995 Southeastern Universities Research Association,
// Continuous Electron Beam Accelerator Facility
//
// This software was developed under a United States Government license
// described in the NOTICE file included as part of this distribution.
//
// Jefferson Lab HPC Group, 12000 Jefferson Ave., Newport News, VA 23606
//-----------------------------------------------------------------------------
//
// Description:
// rsvc data package test
//
// Author:
// Jie Chen
// Jefferson Lab HPC Group
//
// Revision History:
// $Log: rsvcDataTest.java,v $
// Revision 1.1.1.1 2000/05/23 15:12:50 pal
// cdev_psi_1.7.2
//
// Revision 1.1 1999/10/18 17:12:41 chen
// *** empty log message ***
//
//
//
//
import java.io.*;
import rsvcData;
public class rsvcDataTest
{
public static final byte bdata = 1;
public static final short sdata = 2;
public static final int idata = 3;
public static final long ldata = 4;
public static final float fdata = (float)5.0;
public static final double ddata = 6.0;
public static final String strdata = new String ("Hello World I am Here");
public static final String file = new String ("/home/chen/java/rsvc/test.dat");
public static final String coutputfile = new String ("/home/chen/java/rsvc/coutput.dat");
public static final String cinputfile = new String ("/home/chen/java/rsvc/cinput.dat");
static public void integerConvTest ()
{
// test array insert
int []iarray = new int[127];
for (int i = 0; i < 127; i++)
iarray[i] = i;
rsvcData data = new rsvcData ();
data.insert ("value", iarray);
// get data test
rsvcDataEntry de = data.get ("value");
// byte converstion
byte[] ba = de.byteArray ();
rsvcData data1 = new rsvcData ();
data1.insert ("value", ba);
de = data1.get ("value");
int []ia = de.intArray();
rsvcData data2 = new rsvcData();
data2.insert ("value", ia);
if (data.equals (data2))
System.out.print ("Integer -> Byte -> Integer OK\n");
else
System.out.print ("Integer -> Byte -> Integer Failed\n");
// short conversion
de = data.get ("value");
short[] sa = de.shortArray ();
rsvcData data3 = new rsvcData ();
data3.insert ("value", sa);
de = data3.get ("value");
ia = de.intArray ();
rsvcData data4 = new rsvcData();
data4.insert ("value", ia);
if (data.equals (data4))
System.out.print ("Integer -> Short -> Integer OK\n");
else
System.out.print ("Integer -> Short -> Integer Failed\n");
// long conversion
de = data.get ("value");
long[] la = de.longArray ();
rsvcData data5 = new rsvcData ();
data5.insert ("value", la);
de = data5.get ("value");
ia = de.intArray ();
rsvcData data6 = new rsvcData();
data6.insert ("value", ia);
if (data.equals (data6))
System.out.print ("Integer -> Long -> Integer OK\n");
else
System.out.print ("Integer -> Long -> Integer Failed\n");
// float conversion
de = data.get ("value");
float[] fa = de.floatArray ();
rsvcData data7 = new rsvcData ();
data7.insert ("value", fa);
de = data7.get ("value");
ia = de.intArray ();
rsvcData data8 = new rsvcData();
data8.insert ("value", ia);
if (data.equals (data8))
System.out.print ("Integer -> Float -> Integer OK\n");
else
System.out.print ("Integer -> Float -> Integer Failed\n");
// Double conversion
de = data.get ("value");
double[] da = de.doubleArray ();
rsvcData data9 = new rsvcData ();
data9.insert ("value", da);
de = data9.get ("value");
ia = de.intArray ();
rsvcData data10 = new rsvcData();
data10.insert ("value", ia);
if (data.equals (data10))
System.out.print ("Integer -> Double -> Integer OK\n");
else
System.out.print ("Integer -> Double -> Integer Failed\n");
}
static public void floatConvTest ()
{
// test array insert
float []farray = new float[127];
for (int i = 0; i < 127; i++)
farray[i] = (float)i;
rsvcData data = new rsvcData ();
data.insert ("value", farray);
// get data test
rsvcDataEntry de = data.get ("value");
// byte converstion
byte[] ba = de.byteArray ();
rsvcData data1 = new rsvcData ();
data1.insert ("value", ba);
de = data1.get ("value");
float []ia = de.floatArray();
rsvcData data2 = new rsvcData();
data2.insert ("value", ia);
if (data.equals (data2))
System.out.print ("Float -> Byte -> Float OK\n");
else
System.out.print ("Float -> Byte -> Float Failed\n");
// short conversion
de = data.get ("value");
short[] sa = de.shortArray ();
rsvcData data3 = new rsvcData ();
data3.insert ("value", sa);
de = data3.get ("value");
ia = de.floatArray ();
rsvcData data4 = new rsvcData();
data4.insert ("value", ia);
if (data.equals (data4))
System.out.print ("Float -> Short -> Float OK\n");
else
System.out.print ("Float -> Short -> Float Failed\n");
// long conversion
de = data.get ("value");
long[] la = de.longArray ();
rsvcData data5 = new rsvcData ();
data5.insert ("value", la);
de = data5.get ("value");
ia = de.floatArray ();
rsvcData data6 = new rsvcData();
data6.insert ("value", ia);
if (data.equals (data6))
System.out.print ("Float -> Long -> Float OK\n");
else
System.out.print ("Float -> Long -> Float Failed\n");
// Integer conversion
de = data.get ("value");
int[] fa = de.intArray ();
rsvcData data7 = new rsvcData ();
data7.insert ("value", fa);
de = data7.get ("value");
ia = de.floatArray ();
rsvcData data8 = new rsvcData();
data8.insert ("value", ia);
if (data.equals (data8))
System.out.print ("Float -> Integer -> Float OK\n");
else
System.out.print ("Float -> Integer -> Float Failed\n");
// Double conversion
de = data.get ("value");
double[] da = de.doubleArray ();
rsvcData data9 = new rsvcData ();
data9.insert ("value", da);
de = data9.get ("value");
ia = de.floatArray ();
rsvcData data10 = new rsvcData();
data10.insert ("value", ia);
if (data.equals (data10))
System.out.print ("Float -> Double -> Float OK\n");
else
System.out.print ("Float -> Double -> Float Failed\n");
}
public static rsvcData arrayData ()
{
rsvcData data = new rsvcData ();
int i;
// insert array of double
double[] darray = new double[127];
for (i = 0; i < 127; i++)
darray[i] = 123.232 + i*121.121 + i/89.12;
data.insert ("value0", darray);
// insert array of string
String[] sarray = new String[211];
for (i = 0; i < 211; i++)
sarray[i] = new String("value plus " + String.valueOf(i));
data.insert ("value1", sarray);
return data;
}
public static void main (String[] args)
{
rsvcData data = new rsvcData();
// test scaler data insert
data.insert ("value0", bdata);
data.insert ("value1", sdata);
data.insert ("value2", idata);
data.insert ("value3", ldata);
data.insert ("value4", fdata);
data.insert ("value5", ddata);
data.insert ("value6", strdata);
try {
data.dup ("value4", "value3");
}catch (rsvcException e) {
data.remove ("value3");
data.dup ("value4", "value3");
}
data.asciiDump ();
rsvcData data1 = new rsvcData (data);
if (data.equals (data1))
System.out.print ("Data == Data1\n");
else
System.out.print ("Data != Data1\n");
data1.insert ("value0", (byte)12);
if (data.equals (data1))
System.out.print ("Data == Data1\n");
else
System.out.print ("Data != Data1\n");
data1.changeTag ("value2", "value12");
data1.asciiDump ();
rsvcTimeStamp ts = new rsvcTimeStamp();
data1.insert ("value1", ts);
data1.asciiDump ();
integerConvTest ();
floatConvTest();
// test stream out and stream in
File outputfile = new File (rsvcDataTest.file);
FileOutputStream output = null;
try {
output = new FileOutputStream (outputfile);
}catch (IOException e) {
System.out.println (e);
System.exit (-1);
}
// find out how big stream rsvcData will be
// rsvcData olddata = arrayData ();
rsvcData olddata = new rsvcData ();
olddata.insert ("value0", (double)129.01);
olddata.insert ("value1", (double)142323.01);
int dsize = olddata.streamSize ();
System.out.print ("Data size is " + String.valueOf(dsize) + "\n");
// Create Buffered output stream
BufferedOutputStream boutput = new BufferedOutputStream (output, dsize);
try {
olddata.streamOut (boutput);
}catch (IOException e) {
System.out.println (e);
System.exit (-1);
}
try {
boutput.flush();
}catch (IOException e) {
System.out.println (e);
System.exit (-1);
}
// create a buffered input stream
rsvcData newdata = new rsvcData ();
FileInputStream input = null;
try {
input = new FileInputStream (outputfile);
}catch (IOException e) {
System.out.println (e);
System.exit (-1);
}
BufferedInputStream binput = new BufferedInputStream(input, dsize);
try {
newdata.streamIn (binput);
}catch (IOException e) {
System.out.println (e);
System.exit (-1);
}
newdata.asciiDump ();
// test equality between newdata and data
if (olddata.equals (newdata) )
System.out.print ("Data == newdata\n");
else
System.out.print ("Data != newdata\n");
// test whether we can read from a file generated by C code
// create a buffered input stream
rsvcData cdata = new rsvcData ();
try {
input = new FileInputStream (coutputfile);
}catch (IOException e) {
System.out.println (e);
System.exit (-1);
}
binput = new BufferedInputStream(input, 2400);
try {
cdata.streamIn (binput);
}catch (IOException e) {
System.out.println (e);
System.exit (-1);
}
cdata.asciiDump ();
// output some data stream let C++ to pick it up
try {
output = new FileOutputStream (cinputfile);
}catch (IOException e) {
System.out.println (e);
System.exit (-1);
}
boutput = new BufferedOutputStream(output, 2400);
try {
cdata.streamOut (boutput);
}catch (IOException e) {
System.out.println (e);
System.exit (-1);
}
try {
boutput.flush();
}catch (IOException e) {
System.out.println (e);
System.exit (-1);
}
}
}