1*99e0aae7SDavid Rees# Copyright 2019 Google LLC 2*99e0aae7SDavid Rees# 3*99e0aae7SDavid Rees# Licensed under the Apache License, Version 2.0 (the "License"); 4*99e0aae7SDavid Rees# you may not use this file except in compliance with the License. 5*99e0aae7SDavid Rees# You may obtain a copy of the License at 6*99e0aae7SDavid Rees# 7*99e0aae7SDavid Rees# https://www.apache.org/licenses/LICENSE-2.0 8*99e0aae7SDavid Rees# 9*99e0aae7SDavid Rees# Unless required by applicable law or agreed to in writing, software 10*99e0aae7SDavid Rees# distributed under the License is distributed on an "AS IS" BASIS, 11*99e0aae7SDavid Rees# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*99e0aae7SDavid Rees# See the License for the specific language governing permissions and 13*99e0aae7SDavid Rees# limitations under the License. 14*99e0aae7SDavid Rees 15*99e0aae7SDavid Rees[$default byte_order: "LittleEndian"] 16*99e0aae7SDavid Rees[(cpp) namespace: "emboss::test"] 17*99e0aae7SDavid Rees 18*99e0aae7SDavid Rees 19*99e0aae7SDavid Reesstruct Message: 20*99e0aae7SDavid Rees 0 [+1] UInt header_length (h) 21*99e0aae7SDavid Rees 1 [+1] UInt message_length (m) 22*99e0aae7SDavid Rees 2 [+h-2] UInt:8[h-2] padding 23*99e0aae7SDavid Rees h [+m] UInt:8[m] message 24*99e0aae7SDavid Rees h+m [+4] UInt crc32 25*99e0aae7SDavid Rees 26*99e0aae7SDavid Rees 27*99e0aae7SDavid Reesstruct Image: 28*99e0aae7SDavid Rees 0 [+1] UInt size 29*99e0aae7SDavid Rees 1 [+3*5*size] UInt:8[3][5][size] pixels 30*99e0aae7SDavid Rees 31*99e0aae7SDavid Rees 32*99e0aae7SDavid Reesstruct TwoRegions: 33*99e0aae7SDavid Rees # Fields are listed in reverse order to exercise a specific part of 34*99e0aae7SDavid Rees # header_generator.py. 35*99e0aae7SDavid Rees 3 [+1] UInt b_end 36*99e0aae7SDavid Rees 2 [+1] UInt b_start 37*99e0aae7SDavid Rees 1 [+1] UInt a_size 38*99e0aae7SDavid Rees 0 [+1] UInt a_start 39*99e0aae7SDavid Rees a_start [+a_size] UInt:8[a_size] region_a 40*99e0aae7SDavid Rees b_start [+b_end-b_start] UInt:8[b_end-b_start] region_b 41*99e0aae7SDavid Rees 42*99e0aae7SDavid Rees 43*99e0aae7SDavid Reesstruct MultipliedSize: 44*99e0aae7SDavid Rees 0 [+1] UInt width (w) 45*99e0aae7SDavid Rees 1 [+1] UInt height (h) 46*99e0aae7SDavid Rees # Used to test that w*h is not performed with 8-bit arithmetic. 47*99e0aae7SDavid Rees 2 [+w*h] UInt:8[w*h] data 48*99e0aae7SDavid Rees 49*99e0aae7SDavid Rees 50*99e0aae7SDavid Reesstruct NegativeTermsInSizes: 51*99e0aae7SDavid Rees 0 [+1] UInt a 52*99e0aae7SDavid Rees 1 [+1] UInt b 53*99e0aae7SDavid Rees 2 [+1] UInt c 54*99e0aae7SDavid Rees # Used to test that the pruning logic for Size() doesn't miss anything. 55*99e0aae7SDavid Rees 3 [+a-b-3] UInt:8[a-b-3] a_minus_b 56*99e0aae7SDavid Rees 3 [+a-2*b-3] UInt:8[a-2*b-3] a_minus_2b 57*99e0aae7SDavid Rees 3 [+a-b-c-3] UInt:8[a-b-c-3] a_minus_b_minus_c 58*99e0aae7SDavid Rees 3 [+7-a] UInt:8[7-a] ten_minus_a 59*99e0aae7SDavid Rees 3 [+a-2*c-3] UInt:8[a-2*c-3] a_minus_2c 60*99e0aae7SDavid Rees 3 [+a-c-3] UInt:8[a-c-3] a_minus_c 61*99e0aae7SDavid Rees 62*99e0aae7SDavid Rees 63*99e0aae7SDavid Reesstruct NegativeTermInLocation: 64*99e0aae7SDavid Rees 0 [+1] UInt a 65*99e0aae7SDavid Rees 10-a [+1] UInt b 66*99e0aae7SDavid Rees 67*99e0aae7SDavid Rees 68*99e0aae7SDavid Reesstruct ChainedSize: 69*99e0aae7SDavid Rees 0 [+1] UInt a 70*99e0aae7SDavid Rees a [+1] UInt b 71*99e0aae7SDavid Rees b [+1] UInt c 72*99e0aae7SDavid Rees c [+1] UInt d 73*99e0aae7SDavid Rees 74*99e0aae7SDavid Rees 75*99e0aae7SDavid Reesstruct FinalFieldOverlaps: 76*99e0aae7SDavid Rees 0 [+1] UInt a 77*99e0aae7SDavid Rees 1 [+4] UInt b 78*99e0aae7SDavid Rees 3 [+2] UInt c 79*99e0aae7SDavid Rees 80*99e0aae7SDavid Rees 81*99e0aae7SDavid Reesstruct DynamicFinalFieldOverlaps: 82*99e0aae7SDavid Rees 0 [+1] UInt a 83*99e0aae7SDavid Rees 9 [+1] UInt b 84*99e0aae7SDavid Rees a [+2] UInt c 85*99e0aae7SDavid Rees a+1 [+1] UInt d 86*99e0aae7SDavid Rees 87*99e0aae7SDavid Rees 88*99e0aae7SDavid Reesstruct DynamicFieldDependsOnLaterField: 89*99e0aae7SDavid Rees a+1 [+1] UInt b 90*99e0aae7SDavid Rees 4 [+1] UInt a 91*99e0aae7SDavid Rees 92*99e0aae7SDavid Rees 93*99e0aae7SDavid Reesstruct DynamicFieldDoesNotAffectSize: 94*99e0aae7SDavid Rees 0 [+1] UInt a 95*99e0aae7SDavid Rees a [+1] UInt b 96*99e0aae7SDavid Rees 255 [+1] UInt c 97