blob: 0189e2b78525433584b239ea519511954b4e485b [file] [log] [blame]
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
[$default byte_order: "LittleEndian"]
[(cpp) namespace: "emboss::test"]
struct Message:
0 [+1] UInt header_length (h)
1 [+1] UInt message_length (m)
2 [+h-2] UInt:8[h-2] padding
h [+m] UInt:8[m] message
h+m [+4] UInt crc32
struct Image:
0 [+1] UInt size
1 [+3*5*size] UInt:8[3][5][size] pixels
struct TwoRegions:
# Fields are listed in reverse order to exercise a specific part of
# header_generator.py.
3 [+1] UInt b_end
2 [+1] UInt b_start
1 [+1] UInt a_size
0 [+1] UInt a_start
a_start [+a_size] UInt:8[a_size] region_a
b_start [+b_end-b_start] UInt:8[b_end-b_start] region_b
struct MultipliedSize:
0 [+1] UInt width (w)
1 [+1] UInt height (h)
# Used to test that w*h is not performed with 8-bit arithmetic.
2 [+w*h] UInt:8[w*h] data
struct NegativeTermsInSizes:
0 [+1] UInt a
1 [+1] UInt b
2 [+1] UInt c
# Used to test that the pruning logic for Size() doesn't miss anything.
3 [+a-b-3] UInt:8[a-b-3] a_minus_b
3 [+a-2*b-3] UInt:8[a-2*b-3] a_minus_2b
3 [+a-b-c-3] UInt:8[a-b-c-3] a_minus_b_minus_c
3 [+7-a] UInt:8[7-a] ten_minus_a
3 [+a-2*c-3] UInt:8[a-2*c-3] a_minus_2c
3 [+a-c-3] UInt:8[a-c-3] a_minus_c
struct NegativeTermInLocation:
0 [+1] UInt a
10-a [+1] UInt b
struct ChainedSize:
0 [+1] UInt a
a [+1] UInt b
b [+1] UInt c
c [+1] UInt d
struct FinalFieldOverlaps:
0 [+1] UInt a
1 [+4] UInt b
3 [+2] UInt c
struct DynamicFinalFieldOverlaps:
0 [+1] UInt a
9 [+1] UInt b
a [+2] UInt c
a+1 [+1] UInt d
struct DynamicFieldDependsOnLaterField:
a+1 [+1] UInt b
4 [+1] UInt a
struct DynamicFieldDoesNotAffectSize:
0 [+1] UInt a
a [+1] UInt b
255 [+1] UInt c