Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions pybufrkit/definitions/section1-2.json
Original file line number Diff line number Diff line change
Expand Up @@ -90,10 +90,11 @@
"as_property": true
},
{
"name": "second",
"nbits": 8,
"type": "uint",
"as_property": true
"name": "local_bytes",
"nbits": 0,
"type": "bytes",
"as_property": true,
"optional": true
}
]
}
58 changes: 58 additions & 0 deletions tests/test_optional_parameter_v2_even.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
from pybufrkit.decoder import Decoder
from pybufrkit.encoder import Encoder

data = [
[
b'BUFR',
0, # file length (will be calculated)
2
],
[0, # section length (will be calculated)
0, # master table
0, # centre
0, # sequence number
False, # has section 2 (no)
'0000000', # flag bits
6, # data category
0, # data local subcategory
11, # master table version
10, # local table version
25, # year
3, # month
25, # day
13, # hour
45, # min
b'localdata', # Extra bytes
],
[0, # section length (will be calculated)
'00000000', # reserved bits
1, # subsets
True, # is observation
False, # is compressed
'000000', # flag bits
# Definition follows
[]
],
[
0, # section length (will be calculated)
'00000000', # flag bits
[
[
] # flat data
]
],
[b'7777']
]


def test_optional_parameter_v2():
encoder = Encoder()
bufr_message = encoder.process(data)
print(bufr_message.serialized_bytes)
assert bufr_message.sections[1].section_length.value == 26
assert bufr_message.local_bytes.value == b'localdata'

decoder = Decoder()
decoded = decoder.process(bufr_message.serialized_bytes)
assert decoded.sections[1].section_length.value == 26
assert decoded.local_bytes.value == b'localdata'
58 changes: 58 additions & 0 deletions tests/test_optional_parameter_v2_odd.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
from pybufrkit.decoder import Decoder
from pybufrkit.encoder import Encoder

data = [
[
b'BUFR',
0, # file length (will be calculated)
2
],
[0, # section length (will be calculated)
0, # master table
0, # centre
0, # sequence number
False, # has section 2 (no)
'0000000', # flag bits
6, # data category
0, # data local subcategory
11, # master table version
10, # local table version
25, # year
3, # month
25, # day
13, # hour
45, # min
b'local_data', # Extra bytes
],
[0, # section length (will be calculated)
'00000000', # reserved bits
1, # subsets
True, # is observation
False, # is compressed
'000000', # flag bits
# Definition follows
[]
],
[
0, # section length (will be calculated)
'00000000', # flag bits
[
[
] # flat data
]
],
[b'7777']
]


def test_optional_parameter_v2():
encoder = Encoder()
bufr_message = encoder.process(data)
print(bufr_message.serialized_bytes)
assert bufr_message.sections[1].section_length.value == 28
assert bufr_message.local_bytes.value == b'local_data'

decoder = Decoder()
decoded = decoder.process(bufr_message.serialized_bytes)
assert decoded.sections[1].section_length.value == 28
assert decoded.local_bytes.value == b'local_data\x00'