blob: 0c17bab1881faa30a11a9a65cb085be45b0e0939 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
success("BoolTrue") {
value = MyBool {
value: true,
},
bytes = {
v1 = [
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("BoolFalse") {
value = MyBool {
value: false,
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("ByteZero") {
value = MyByte {
value: 0,
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Byte255") {
value = MyByte {
value: 255,
},
bytes = {
v1 = [
0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Int8Min") {
value = MyInt8 {
value: -128,
},
bytes = {
v1 = [
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Int8Zero") {
value = MyInt8 {
value: 0,
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Int8Max") {
value = MyInt8 {
value: 127,
},
bytes = {
v1 = [
0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Int16Min") {
value = MyInt16 {
value: -32768,
},
bytes = {
v1 = [
0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Int16Zero") {
value = MyInt16 {
value: 0,
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Int16Max") {
value = MyInt16 {
value: 32767,
},
bytes = {
v1 = [
0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Int32Min") {
value = MyInt32 {
value: -2147483648,
},
bytes = {
v1 = [
0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,
],
},
}
success("Int32Zero") {
value = MyInt32 {
value: 0,
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Int32Max") {
value = MyInt32 {
value: 2147483647,
},
bytes = {
v1 = [
0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,
],
},
}
success("Int64Min") {
value = MyInt64 {
value: -9223372036854775808,
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
],
},
}
success("Int64Zero") {
value = MyInt64 {
value: 0,
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Int64Max") {
value = MyInt64 {
value: 9223372036854775807,
},
bytes = {
v1 = [
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
],
},
}
success("Uint8Zero") {
value = MyUint8 {
value: 0,
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Uint8Max") {
value = MyUint8 {
value: 255,
},
bytes = {
v1 = [
0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Uint16Zero") {
value = MyUint16 {
value: 0,
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Uint16Max") {
value = MyUint16 {
value: 65535,
},
bytes = {
v1 = [
0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Uint32Zero") {
value = MyUint32 {
value: 0,
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Uint32Max") {
value = MyUint32 {
value: 4294967295,
},
bytes = {
v1 = [
0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
],
},
}
success("Uint64Zero") {
value = MyUint64 {
value: 0,
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Uint64Max") {
value = MyUint64 {
value: 18446744073709551615,
},
bytes = {
v1 = [
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
],
},
}
// Note: floats are tricky and there may be failures do to cpu architecture
// and similar reasons.
success("Float32PositiveZero") {
value = MyFloat32 {
value: 0.0,
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Float32NegativeZero") {
value = MyFloat32 {
value: raw_float(0b1_00000000_00000000000000000000000),
},
bytes = {
v1 = [
0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,
],
},
}
success("Float32PositiveOne") {
value = MyFloat32 {
value: 1.0,
},
bytes = {
v1 = [
0x00,0x00,0x80,0x3f,0x00,0x00,0x00,0x00,
],
},
}
success("Float32NegativeOne") {
value = MyFloat32 {
value: -1.0,
},
bytes = {
v1 = [
0x00,0x00,0x80,0xbf,0x00,0x00,0x00,0x00,
],
},
}
success("Float32Min") {
value = MyFloat32 {
value: -3.40282346638528859811704183484516925440e+38,
},
bytes = {
v1 = [
0xff,0xff,0x7f,0xff,0x00,0x00,0x00,0x00,
],
},
}
success("Float32Max") {
value = MyFloat32 {
value: 3.40282346638528859811704183484516925440e+38,
},
bytes = {
v1 = [
0xff,0xff,0x7f,0x7f,0x00,0x00,0x00,0x00,
],
},
}
success("Float32SmallestNormalizedPositive") {
value = MyFloat32 {
value: 1.1754943508222875e-38,
},
bytes = {
v1 = [
0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Float32SmallestNormalizedNegative") {
value = MyFloat32 {
value: -1.1754943508222875e-38,
},
bytes = {
v1 = [
0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,
],
},
}
success("Float32LargestDenormalizedPositive") {
value = MyFloat32 {
value: 1.1754942106924411e-38,
},
bytes = {
v1 = [
0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Float32LargestDenormalizedNegative") {
value = MyFloat32 {
value: -1.1754942106924411e-38,
},
bytes = {
v1 = [
0xff,0xff,0x7f,0x80,0x00,0x00,0x00,0x00,
],
},
}
success("Float32SmallestDenormalizedPositive") {
value = MyFloat32 {
value: 1.401298464324817e-45,
},
bytes = {
v1 = [
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Float32SmallestDenormalizedNegative") {
value = MyFloat32 {
value: -1.401298464324817e-45,
},
bytes = {
v1 = [
0x01,0x00,0x00,0x80,0x00,0x00,0x00,0x00,
],
},
}
success("Float32PositiveInfinity") {
value = MyFloat32 {
value: raw_float(0b0_11111111_00000000000000000000000),
},
bytes = {
v1 = [
0x00,0x00,0x80,0x7f,0x00,0x00,0x00,0x00,
],
},
}
success("Float32NegativeInfinity") {
value = MyFloat32 {
value: raw_float(0b1_11111111_00000000000000000000000),
},
bytes = {
v1 = [
0x00,0x00,0x80,0xff,0x00,0x00,0x00,0x00,
],
},
}
// No decode_success because NaN != NaN.
encode_success("Float32QuietNaN") {
value = MyFloat32 {
value: raw_float(0b0_11111111_10000000000000000000000),
},
bytes = {
v1 = [
0x00,0x00,0xc0,0x7f,0x00,0x00,0x00,0x00,
],
},
}
// No decode_success because NaN != NaN.
encode_success("Float32SignallingNaN") {
bindings_denylist = [dart],
value = MyFloat32 {
value: raw_float(0b0_11111111_01000000000000000000000),
},
bytes = {
v1 = [
0x00,0x00,0xa0,0x7f,0x00,0x00,0x00,0x00,
],
},
}
// No decode_success because NaN != NaN.
encode_success("Float32SignallingNaNCovertedToQuiet") {
// Dart only has double-precision floats. For FIDL float32, the bindings
// encode using ByteData.setFloat32 (takes a double) and decode using
// BytePart.getFloat32 (returns a double). For NaNs, these functions
// truncate/zero-extend the mantissa AND SET ITS MOST SIGNIFICANT BIT (the
// quiet bit). This effectively means that float32 signalling NaNs do not
// exist in Dart; they always get converted to quiet NaNs on encode/decode.
bindings_allowlist = [dart],
value = MyFloat32 {
value: raw_float(0b0_11111111_01000000000000000000000),
},
bytes = {
v1 = [
// 0xe0 instead of 0xa0: quiet bit set
0x00,0x00,0xe0,0x7f,0x00,0x00,0x00,0x00,
],
},
}
success("Float64PositiveZero") {
value = MyFloat64 {
value: 0.0,
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Float64NegativeZero") {
value = MyFloat64 {
value: raw_float(0b1_00000000000_0000000000000000000000000000000000000000000000000000),
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
],
},
}
success("Float64PositiveOne") {
value = MyFloat64 {
value: 1.0,
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f,
],
},
}
success("Float64NegativeOne") {
value = MyFloat64 {
value: -1.0,
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xbf,
],
},
}
success("Float64Min") {
value = MyFloat64 {
value: -1.797693134862315708145274237317043567981e+308,
},
bytes = {
v1 = [
0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,
],
},
}
success("Float64Max") {
value = MyFloat64 {
value: 1.797693134862315708145274237317043567981e+308,
},
bytes = {
v1 = [
0xff,0xff,0xff,0xff,0xff,0xff,0xef,0x7f,
],
},
}
success("Float64SmallestNormalizedPositive") {
value = MyFloat64 {
value: 2.2250738585072014e-308,
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,
],
},
}
success("Float64SmallestNormalizedNegative") {
value = MyFloat64 {
value: -2.2250738585072014e-308,
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x80,
],
},
}
success("Float64LargestDenormalizedPositive") {
value = MyFloat64 {
value: 2.225073858507201e-308,
},
bytes = {
v1 = [
0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
],
},
}
success("Float64LargestDenormalizedNegative") {
value = MyFloat64 {
value: -2.225073858507201e-308,
},
bytes = {
v1 = [
0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x80,
],
},
}
success("Float64SmallestDenormalizedPositive") {
value = MyFloat64 {
value: 5.0e-324
},
bytes = {
v1 = [
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
],
},
}
success("Float64SmallestDenormalizedNegative") {
value = MyFloat64 {
value: -5.0e-324
},
bytes = {
v1 = [
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
],
},
}
success("Float64PositiveInfinity") {
value = MyFloat64 {
value: raw_float(0b0_11111111111_0000000000000000000000000000000000000000000000000000),
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x7f,
],
},
}
success("Float64NegativeInfinity") {
value = MyFloat64 {
value: raw_float(0b1_11111111111_0000000000000000000000000000000000000000000000000000),
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
],
},
}
// No decode_success because NaN != NaN.
encode_success("Float64QuietNaN") {
value = MyFloat64 {
value: raw_float(0b0_11111111111_1000000000000000000000000000000000000000000000000000),
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x7f,
],
},
}
// No decode_success because NaN != NaN.
encode_success("Float64SignallingNaN") {
value = MyFloat64 {
value: raw_float(0b0_11111111111_0100000000000000000000000000000000000000000000000000),
},
bytes = {
v1 = [
0x00,0x00,0x00,0x00,0x00,0x00,0xf4,0x7f,
],
},
}