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-- Test structs for 8, 16, 32, and 64 bit UInts and enums. 16*99e0aae7SDavid Rees 17*99e0aae7SDavid Rees[$default byte_order: "LittleEndian"] 18*99e0aae7SDavid Rees[(cpp) namespace: "emboss::test"] 19*99e0aae7SDavid Rees 20*99e0aae7SDavid Rees 21*99e0aae7SDavid Reesstruct Sizes: 22*99e0aae7SDavid Rees 0 [+1] UInt one_byte 23*99e0aae7SDavid Rees 1 [+2] UInt two_byte 24*99e0aae7SDavid Rees 3 [+3] UInt three_byte 25*99e0aae7SDavid Rees 6 [+4] UInt four_byte 26*99e0aae7SDavid Rees 10 [+5] UInt five_byte 27*99e0aae7SDavid Rees 15 [+6] UInt six_byte 28*99e0aae7SDavid Rees 21 [+7] UInt seven_byte 29*99e0aae7SDavid Rees 28 [+8] UInt eight_byte 30*99e0aae7SDavid Rees 31*99e0aae7SDavid Rees 32*99e0aae7SDavid Reesstruct BigEndianSizes: 33*99e0aae7SDavid Rees [$default byte_order: "BigEndian"] 34*99e0aae7SDavid Rees 0 [+1] UInt one_byte 35*99e0aae7SDavid Rees 1 [+2] UInt two_byte 36*99e0aae7SDavid Rees 3 [+3] UInt three_byte 37*99e0aae7SDavid Rees 6 [+4] UInt four_byte 38*99e0aae7SDavid Rees 10 [+5] UInt five_byte 39*99e0aae7SDavid Rees 15 [+6] UInt six_byte 40*99e0aae7SDavid Rees 21 [+7] UInt seven_byte 41*99e0aae7SDavid Rees 28 [+8] UInt eight_byte 42*99e0aae7SDavid Rees 43*99e0aae7SDavid Rees 44*99e0aae7SDavid Reesstruct AlternatingEndianSizes: 45*99e0aae7SDavid Rees [$default byte_order: "BigEndian"] 46*99e0aae7SDavid Rees 0 [+1] UInt one_byte [byte_order: "BigEndian"] 47*99e0aae7SDavid Rees 1 [+2] UInt two_byte [byte_order: "LittleEndian"] 48*99e0aae7SDavid Rees 3 [+3] UInt three_byte # default to "BigEndian" 49*99e0aae7SDavid Rees 6 [+4] UInt four_byte [byte_order: "LittleEndian"] 50*99e0aae7SDavid Rees 10 [+5] UInt five_byte # default to "BigEndian" 51*99e0aae7SDavid Rees 15 [+6] UInt six_byte [byte_order: "LittleEndian"] 52*99e0aae7SDavid Rees 21 [+7] UInt seven_byte [byte_order: "BigEndian"] 53*99e0aae7SDavid Rees 28 [+8] UInt eight_byte [byte_order: "LittleEndian"] 54*99e0aae7SDavid Rees 55*99e0aae7SDavid Rees 56*99e0aae7SDavid Reesstruct EnumSizes: 57*99e0aae7SDavid Rees 0 [+1] Enum one_byte 58*99e0aae7SDavid Rees 1 [+2] Enum two_byte 59*99e0aae7SDavid Rees 3 [+3] Enum three_byte 60*99e0aae7SDavid Rees 6 [+4] Enum four_byte 61*99e0aae7SDavid Rees 10 [+5] Enum five_byte 62*99e0aae7SDavid Rees 15 [+6] Enum six_byte 63*99e0aae7SDavid Rees 21 [+7] Enum seven_byte 64*99e0aae7SDavid Rees 28 [+8] Enum eight_byte 65*99e0aae7SDavid Rees 66*99e0aae7SDavid Rees 67*99e0aae7SDavid Reesstruct ExplicitlySizedEnumSizes: 68*99e0aae7SDavid Rees 0 [+1] ExplicitlySizedEnum one_byte 69*99e0aae7SDavid Rees 1 [+2] ExplicitlySizedEnum two_byte 70*99e0aae7SDavid Rees 3 [+3] ExplicitlySizedEnum three_byte 71*99e0aae7SDavid Rees 6 [+4] bits: 72*99e0aae7SDavid Rees 0 [+28] ExplicitlySizedEnum three_and_a_half_byte 73*99e0aae7SDavid Rees 74*99e0aae7SDavid Rees 75*99e0aae7SDavid Reesenum Enum: 76*99e0aae7SDavid Rees VALUE1 = 1 77*99e0aae7SDavid Rees VALUE10 = 10 78*99e0aae7SDavid Rees VALUE100 = 100 79*99e0aae7SDavid Rees VALUE1000 = 1000 80*99e0aae7SDavid Rees VALUE10000 = 10000 81*99e0aae7SDavid Rees VALUE100000 = 100000 82*99e0aae7SDavid Rees VALUE1000000 = 1000000 83*99e0aae7SDavid Rees VALUE10000000 = 10000000 84*99e0aae7SDavid Rees 85*99e0aae7SDavid Rees 86*99e0aae7SDavid Reesenum ExplicitlySizedEnum: 87*99e0aae7SDavid Rees [maximum_bits: 28] 88*99e0aae7SDavid Rees VALUE1 = 1 89*99e0aae7SDavid Rees VALUE10 = 10 90*99e0aae7SDavid Rees VALUE100 = 100 91*99e0aae7SDavid Rees VALUE1000 = 1000 92*99e0aae7SDavid Rees VALUE10000 = 10000 93*99e0aae7SDavid Rees VALUE100000 = 100000 94*99e0aae7SDavid Rees VALUE1000000 = 1000000 95*99e0aae7SDavid Rees VALUE10000000 = 10000000 96*99e0aae7SDavid Rees 97*99e0aae7SDavid Rees 98*99e0aae7SDavid Reesstruct ArraySizes: 99*99e0aae7SDavid Rees 0 [+2] UInt:8[2] one_byte 100*99e0aae7SDavid Rees 2 [+4] UInt:16[2] two_byte 101*99e0aae7SDavid Rees 6 [+6] UInt:24[2] three_byte 102*99e0aae7SDavid Rees 12 [+8] UInt:32[2] four_byte 103*99e0aae7SDavid Rees 20 [+10] UInt:40[2] five_byte 104*99e0aae7SDavid Rees 30 [+12] UInt:48[2] six_byte 105*99e0aae7SDavid Rees 42 [+14] UInt:56[2] seven_byte 106*99e0aae7SDavid Rees 56 [+16] UInt:64[2] eight_byte 107