You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
474 lines
21 KiB
C
474 lines
21 KiB
C
#include <tau/tau.h>
|
|
#include <libmseed.h>
|
|
|
|
#include "testdata.h"
|
|
|
|
extern int cmpint32s (int32_t *arrayA, int32_t *arrayB, size_t length);
|
|
extern int cmpfloats (float *arrayA, float *arrayB, size_t length);
|
|
extern int cmpdoubles (double *arrayA, double *arrayB, size_t length);
|
|
|
|
TEST (read, v3_parse)
|
|
{
|
|
MS3Record *msr = NULL;
|
|
nstime_t nstime;
|
|
uint32_t flags = 0;
|
|
int rv;
|
|
|
|
char *path = "data/testdata-3channel-signal.mseed3";
|
|
|
|
nstime = ms_timestr2nstime ("2010-02-27T06:50:00.069539Z");
|
|
|
|
/* General parsing */
|
|
flags = MSF_UNPACKDATA;
|
|
rv = ms3_readmsr (&msr, path, flags, 0);
|
|
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
CHECK (msr->reclen == 478, "msr->reclen is not expected 478");
|
|
CHECK_STREQ (msr->sid, "FDSN:IU_COLA_00_L_H_1");
|
|
CHECK (msr->formatversion == 3, "msr->formatversion is not expected 3");
|
|
CHECK (msr->flags == 4, "msr->flags is not expected 4");
|
|
CHECK (msr->starttime == nstime, "msr->starttime is not expected 2010-02-27T06:50:00.069539Z");
|
|
CHECK (msr->samprate == 1.0, "msr->samprate is not expected 1.0");
|
|
CHECK (msr->encoding == 11, "msr->encoding is not expected 11");
|
|
CHECK (msr->pubversion == 4, "msr->pubversion is not expected 4");
|
|
CHECK (msr->samplecnt == 135, "msr->samplecnt is not expected 135");
|
|
CHECK (msr->crc == 0x4F3EAB65, "msr->crc is not expected 0x4F3EAB65");
|
|
CHECK (msr->extralength == 33, "msr->extralength is not expected 33");
|
|
CHECK (msr->datalength == 384, "msr->datalength is not expected 384");
|
|
CHECK_STREQ (msr->extra, "{\"FDSN\":{\"Time\":{\"Quality\":100}}}");
|
|
CHECK (msr->datasize == 540, "msr->datasize is not expected 540");
|
|
CHECK (msr->numsamples == 135, "msr->numsamples is not expected 135");
|
|
CHECK (msr->sampletype == 'i', "msr->sampletype is not expected 'i'");
|
|
|
|
/* Test first and last 4 decoded sample values */
|
|
REQUIRE (msr->datasamples != NULL, "msr->datasamples is unexpected NULL");
|
|
int32_t *samples = (int32_t *)msr->datasamples;
|
|
CHECK (samples[0] == -502676, "Decoded sample value mismatch");
|
|
CHECK (samples[1] == -504105, "Decoded sample value mismatch");
|
|
CHECK (samples[2] == -507491, "Decoded sample value mismatch");
|
|
CHECK (samples[3] == -506991, "Decoded sample value mismatch");
|
|
|
|
CHECK (samples[131] == -505212, "Decoded sample value mismatch");
|
|
CHECK (samples[132] == -499533, "Decoded sample value mismatch");
|
|
CHECK (samples[133] == -495590, "Decoded sample value mismatch");
|
|
CHECK (samples[134] == -496168, "Decoded sample value mismatch");
|
|
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
}
|
|
|
|
TEST (read, v2_parse)
|
|
{
|
|
MS3Record *msr = NULL;
|
|
nstime_t nstime;
|
|
uint32_t flags = 0;
|
|
int rv;
|
|
|
|
char *path = "data/testdata-3channel-signal.mseed2";
|
|
|
|
nstime = ms_timestr2nstime ("2010-02-27T06:50:00.069539Z");
|
|
|
|
/* General parsing */
|
|
flags = MSF_UNPACKDATA;
|
|
rv = ms3_readmsr (&msr, path, flags, 0);
|
|
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
CHECK (msr->reclen == 512, "msr->reclen is not expected 512");
|
|
CHECK_STREQ (msr->sid, "FDSN:IU_COLA_00_L_H_1");
|
|
CHECK (msr->formatversion == 2, "msr->formatversion is not expected 2");
|
|
CHECK (msr->flags == 4, "msr->flags is not expected 4");
|
|
CHECK (msr->starttime == nstime, "msr->starttime is not expected 2010-02-27T06:50:00.069539Z");
|
|
CHECK (msr->samprate == 1.0, "msr->samprate is not expected 1.0");
|
|
CHECK (msr->encoding == 11, "msr->encoding is not expected 11");
|
|
CHECK (msr->pubversion == 4, "msr->pubversion is not expected 4");
|
|
CHECK (msr->samplecnt == 135, "msr->samplecnt is not expected 135");
|
|
CHECK (msr->crc == 0, "msr->crc is not expected 0");
|
|
CHECK (msr->extralength == 33, "msr->extralength is not expected 33");
|
|
CHECK (msr->datalength == 448, "msr->datalength is not expected 448");
|
|
CHECK_STREQ (msr->extra, "{\"FDSN\":{\"Time\":{\"Quality\":100}}}");
|
|
CHECK (msr->datasize == 540, "msr->datasize is not expected 540");
|
|
CHECK (msr->numsamples == 135, "msr->numsamples is not expected 135");
|
|
CHECK (msr->sampletype == 'i', "msr->sampletype is not expected 'i'");
|
|
|
|
/* Test first and last 4 decoded sample values */
|
|
REQUIRE (msr->datasamples != NULL, "msr->datasamples is unexpected NULL");
|
|
int32_t *samples = (int32_t *)msr->datasamples;
|
|
CHECK (samples[0] == -502676, "Decoded sample value mismatch");
|
|
CHECK (samples[1] == -504105, "Decoded sample value mismatch");
|
|
CHECK (samples[2] == -507491, "Decoded sample value mismatch");
|
|
CHECK (samples[3] == -506991, "Decoded sample value mismatch");
|
|
|
|
CHECK (samples[131] == -505212, "Decoded sample value mismatch");
|
|
CHECK (samples[132] == -499533, "Decoded sample value mismatch");
|
|
CHECK (samples[133] == -495590, "Decoded sample value mismatch");
|
|
CHECK (samples[134] == -496168, "Decoded sample value mismatch");
|
|
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
}
|
|
|
|
TEST (read, v3_encodings)
|
|
{
|
|
MS3Record *msr = NULL;
|
|
uint32_t flags = MSF_UNPACKDATA; /* Set data decode/unpack flag */
|
|
int32_t sinedata[SINE_DATA_SAMPLES];
|
|
double dsinedata[SINE_DATA_SAMPLES];
|
|
int rv;
|
|
int idx;
|
|
|
|
/* Create integer and double sine data sets */
|
|
for (idx = 0; idx < SINE_DATA_SAMPLES; idx++)
|
|
{
|
|
sinedata[idx] = (int32_t)(fsinedata[idx]);
|
|
dsinedata[idx] = (double)(fsinedata[idx]);
|
|
}
|
|
|
|
/* Text */
|
|
rv = ms3_readmsr (&msr, "data/reference-testdata-text.mseed3", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
CHECK_SUBSTREQ ((char *)msr->datasamples, textdata, strlen(textdata));
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* Float32 */
|
|
rv = ms3_readmsr (&msr, "data/reference-testdata-float32.mseed3", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
CHECK (!cmpfloats ((float *)msr->datasamples, fsinedata, msr->numsamples), "Decoded sample mismatch, float32");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* Float64/double */
|
|
rv = ms3_readmsr (&msr, "data/reference-testdata-float64.mseed3", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
CHECK (!cmpdoubles ((double *)msr->datasamples, dsinedata, msr->numsamples), "Decoded sample mismatch, float64");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* Int16 */
|
|
rv = ms3_readmsr (&msr, "data/reference-testdata-int16.mseed3", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
CHECK (!cmpint32s ((int32_t *)msr->datasamples, sinedata, msr->numsamples), "Decoded sample mismatch, int16");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* Int32 */
|
|
rv = ms3_readmsr (&msr, "data/reference-testdata-int32.mseed3", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
CHECK (!cmpint32s ((int32_t *)msr->datasamples, sinedata, msr->numsamples), "Decoded sample mismatch, int32");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* Steim-1 big endian */
|
|
rv = ms3_readmsr (&msr, "data/reference-testdata-steim1.mseed3", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
CHECK (!cmpint32s ((int32_t *)msr->datasamples, sinedata, msr->numsamples), "Decoded sample mismatch, Steim-1");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* Steim-2 big endian */
|
|
rv = ms3_readmsr (&msr, "data/reference-testdata-steim2.mseed3", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
CHECK (!cmpint32s ((int32_t *)msr->datasamples, sinedata, msr->numsamples), "Decoded sample mismatch, Steim-2");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
}
|
|
|
|
TEST (read, v2_encodings)
|
|
{
|
|
MS3Record *msr = NULL;
|
|
uint32_t flags = MSF_UNPACKDATA; /* Set data decode/unpack flag */
|
|
int32_t sinedata[SINE_DATA_SAMPLES];
|
|
double dsinedata[SINE_DATA_SAMPLES];
|
|
float *float32s;
|
|
int32_t *int32s;
|
|
int rv;
|
|
int idx;
|
|
|
|
/* Create integer and double sine data sets */
|
|
for (idx = 0; idx < SINE_DATA_SAMPLES; idx++)
|
|
{
|
|
sinedata[idx] = (int32_t)(fsinedata[idx]);
|
|
dsinedata[idx] = (double)(fsinedata[idx]);
|
|
}
|
|
|
|
/* Text */
|
|
rv = ms3_readmsr (&msr, "data/reference-testdata-text.mseed2", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
CHECK_SUBSTREQ ((char *)msr->datasamples, textdata, strlen(textdata));
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* CDSN */
|
|
rv = ms3_readmsr (&msr, "data/testdata-encoding-CDSN.mseed2", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
/* Test first 4 decoded sample values */
|
|
int32s = (int32_t *)msr->datasamples;
|
|
CHECK (int32s[0] == -96, "Decoded sample value mismatch");
|
|
CHECK (int32s[1] == -87, "Decoded sample value mismatch");
|
|
CHECK (int32s[2] == -100, "Decoded sample value mismatch");
|
|
CHECK (int32s[3] == -128, "Decoded sample value mismatch");
|
|
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* DWWSSN */
|
|
rv = ms3_readmsr (&msr, "data/testdata-encoding-DWWSSN.mseed2", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
/* Test first 4 decoded sample values */
|
|
int32s = (int32_t *)msr->datasamples;
|
|
CHECK (int32s[0] == 6, "Decoded sample value mismatch");
|
|
CHECK (int32s[1] == 5, "Decoded sample value mismatch");
|
|
CHECK (int32s[2] == 1, "Decoded sample value mismatch");
|
|
CHECK (int32s[3] == -9, "Decoded sample value mismatch");
|
|
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* SRO */
|
|
rv = ms3_readmsr (&msr, "data/testdata-encoding-SRO.mseed2", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
/* Test first 4 decoded sample values */
|
|
int32s = (int32_t *)msr->datasamples;
|
|
CHECK (int32s[0] == 39, "Decoded sample value mismatch");
|
|
CHECK (int32s[1] == 42, "Decoded sample value mismatch");
|
|
CHECK (int32s[2] == 32, "Decoded sample value mismatch");
|
|
CHECK (int32s[3] == 1, "Decoded sample value mismatch");
|
|
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* GEOSCOPE */
|
|
rv = ms3_readmsr (&msr, "data/testdata-encoding-GEOSCOPE-16bit-3exp-encoded.mseed2", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
/* Test first 4 decoded sample values */
|
|
float32s = (float *)msr->datasamples;
|
|
CHECK (float32s[0] == -1.0625, "Decoded sample value mismatch");
|
|
CHECK (float32s[1] == -1.078125, "Decoded sample value mismatch");
|
|
CHECK (float32s[2] == -1.078125, "Decoded sample value mismatch");
|
|
CHECK (float32s[3] == -1.078125, "Decoded sample value mismatch");
|
|
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* Float32 */
|
|
rv = ms3_readmsr (&msr, "data/reference-testdata-float32.mseed2", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
CHECK (!cmpfloats ((float *)msr->datasamples, fsinedata, msr->numsamples), "Decoded sample mismatch, float32");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* Float64/double */
|
|
rv = ms3_readmsr (&msr, "data/reference-testdata-float64.mseed2", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
CHECK (!cmpdoubles ((double *)msr->datasamples, dsinedata, msr->numsamples), "Decoded sample mismatch, float64");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* Int16 */
|
|
rv = ms3_readmsr (&msr, "data/reference-testdata-int16.mseed2", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
CHECK (!cmpint32s ((int32_t *)msr->datasamples, sinedata, msr->numsamples), "Decoded sample mismatch, int16");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* Int32 */
|
|
rv = ms3_readmsr (&msr, "data/reference-testdata-int32.mseed2", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
CHECK (!cmpint32s ((int32_t *)msr->datasamples, sinedata, msr->numsamples), "Decoded sample mismatch, int32");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* Steim-1 big endian */
|
|
rv = ms3_readmsr (&msr, "data/reference-testdata-steim1.mseed2", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
CHECK (!cmpint32s ((int32_t *)msr->datasamples, sinedata, msr->numsamples), "Decoded sample mismatch, Steim-1");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* Steim-1 little endian */
|
|
rv = ms3_readmsr (&msr, "data/reference-testdata-steim1-LE.mseed2", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
CHECK (!cmpint32s ((int32_t *)msr->datasamples, sinedata, msr->numsamples), "Decoded sample mismatch, Steim-1 LE");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* Steim-2 big endian */
|
|
rv = ms3_readmsr (&msr, "data/reference-testdata-steim2.mseed2", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
CHECK (!cmpint32s ((int32_t *)msr->datasamples, sinedata, msr->numsamples), "Decoded sample mismatch, Steim-2");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* Steim-2 little endian */
|
|
rv = ms3_readmsr (&msr, "data/reference-testdata-steim2-LE.mseed2", flags, 0);
|
|
CHECK (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
REQUIRE (msr != NULL, "ms3_readmsr() did not populate 'msr'");
|
|
REQUIRE (msr->datasamples != NULL, "ms3_readmsr() did not populate 'msr->datasamples'");
|
|
|
|
CHECK (!cmpint32s ((int32_t *)msr->datasamples, sinedata, msr->numsamples), "Decoded sample mismatch, Steim-2 LE");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
}
|
|
|
|
TEST (read, byterange)
|
|
{
|
|
MS3Record *msr = NULL;
|
|
nstime_t nstime;
|
|
uint32_t flags = MSF_UNPACKDATA;
|
|
int rv;
|
|
|
|
nstime = ms_timestr2nstime ("2010-02-27T06:51:04.069539Z");
|
|
|
|
/* Set flag to parse byte ranges from path names */
|
|
flags |= MSF_PNAMERANGE;
|
|
|
|
/* Read byte range 9428-9967 from V3 format file */
|
|
rv = ms3_readmsr (&msr, "data/testdata-oneseries-mixedlengths-mixedorder.mseed3@9428-9967", flags, 0);
|
|
REQUIRE (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
CHECK (msr->numsamples == 112, "Byte range read, unexpected number of decoded samples");
|
|
CHECK (msr->starttime == nstime, "Byte range read, unexpected record start time");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* Read byte range 9428-9967 from V2 format file */
|
|
rv = ms3_readmsr (&msr, "data/testdata-oneseries-mixedlengths-mixedorder.mseed2@9344-9855", flags, 0);
|
|
REQUIRE (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
CHECK (msr->numsamples == 112, "Byte range read, unexpected number of decoded samples");
|
|
CHECK (msr->starttime == nstime, "Byte range read, unexpected record start time");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
}
|
|
|
|
TEST (read, selection)
|
|
{
|
|
MS3Record *msr = NULL;
|
|
MS3FileParam *msfp = NULL;
|
|
MS3Selections *selections = NULL;
|
|
nstime_t nstime;
|
|
uint32_t flags = MSF_UNPACKDATA;
|
|
int rv;
|
|
|
|
nstime = ms_timestr2nstime ("2010-02-27T06:50:00.069539Z");
|
|
|
|
rv = ms3_addselect (&selections, "FDSN:IU_COLA_*_L_H_Z", NSTUNSET, NSTUNSET, 0);
|
|
REQUIRE (rv == 0, "ms3_addselect() returned an unexpected error");
|
|
|
|
rv = ms3_readmsr_selection (&msfp, &msr, "data/testdata-3channel-signal.mseed3", flags, selections, 0);
|
|
REQUIRE (rv == MS_NOERROR, "ms3_readmsr_selection() did not return expected MS_NOERROR");
|
|
|
|
CHECK (msr->numsamples == 112, "Selection read, unexpected number of decoded samples");
|
|
CHECK (msr->starttime == nstime, "Selection read, unexpected record start time");
|
|
|
|
ms3_readmsr_selection(&msfp, &msr, NULL, flags, NULL, 0);
|
|
ms3_freeselections (selections);
|
|
}
|
|
|
|
TEST (read, oddball)
|
|
{
|
|
MS3Record *msr = NULL;
|
|
nstime_t nstime;
|
|
uint32_t flags = MSF_UNPACKDATA;
|
|
int32_t *int32s = NULL;
|
|
char timestr[50] = {0};
|
|
int rv;
|
|
|
|
/* Suppress error and warning messages by accumulating them */
|
|
ms_rloginit (NULL, NULL, NULL, NULL, 10);
|
|
|
|
/* Detection record: includes an event detection and no other data */
|
|
rv = ms3_readmsr (&msr, "data/testdata-detection.record.mseed2", flags, 0);
|
|
REQUIRE (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
|
|
CHECK (mseh_exists (msr, "/FDSN/Event/Detection/0"), "Expected /FDSN/Event/Detection does not exist");
|
|
mseh_get_string (msr, "/FDSN/Event/Detection/0/OnsetTime", timestr, sizeof(timestr));
|
|
CHECK_STREQ (timestr, "2004-07-28T20:28:06.185000Z");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* Unapplied time correction (format version 2) */
|
|
rv = ms3_readmsr (&msr, "data/testdata-unapplied-timecorrection.mseed2", flags, 0);
|
|
REQUIRE (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
|
|
nstime = ms_timestr2nstime ("2003-05-29T02:13:23.043400Z");
|
|
|
|
CHECK (msr->starttime == nstime, "Record start time is not expected, corrected value");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* No Blockette 1000 with Steim-1 assumption needed (format version 2) */
|
|
rv = ms3_readmsr (&msr, "data/testdata-no-blockette1000-steim1.mseed2", flags, 0);
|
|
REQUIRE (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
|
|
CHECK (msr->samplecnt == 3632, "Bare SEED data record (no B1000) incorrect sample count");
|
|
CHECK (msr->numsamples == 3632, "Bare SEED data record (no B1000) incorrect decoded sample count");
|
|
int32s = (int32_t *)msr->datasamples;
|
|
CHECK (int32s[3628] == 309, "Decoded sample value mismatch");
|
|
CHECK (int32s[3629] == 211, "Decoded sample value mismatch");
|
|
CHECK (int32s[3630] == 117, "Decoded sample value mismatch");
|
|
CHECK (int32s[3631] == 26, "Decoded sample value mismatch");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* Invalid blockette chain (format version 2). One could argue these should not be readable. */
|
|
rv = ms3_readmsr (&msr, "data/testdata-invalid-blockette-offsets.mseed2", flags, 0);
|
|
REQUIRE (rv == MS_NOERROR, "ms3_readmsr() did not return expected MS_NOERROR");
|
|
ms3_readmsr (&msr, NULL, flags, 0);
|
|
}
|
|
|
|
TEST (read, error)
|
|
{
|
|
MS3Record *msr = NULL;
|
|
uint32_t flags = 0;
|
|
int rv;
|
|
|
|
/* Suppress error and warning messages by accumulating them */
|
|
ms_rloginit (NULL, NULL, NULL, NULL, 10);
|
|
|
|
/* No MS3Record */
|
|
rv = ms3_readmsr (NULL, NULL, flags, 0);
|
|
CHECK (rv == MS_GENERROR, "ms3_readmsr() did not return expected MS_GENERROR with msr==NULL");
|
|
ms3_readmsr(&msr, NULL, flags, 0);
|
|
|
|
/* Non-existent file */
|
|
rv = ms3_readmsr (&msr, "no/such/file.data", flags, 0);
|
|
CHECK (rv == MS_GENERROR, "ms3_readmsr() did not return expected MS_GENERROR for file not found");
|
|
ms3_readmsr (&msr, NULL, flags, 0);
|
|
|
|
/* Not miniSEED */
|
|
rv = ms3_readmsr (&msr, "Makefile", flags, 0);
|
|
CHECK (rv == MS_NOTSEED, "ms3_readmsr() did not return expected MS_NOTSEED for non-SEED file");
|
|
ms3_readmsr (&msr, NULL, flags, 0);
|
|
}
|