aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn Willden <swillden@google.com>2022-06-02 17:17:20 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-06-02 17:17:20 +0000
commitc80ee967fa3c893798e35e2979499b0a0b4bbec3 (patch)
tree8820d4d5866230240d3ea082b52df58e381c1500
parentb8b6bd82dbb1a24173d9b7dbb3c7d0b8f61b5175 (diff)
parentc151d597471285a123dee0c163f3a90e3c543b40 (diff)
downloadlibcppbor-android13-qpr3-c-s11-release.tar.gz
Make bool and null easier to use. am: 4268a60b05 am: c151d59747android-13.0.0_r83android-13.0.0_r82android-13.0.0_r81android-13.0.0_r80android-13.0.0_r79android-13.0.0_r78android-13.0.0_r77android-13.0.0_r76android-13.0.0_r75android-13.0.0_r74android-13.0.0_r73android-13.0.0_r72android-13.0.0_r71android-13.0.0_r70android-13.0.0_r69android-13.0.0_r68android-13.0.0_r67android-13.0.0_r66android-13.0.0_r65android-13.0.0_r64android-13.0.0_r63android-13.0.0_r62android-13.0.0_r61android-13.0.0_r60android-13.0.0_r59android-13.0.0_r58android-13.0.0_r56android-13.0.0_r54android-13.0.0_r53android-13.0.0_r52android-13.0.0_r51android-13.0.0_r50android-13.0.0_r49android-13.0.0_r48android-13.0.0_r47android-13.0.0_r46android-13.0.0_r45android-13.0.0_r44android-13.0.0_r43android-13.0.0_r42android-13.0.0_r41android-13.0.0_r40android-13.0.0_r39android-13.0.0_r38android-13.0.0_r37android-13.0.0_r36android-13.0.0_r35android-13.0.0_r34android-13.0.0_r33android-13.0.0_r32android13-qpr3-s9-releaseandroid13-qpr3-s8-releaseandroid13-qpr3-s7-releaseandroid13-qpr3-s6-releaseandroid13-qpr3-s5-releaseandroid13-qpr3-s4-releaseandroid13-qpr3-s3-releaseandroid13-qpr3-s2-releaseandroid13-qpr3-s14-releaseandroid13-qpr3-s13-releaseandroid13-qpr3-s12-releaseandroid13-qpr3-s11-releaseandroid13-qpr3-s10-releaseandroid13-qpr3-s1-releaseandroid13-qpr3-releaseandroid13-qpr3-c-s8-releaseandroid13-qpr3-c-s7-releaseandroid13-qpr3-c-s6-releaseandroid13-qpr3-c-s5-releaseandroid13-qpr3-c-s4-releaseandroid13-qpr3-c-s3-releaseandroid13-qpr3-c-s2-releaseandroid13-qpr3-c-s12-releaseandroid13-qpr3-c-s11-releaseandroid13-qpr3-c-s10-releaseandroid13-qpr3-c-s1-releaseandroid13-qpr2-s9-releaseandroid13-qpr2-s8-releaseandroid13-qpr2-s7-releaseandroid13-qpr2-s6-releaseandroid13-qpr2-s5-releaseandroid13-qpr2-s3-releaseandroid13-qpr2-s2-releaseandroid13-qpr2-s12-releaseandroid13-qpr2-s11-releaseandroid13-qpr2-s10-releaseandroid13-qpr2-s1-releaseandroid13-qpr2-releaseandroid13-qpr2-b-s1-releaseandroid13-d4-s2-releaseandroid13-d4-s1-releaseandroid13-d4-release
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/libcppbor/+/18638884 Change-Id: I4001b9acfb6a58a5627f45363677115cb66bfaea Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--include/cppbor/cppbor.h12
-rw-r--r--tests/cppbor_test.cpp32
2 files changed, 39 insertions, 5 deletions
diff --git a/include/cppbor/cppbor.h b/include/cppbor/cppbor.h
index 8338441..f7a2af0 100644
--- a/include/cppbor/cppbor.h
+++ b/include/cppbor/cppbor.h
@@ -142,6 +142,11 @@ class Item {
const Bstr* asBstr() const { return const_cast<Item*>(this)->asBstr(); }
virtual Simple* asSimple() { return nullptr; }
const Simple* asSimple() const { return const_cast<Item*>(this)->asSimple(); }
+ virtual Bool* asBool() { return nullptr; }
+ const Bool* asBool() const { return const_cast<Item*>(this)->asBool(); }
+ virtual Null* asNull() { return nullptr; }
+ const Null* asNull() const { return const_cast<Item*>(this)->asNull(); }
+
virtual Map* asMap() { return nullptr; }
const Map* asMap() const { return const_cast<Item*>(this)->asMap(); }
virtual Array* asArray() { return nullptr; }
@@ -859,9 +864,6 @@ class Simple : public Item {
MajorType type() const override { return kMajorType; }
Simple* asSimple() override { return this; }
-
- virtual const Bool* asBool() const { return nullptr; };
- virtual const Null* asNull() const { return nullptr; };
};
/**
@@ -877,7 +879,7 @@ class Bool : public Simple {
bool operator==(const Bool& other) const& { return mValue == other.mValue; }
SimpleType simpleType() const override { return kSimpleType; }
- const Bool* asBool() const override { return this; }
+ Bool* asBool() override { return this; }
size_t encodedSize() const override { return 1; }
@@ -907,7 +909,7 @@ class Null : public Simple {
explicit Null() {}
SimpleType simpleType() const override { return kSimpleType; }
- const Null* asNull() const override { return this; }
+ Null* asNull() override { return this; }
size_t encodedSize() const override { return 1; }
diff --git a/tests/cppbor_test.cpp b/tests/cppbor_test.cpp
index 68778dc..b9a2f35 100644
--- a/tests/cppbor_test.cpp
+++ b/tests/cppbor_test.cpp
@@ -721,6 +721,8 @@ TEST(ConvertTest, Uint) {
EXPECT_EQ(nullptr, item->asTstr());
EXPECT_EQ(nullptr, item->asBstr());
EXPECT_EQ(nullptr, item->asSimple());
+ EXPECT_EQ(nullptr, item->asBool());
+ EXPECT_EQ(nullptr, item->asNull());
EXPECT_EQ(nullptr, item->asMap());
EXPECT_EQ(nullptr, item->asArray());
EXPECT_EQ(nullptr, item->asViewTstr());
@@ -740,6 +742,8 @@ TEST(ConvertTest, Nint) {
EXPECT_EQ(nullptr, item->asTstr());
EXPECT_EQ(nullptr, item->asBstr());
EXPECT_EQ(nullptr, item->asSimple());
+ EXPECT_EQ(nullptr, item->asBool());
+ EXPECT_EQ(nullptr, item->asNull());
EXPECT_EQ(nullptr, item->asMap());
EXPECT_EQ(nullptr, item->asArray());
EXPECT_EQ(nullptr, item->asViewTstr());
@@ -759,6 +763,8 @@ TEST(ConvertTest, Tstr) {
EXPECT_NE(nullptr, item->asTstr());
EXPECT_EQ(nullptr, item->asBstr());
EXPECT_EQ(nullptr, item->asSimple());
+ EXPECT_EQ(nullptr, item->asBool());
+ EXPECT_EQ(nullptr, item->asNull());
EXPECT_EQ(nullptr, item->asMap());
EXPECT_EQ(nullptr, item->asArray());
EXPECT_EQ(nullptr, item->asViewTstr());
@@ -778,6 +784,8 @@ TEST(ConvertTest, Bstr) {
EXPECT_EQ(nullptr, item->asTstr());
EXPECT_NE(nullptr, item->asBstr());
EXPECT_EQ(nullptr, item->asSimple());
+ EXPECT_EQ(nullptr, item->asBool());
+ EXPECT_EQ(nullptr, item->asNull());
EXPECT_EQ(nullptr, item->asMap());
EXPECT_EQ(nullptr, item->asArray());
EXPECT_EQ(nullptr, item->asViewTstr());
@@ -796,15 +804,20 @@ TEST(ConvertTest, Bool) {
EXPECT_EQ(nullptr, item->asTstr());
EXPECT_EQ(nullptr, item->asBstr());
EXPECT_NE(nullptr, item->asSimple());
+ EXPECT_NE(nullptr, item->asBool());
+ EXPECT_EQ(nullptr, item->asNull());
EXPECT_EQ(nullptr, item->asMap());
EXPECT_EQ(nullptr, item->asArray());
EXPECT_EQ(nullptr, item->asViewTstr());
EXPECT_EQ(nullptr, item->asViewBstr());
EXPECT_EQ(cppbor::BOOLEAN, item->asSimple()->simpleType());
+ EXPECT_NE(nullptr, item->asBool());
EXPECT_NE(nullptr, item->asSimple()->asBool());
+ EXPECT_EQ(nullptr, item->asNull());
EXPECT_EQ(nullptr, item->asSimple()->asNull());
+ EXPECT_FALSE(item->asBool()->value());
EXPECT_FALSE(item->asSimple()->asBool()->value());
}
@@ -818,6 +831,8 @@ TEST(ConvertTest, Map) {
EXPECT_EQ(nullptr, item->asTstr());
EXPECT_EQ(nullptr, item->asBstr());
EXPECT_EQ(nullptr, item->asSimple());
+ EXPECT_EQ(nullptr, item->asBool());
+ EXPECT_EQ(nullptr, item->asNull());
EXPECT_NE(nullptr, item->asMap());
EXPECT_EQ(nullptr, item->asArray());
EXPECT_EQ(nullptr, item->asViewTstr());
@@ -836,6 +851,8 @@ TEST(ConvertTest, Array) {
EXPECT_EQ(nullptr, item->asTstr());
EXPECT_EQ(nullptr, item->asBstr());
EXPECT_EQ(nullptr, item->asSimple());
+ EXPECT_EQ(nullptr, item->asBool());
+ EXPECT_EQ(nullptr, item->asNull());
EXPECT_EQ(nullptr, item->asMap());
EXPECT_NE(nullptr, item->asArray());
EXPECT_EQ(nullptr, item->asViewTstr());
@@ -853,6 +870,8 @@ TEST(ConvertTest, SemanticTag) {
EXPECT_EQ(nullptr, item->asNint());
EXPECT_EQ(nullptr, item->asBstr());
EXPECT_EQ(nullptr, item->asSimple());
+ EXPECT_EQ(nullptr, item->asBool());
+ EXPECT_EQ(nullptr, item->asNull());
EXPECT_EQ(nullptr, item->asMap());
EXPECT_EQ(nullptr, item->asArray());
EXPECT_EQ(nullptr, item->asViewTstr());
@@ -881,6 +900,8 @@ TEST(ConvertTest, NestedSemanticTag) {
EXPECT_EQ(nullptr, item->asNint());
EXPECT_EQ(nullptr, item->asBstr());
EXPECT_EQ(nullptr, item->asSimple());
+ EXPECT_EQ(nullptr, item->asBool());
+ EXPECT_EQ(nullptr, item->asNull());
EXPECT_EQ(nullptr, item->asMap());
EXPECT_EQ(nullptr, item->asArray());
EXPECT_EQ(nullptr, item->asViewTstr());
@@ -912,13 +933,17 @@ TEST(ConvertTest, Null) {
EXPECT_EQ(nullptr, item->asTstr());
EXPECT_EQ(nullptr, item->asBstr());
EXPECT_NE(nullptr, item->asSimple());
+ EXPECT_EQ(nullptr, item->asBool());
+ EXPECT_NE(nullptr, item->asNull());
EXPECT_EQ(nullptr, item->asMap());
EXPECT_EQ(nullptr, item->asArray());
EXPECT_EQ(nullptr, item->asViewTstr());
EXPECT_EQ(nullptr, item->asViewBstr());
EXPECT_EQ(NULL_T, item->asSimple()->simpleType());
+ EXPECT_EQ(nullptr, item->asBool());
EXPECT_EQ(nullptr, item->asSimple()->asBool());
+ EXPECT_NE(nullptr, item->asNull());
EXPECT_NE(nullptr, item->asSimple()->asNull());
}
@@ -932,6 +957,8 @@ TEST(ConvertTest, ViewTstr) {
EXPECT_EQ(nullptr, item->asTstr());
EXPECT_EQ(nullptr, item->asBstr());
EXPECT_EQ(nullptr, item->asSimple());
+ EXPECT_EQ(nullptr, item->asBool());
+ EXPECT_EQ(nullptr, item->asNull());
EXPECT_EQ(nullptr, item->asMap());
EXPECT_EQ(nullptr, item->asArray());
EXPECT_NE(nullptr, item->asViewTstr());
@@ -952,6 +979,8 @@ TEST(ConvertTest, ViewBstr) {
EXPECT_EQ(nullptr, item->asTstr());
EXPECT_EQ(nullptr, item->asBstr());
EXPECT_EQ(nullptr, item->asSimple());
+ EXPECT_EQ(nullptr, item->asBool());
+ EXPECT_EQ(nullptr, item->asNull());
EXPECT_EQ(nullptr, item->asMap());
EXPECT_EQ(nullptr, item->asArray());
EXPECT_EQ(nullptr, item->asViewTstr());
@@ -1024,8 +1053,11 @@ TEST(CloningTest, Bool) {
EXPECT_EQ(clone->type(), SIMPLE);
EXPECT_NE(clone->asSimple(), nullptr);
EXPECT_EQ(clone->asSimple()->simpleType(), cppbor::BOOLEAN);
+ EXPECT_NE(clone->asBool(), nullptr);
EXPECT_NE(clone->asSimple()->asBool(), nullptr);
+ EXPECT_EQ(item, *clone->asBool());
EXPECT_EQ(item, *clone->asSimple()->asBool());
+ EXPECT_EQ(*clone->asBool(), Bool(true));
EXPECT_EQ(*clone->asSimple()->asBool(), Bool(true));
}