| // 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("UnionWithBoundString") { |
| value = UnionWithBoundStringStruct { |
| v: UnionWithBoundString { |
| boundFiveStr: "abcd", |
| }, |
| }, |
| bytes = { |
| old = [ |
| tag 8:num(0), |
| size 8:num(4), |
| ptr 8:raw(0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff), |
| data 4:raw('a', 'b', 'c', 'd',), 4:padding, |
| ], |
| v1 = [ |
| ordinal 8:num(1), num_bytes 4:num(24), num_handles 4:num(0), |
| present 8:raw(0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff), |
| size 8:num(4), |
| ptr 8:raw(0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff), |
| data 4:raw('a', 'b', 'c', 'd',), 4:padding, |
| ], |
| }, |
| } |
| |
| encode_failure("UnionWithBoundString_ExceedsBounds") { |
| // TODO(fxb/37304) Enforce size bounds in rust |
| bindings_denylist = [rust], |
| value = UnionWithBoundStringStruct { |
| v: UnionWithBoundString { |
| boundFiveStr: "abcdef", |
| }, |
| }, |
| err = STRING_TOO_LONG, |
| } |
| |
| success("UnionMigration_SingleVariant") { |
| value = SingleVariantUnionStruct { |
| u: SingleVariantUnion { |
| x: 42, |
| }, |
| }, |
| bytes = { |
| old = [ |
| tag 4:num(0), x 4:num(42) |
| ], |
| v1 = [ |
| // primary object |
| // TOOD(fxb/39578) Change ordinal to 8:num(1) and remove padding. |
| ordinal 4:num(1), 4:padding, |
| num_bytes 4:num(8), num_handles 4:num(0), |
| present 8:raw(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF), |
| |
| // secondary object 1 |
| x 4:num(42), 4:padding, |
| ], |
| }, |
| } |
| |
| success("ReverseOrdinalUnion") { |
| value = ReverseOrdinalUnionStruct { |
| u: ReverseOrdinalUnion { |
| x: 42, |
| }, |
| }, |
| bytes = { |
| old = [ |
| tag 4:num(2), 4:padding, x 8:num(42), |
| ], |
| v1 = [ |
| ordinal 8:num(4), |
| num_bytes 4:num(8), num_handles 4:num(0), |
| present 8:raw(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF), |
| x 8:num(42), |
| ], |
| }, |
| } |