aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-06-20 20:15:35 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-06-20 20:15:35 +0000
commit3706ce22c7443321d6aa756e9d816f95a68cc43f (patch)
tree8820d4d5866230240d3ea082b52df58e381c1500
parent9138a22b276cbdcf51d7ee7272a159c501a24436 (diff)
parent79a0779064d295353008f34f59120bb49ff0950b (diff)
downloadlibcppbor-android13-mainline-scheduling-release.tar.gz
Snap for 8746144 from 79a0779064d295353008f34f59120bb49ff0950b to mainline-scheduling-releaseaml_sch_331113000aml_sch_331111000android13-mainline-scheduling-release
Change-Id: Icd115d79316cebf30f7c46358041a4c385dbf95b
-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));
}