1% test segyspec
2
3% preconditions
4filename = 'test-data/small.sgy';
5assert(exist(filename,'file')==2);
6t0 = 1111.0;
7
8%% no such file
9no_such_filename = 'no-such-dir/no-such-file.sgy';
10assert(exist(no_such_filename,'file')~=2);
11try
12    spec = SegySpec(no_such_filename, TraceField.Inline3D, TraceField.Crossline3D, t0);
13    %should not reach here
14    assert(false);
15catch
16    %not actually needed...
17    assert(true);
18end
19
20%% Spec is created
21try
22    spec = SegySpec(filename, TraceField.Inline3D, TraceField.Crossline3D, t0);
23catch
24    %nothing should be caught
25    assert(false);
26end
27
28%% IBM_FLOAT_4_BYTE
29spec = SegySpec(filename, TraceField.Inline3D, TraceField.Crossline3D, t0);
30assert(spec.sample_format == SegySampleFormat.IBM_FLOAT_4_BYTE);
31
32%% filename is set
33spec = SegySpec(filename, TraceField.Inline3D, TraceField.Crossline3D, t0);
34assert(strcmp(spec.filename,filename));
35
36%% trace_sorting_format
37spec = SegySpec(filename, TraceField.Inline3D, TraceField.Crossline3D, t0);
38assert(spec.trace_sorting_format == TraceSortingFormat.iline);
39
40%%offset_count
41spec = SegySpec(filename, TraceField.Inline3D, TraceField.Crossline3D, t0);
42assert(length(spec.offset_count) == 1);
43
44%% sample_indexes
45spec = SegySpec(filename, TraceField.Inline3D, TraceField.Crossline3D, t0);
46sample_indexes = spec.sample_indexes;
47assert(length(sample_indexes) == 50);
48
49for i = 1:length(sample_indexes)
50    t = t0 + (i-1) * 4;
51    assert(sample_indexes(i) == t);
52end
53
54
55%% first_trace_pos
56spec = SegySpec(filename, TraceField.Inline3D, TraceField.Crossline3D, t0);
57first_trace_pos = spec.first_trace_pos;
58assert(first_trace_pos == 3600);
59
60%% il_stride
61spec = SegySpec(filename, TraceField.Inline3D, TraceField.Crossline3D, t0);
62il_stride = spec.il_stride;
63assert(il_stride == 1);
64
65%% xl_stride
66spec = SegySpec(filename, TraceField.Inline3D, TraceField.Crossline3D, t0);
67xl_stride = spec.xl_stride;
68assert(xl_stride == 5);
69
70%% xl_stride
71spec = SegySpec(filename, TraceField.Inline3D, TraceField.Crossline3D, t0);
72trace_bsize = spec.trace_bsize;
73assert(trace_bsize == 50*4);
74
75%% xline
76spec = SegySpec(filename, TraceField.Inline3D, TraceField.Crossline3D, t0);
77assert(length(spec.crossline_indexes)==5)
78for xl = spec.crossline_indexes'
79    assert(xl >= 20 && xl <= 24);
80end
81
82%% iline
83spec = SegySpec(filename, TraceField.Inline3D, TraceField.Crossline3D, t0);
84assert(length(spec.inline_indexes)==5)
85
86for il = spec.inline_indexes'
87    assert(il >= 1 && il <= 5);
88end
89