Implement 'bytes' accessors for UPB :)

Move the 'accessors_test.rs' to shared/ as both kernels now support the same accessor types.

PiperOrigin-RevId: 526591987
pull/12320/head
Jakob Buchgraber 2 years ago committed by Copybara-Service
parent 37c8f8195b
commit 0ecb729906
  1. 12
      rust/test/cpp/BUILD
  2. 20
      rust/test/shared/BUILD
  3. 0
      rust/test/shared/accessors_test.rs
  4. 12
      rust/test/upb/BUILD
  5. 57
      rust/test/upb/accessors_test.rs
  6. 2
      src/google/protobuf/compiler/rust/accessors/accessors.cc

@ -9,15 +9,3 @@
# To do that use:
# * `rust_cc_proto_library` instead of `rust_proto_library`.
# * `//rust:protobuf_cpp` instead of `//rust:protobuf``.
load("@rules_rust//rust:defs.bzl", "rust_test")
rust_test(
name = "accessors_test",
srcs = ["accessors_test.rs"],
tags = [
# TODO(b/270274576): Enable testing on arm once we have a Rust Arm toolchain.
"not_build:arm",
],
deps = ["//rust/test:unittest_cc_rust_proto"],
)

@ -121,3 +121,23 @@ rust_test(
],
deps = ["//rust/test:unittest_upb_rust_proto"],
)
rust_test(
name = "accessors_cpp_test",
srcs = ["accessors_test.rs"],
tags = [
# TODO(b/270274576): Enable testing on arm once we have a Rust Arm toolchain.
"not_build:arm",
],
deps = ["//rust/test:unittest_cc_rust_proto"],
)
rust_test(
name = "accessors_upb_test",
srcs = ["accessors_test.rs"],
tags = [
# TODO(b/270274576): Enable testing on arm once we have a Rust Arm toolchain.
"not_build:arm",
],
deps = ["//rust/test:unittest_upb_rust_proto"],
)

@ -9,15 +9,3 @@
# To do that use:
# * `rust_upb_proto_library` instead of `rust_proto_library`.
# * `//rust:protobuf_upb` instead of `//rust:protobuf``.
load("@rules_rust//rust:defs.bzl", "rust_test")
rust_test(
name = "accessors_test",
srcs = ["accessors_test.rs"],
tags = [
# TODO(b/270274576): Enable testing on arm once we have a Rust Arm toolchain.
"not_build:arm",
],
deps = ["//rust/test:unittest_upb_rust_proto"],
)

@ -1,57 +0,0 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2023 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
use unittest_proto::proto2_unittest::TestAllTypes;
#[test]
fn test_optional_bool() {
let mut test_all_types: TestAllTypes = TestAllTypes::new();
test_all_types.optional_bool_set(Some(true));
assert_eq!(test_all_types.optional_bool(), Some(true));
test_all_types.optional_bool_set(Some(false));
assert_eq!(test_all_types.optional_bool(), Some(false));
test_all_types.optional_bool_set(None);
assert_eq!(test_all_types.optional_bool(), None);
}
#[test]
fn test_optional_int64() {
let mut test_all_types: TestAllTypes = TestAllTypes::new();
test_all_types.optional_int64_set(Some(10));
assert_eq!(test_all_types.optional_int64(), Some(10));
test_all_types.optional_int64_set(Some(-10));
assert_eq!(test_all_types.optional_int64(), Some(-10));
test_all_types.optional_int64_set(None);
assert_eq!(test_all_types.optional_int64(), None);
}

@ -54,7 +54,7 @@ std::unique_ptr<AccessorGenerator> AccessorGenerator::For(
if (field.desc().is_repeated()) return nullptr;
return ForSingularScalar(field);
case FieldDescriptor::TYPE_BYTES:
if (field.desc().is_repeated() || field.is_upb()) return nullptr;
if (field.desc().is_repeated()) return nullptr;
return ForSingularBytes(field);
default:

Loading…
Cancel
Save