feat(dom): refactor dom value

This commit is contained in:
charleeshen
2022-03-31 23:25:30 +08:00
committed by ilikethese
parent 2c398c1d3b
commit 27cc95041b
18 changed files with 287 additions and 184 deletions
+79 -20
View File
@@ -18,16 +18,16 @@ class DomValue final {
int32_t i32_;
uint32_t u32_;
double d_;
Number(int32_t i32) : i32_(i32){}
Number(uint32_t u32) : u32_(u32){}
Number(float f) : d_(f){}
Number(double d) : d_(d){}
Number(int32_t i32) : i32_(i32) {}
Number(uint32_t u32) : u32_(u32) {}
Number(float f) : d_(f) {}
Number(double d) : d_(d) {}
};
static const DomValue Undefined();
static const DomValue Null();
DomValue(){}
DomValue() {}
DomValue(const DomValue& source);
/**
@@ -201,53 +201,112 @@ class DomValue final {
/**
* @brief 转化成 int32_t
* @param i32 get int32_t value
* @return return true if success else return false
*/
int32_t ToInt32() const;
bool ToInt32(int32_t& i32) const;
/**
* @brief 转化成 int32_t, crash if failed
* @return return int32_t value
*/
int32_t ToInt32Checked() const;
/**
* @brief 转化成 uint32_t
* @param u32 get value
* @return return true if success else return false
*/
uint32_t ToUint32() const;
bool ToUint32(uint32_t& u32) const;
/**
* @brief 转化成 uint32_t, crash if failed
* @return return uint32_t value
*/
uint32_t ToUint32Checked() const;
/**
* @brief 转化成 double 类型, int32_t\uint32_t\double 可以无损转化
* @param d get double value
* @return return true if success else return false
*/
double ToDouble() const;
bool ToDouble(double& d) const;
/**
* @brief 转化成 double 类型, int32_t\uint32_t\double 可以无损转化, crash if failed
* @return return double value
*/
double ToDoubleChecked() const;
/**
* @brief 转化成 bool 类型
* @param b get bool value
* @return return true if success else return false
*/
bool ToBoolean() const;
bool ToBoolean(bool& b) const;
/**
* @brief 转化成 bool 类型, crash if failed
* @return return bool value
*/
bool ToBooleanChecked() const;
/**
* @brief 转化成 string 类型
* @param str get string value
* @return return true if success else return false
*/
const std::string& ToString() const;
bool ToString(std::string& str) const;
/**
* @brief 转化成 string 类型
* @brief 转化成 string 类型, crash if failed
* @return return string value
*/
std::string& ToString();
const std::string& ToStringChecked() const;
/**
* @brief 转化成 DomValueObjectType 类型
* @brief 转化成 string 类型, crash if failed
* @return return string value
*/
const DomValueObjectType& ToObject() const;
std::string& ToStringChecked();
/**
* @brief 转化成 DomValueObjectType 类型
* @brief 转化成 DomValueObjectType 类型, crash if failed
* @param obj get DomValueObjectType value
* @return return true if success else return false
*/
DomValueObjectType& ToObject();
bool ToObject(DomValueObjectType& obj) const;
/**
* @brief 转化成 DomValueArrayType 类型
* @brief 转化成 DomValueObjectType 类型, crash if failed
* @return return DomValueObjectType value
*/
const DomValueArrayType& ToArray() const;
const DomValueObjectType& ToObjectChecked() const;
/**
* @brief 转化成 DomValueArrayType 类型
* @brief 转化成 DomValueObjectType 类型, crash if failed
* @return return DomValueObjectType value
*/
DomValueArrayType& ToArray();
DomValueObjectType& ToObjectChecked();
/**
* @brief 转化成 DomValueArrayType 类型, crash if failed
* @param arr get DomValueArrayType value
* @return return true if success else return false
*/
bool ToArray(DomValueArrayType& arr) const;
/**
* @brief 转化成 DomValueArrayType 类型, crash if failed
* @return return DomValueArrayType value
*/
const DomValueArrayType& ToArrayChecked() const;
/**
* @brief 转化成 DomValueArrayType 类型, crash if failed
* @return return DomValueArrayType value
*/
DomValueArrayType& ToArrayChecked();
private:
inline void Deallocate();
+1 -1
View File
@@ -332,7 +332,7 @@ uint32_t Deserializer::ReadObjectProperties(DomValue& property, SerializationTag
ReadObject(key);
DomValue value;
ReadObject(value);
object.insert(std::pair<std::string, DomValue>(key.ToString(), value));
object.insert(std::pair<std::string, DomValue>(key.ToStringChecked(), value));
property = object;
}
}
+15 -15
View File
@@ -26,20 +26,20 @@ DiffValue DiffUtils::DiffProps(
continue;
}
if (from_value->second->IsBoolean()) {
if (!to_value->second || (to_value->second->ToBoolean() != from_value->second->ToBoolean())) {
if (!to_value->second || (to_value->second->ToBooleanChecked() != from_value->second->ToBooleanChecked())) {
(*update_props)[kv.first] = to_value->second;
}
} else if (from_value->second->IsNumber()) {
if (!to_value->second || (to_value->second->ToDouble() != from_value->second->ToDouble())) {
if (!to_value->second || (to_value->second->ToDoubleChecked() != from_value->second->ToDoubleChecked())) {
(*update_props)[kv.first] = to_value->second;
}
} else if (from_value->second->IsString()) {
if (!to_value->second || (to_value->second->ToString() != from_value->second->ToString())) {
if (!to_value->second || (to_value->second->ToStringChecked() != from_value->second->ToStringChecked())) {
(*update_props)[kv.first] = to_value->second;
}
} else if (from_value->second->IsArray()) {
if (to_value->second && to_value->second->IsArray()) {
DomValueArray result = DiffArray(from_value->second->ToArray(), to_value->second->ToArray());
DomValueArray result = DiffArray(from_value->second->ToArrayChecked(), to_value->second->ToArrayChecked());
if (!result.empty()) {
(*update_props)[kv.first] = std::make_shared<DomValue>(result);
}
@@ -48,7 +48,7 @@ DiffValue DiffUtils::DiffProps(
}
} else if (from_value->second->IsObject()) {
if (to_value->second && to_value->second->IsObject()) {
DomValueObject result = DiffObject(to_value->second->ToObject(), to_value->second->ToObject());
DomValueObject result = DiffObject(to_value->second->ToObjectChecked(), to_value->second->ToObjectChecked());
if (!result.empty()) {
(*update_props)[kv.first] = to_value->second;
}
@@ -92,23 +92,23 @@ DomValueArray DiffUtils::DiffArray(const DomValueArray& from, const DomValueArra
auto from_value = from[i];
auto to_value = to[i];
if (from_value.IsBoolean()) {
if (from_value.ToBoolean() != to_value.ToBoolean()) {
if (from_value.ToBooleanChecked() != to_value.ToBooleanChecked()) {
return to;
}
} else if (from_value.IsNumber()) {
if (from_value.ToDouble() != from_value.ToDouble()) {
if (from_value.ToDoubleChecked() != from_value.ToDoubleChecked()) {
return to;
}
} else if (from_value.IsString()) {
if (from_value.ToString() != from_value.ToString()) {
if (from_value.ToStringChecked() != from_value.ToStringChecked()) {
return to;
}
} else if (from_value.IsArray()) {
if (!to_value.IsArray() || DiffArray(from_value.ToArray(), to_value.ToArray()).empty()) {
if (!to_value.IsArray() || DiffArray(from_value.ToArrayChecked(), to_value.ToArrayChecked()).empty()) {
return to;
}
} else if (from_value.IsObject()) {
if (!to_value.IsObject() || DiffObject(from_value.ToObject(), to_value.ToObject()).empty()) {
if (!to_value.IsObject() || DiffObject(from_value.ToObjectChecked(), to_value.ToObjectChecked()).empty()) {
return to;
}
} else if (from_value.IsNull()) {
@@ -132,20 +132,20 @@ DomValueObject DiffUtils::DiffObject(const DomValueObject& from, const DomValueO
auto from_value = from.find(kv.first); // old
auto to_value = to.find(kv.first); // new
if (from_value->second.IsBoolean()) {
if (to_value != to.end() && to_value->second.ToBoolean() != from_value->second.ToBoolean()) {
if (to_value != to.end() && to_value->second.ToBooleanChecked() != from_value->second.ToBooleanChecked()) {
diff_props[kv.first] = to_value->second;
}
} else if (from_value->second.IsNumber()) {
if (to_value != to.end() && to_value->second.ToDouble() != from_value->second.ToDouble()) {
if (to_value != to.end() && to_value->second.ToDoubleChecked() != from_value->second.ToDoubleChecked()) {
diff_props[kv.first] = to_value->second;
}
} else if (from_value->second.IsString()) {
if (to_value != to.end() && to_value->second.ToString() != from_value->second.ToString()) {
if (to_value != to.end() && to_value->second.ToStringChecked() != from_value->second.ToStringChecked()) {
diff_props[kv.first] = to_value->second;
}
} else if (from_value->second.IsArray()) {
if (to_value != to.end() && to_value->second.IsArray()) {
DomValueArray result = DiffArray(from_value->second.ToArray(), to_value->second.ToArray());
DomValueArray result = DiffArray(from_value->second.ToArrayChecked(), to_value->second.ToArrayChecked());
if (!result.empty()) {
diff_props[kv.first] = result;
}
@@ -154,7 +154,7 @@ DomValueObject DiffUtils::DiffObject(const DomValueObject& from, const DomValueO
}
} else if (from_value->second.IsObject()) {
if (to_value != to.end() && to_value->second.IsObject()) {
DomValueObject result = DiffObject(to_value->second.ToObject(), to_value->second.ToObject());
DomValueObject result = DiffObject(to_value->second.ToObjectChecked(), to_value->second.ToObjectChecked());
if (!result.empty()) {
diff_props[kv.first] = to_value->second;
}
+8 -8
View File
@@ -49,9 +49,9 @@ bool DomArgument::ConvertObjectToBson(const tdf::base::DomValue& dom_value, std:
tdf::base::Oddball oddball = tdf::base::Oddball::kUndefined;
if (type == tdf::base::DomValue::Type::kNull) {
oddball = tdf::base::Oddball::kNull;
} else if (type == tdf::base::DomValue::Type::kBoolean && dom_value.ToBoolean()) {
} else if (type == tdf::base::DomValue::Type::kBoolean && dom_value.ToBooleanChecked()) {
oddball = tdf::base::Oddball::kTrue;
} else if (type == tdf::base::DomValue::Type::kBoolean && !dom_value.ToBoolean()) {
} else if (type == tdf::base::DomValue::Type::kBoolean && !dom_value.ToBooleanChecked()) {
oddball = tdf::base::Oddball::kFalse;
}
serializer.WriteOddball(oddball);
@@ -60,26 +60,26 @@ bool DomArgument::ConvertObjectToBson(const tdf::base::DomValue& dom_value, std:
case tdf::base::DomValue::Type::kNumber: {
tdf::base::DomValue::NumberType number_type = dom_value.GetNumberType();
if (number_type == tdf::base::DomValue::NumberType::kInt32) {
serializer.WriteInt32(dom_value.ToInt32());
serializer.WriteInt32(dom_value.ToInt32Checked());
} else if (number_type == tdf::base::DomValue::NumberType::kUInt32) {
serializer.WriteUint32(dom_value.ToUint32());
serializer.WriteUint32(dom_value.ToUint32Checked());
} else if (number_type == tdf::base::DomValue::NumberType::kDouble) {
serializer.WriteDouble(dom_value.ToDouble());
serializer.WriteDouble(dom_value.ToDoubleChecked());
} else {
ret = false;
}
return ret;
}
case tdf::base::DomValue::Type::kString: {
serializer.WriteString(dom_value.ToString());
serializer.WriteString(dom_value.ToStringChecked());
break;
}
case tdf::base::DomValue::Type::kArray: {
serializer.WriteDenseJSArray(dom_value.ToArray());
serializer.WriteDenseJSArray(dom_value.ToArrayChecked());
break;
}
case tdf::base::DomValue::Type::kObject: {
serializer.WriteJSObject(dom_value.ToObject());
serializer.WriteJSObject(dom_value.ToObjectChecked());
break;
}
default: {
+4 -4
View File
@@ -428,8 +428,8 @@ void DomNode::UpdateObjectStyle(DomValue& style_map, const DomValue& update_styl
TDF_BASE_DCHECK(style_map.IsObject());
TDF_BASE_DCHECK(update_style.IsObject());
auto style_object = style_map.ToObject();
for (auto& v : update_style.ToObject()) {
auto style_object = style_map.ToObjectChecked();
for (auto& v : update_style.ToObjectChecked()) {
auto iter = style_object.find(v.first);
if (iter == style_object.end()) {
style_object[v.first] = v.second;
@@ -445,7 +445,7 @@ void DomNode::UpdateObjectStyle(DomValue& style_map, const DomValue& update_styl
bool DomNode::ReplaceStyle(DomValue& style, const std::string& key, const DomValue& value) {
if (style.IsObject()) {
auto& object = style.ToObject();
auto& object = style.ToObjectChecked();
if (object.find(key) != object.end()) {
object.at(key) = value;
return true;
@@ -460,7 +460,7 @@ bool DomNode::ReplaceStyle(DomValue& style, const std::string& key, const DomVal
}
if (style.IsArray()) {
auto& array = style.ToArray();
auto& array = style.ToArrayChecked();
bool replaced = false;
for (auto& a : array) {
replaced = ReplaceStyle(a, key, value);
+54 -10
View File
@@ -318,17 +318,37 @@ bool DomValue::IsUInt32() const noexcept { return type_ == Type::kNumber && numb
bool DomValue::IsDouble() const noexcept { return type_ == Type::kNumber && number_type_ == NumberType::kDouble; }
int32_t DomValue::ToInt32() const {
bool DomValue::ToInt32(int32_t& i32) const {
bool is_int32 = IsInt32();
if (is_int32) i32 = num_.i32_;
return is_int32;
}
int32_t DomValue::ToInt32Checked() const {
TDF_BASE_CHECK(IsInt32());
return num_.i32_;
}
uint32_t DomValue::ToUint32() const {
bool DomValue::ToUint32(uint32_t& u32) const {
bool is_uint32 = IsUInt32();
if (is_uint32) u32 = num_.u32_;
return is_uint32;
}
uint32_t DomValue::ToUint32Checked() const {
TDF_BASE_CHECK(IsUInt32());
return num_.u32_;
}
double DomValue::ToDouble() const {
bool DomValue::ToDouble(double& d) const {
bool is_number = IsNumber();
if (number_type_ == DomValue::NumberType::kDouble) d = num_.d_;
if (number_type_ == DomValue::NumberType::kInt32) d = num_.i32_;
if (number_type_ == DomValue::NumberType::kUInt32) d = num_.u32_;
return is_number;
}
double DomValue::ToDoubleChecked() const {
TDF_BASE_CHECK(IsNumber());
if (number_type_ == DomValue::NumberType::kDouble) return num_.d_;
if (number_type_ == DomValue::NumberType::kInt32) return num_.i32_;
@@ -336,37 +356,61 @@ double DomValue::ToDouble() const {
TDF_BASE_UNREACHABLE();
}
bool DomValue::ToBoolean() const {
bool DomValue::ToBoolean(bool& b) const {
bool is_bool = IsBoolean();
b = b_;
return is_bool;
}
bool DomValue::ToBooleanChecked() const {
TDF_BASE_CHECK(IsBoolean());
return b_;
}
const std::string& DomValue::ToString() const {
bool DomValue::ToString(std::string& str) const {
bool is_string = IsString();
str = str_;
return is_string;
}
const std::string& DomValue::ToStringChecked() const {
TDF_BASE_CHECK(IsString());
return str_;
}
std::string& DomValue::ToString() {
std::string& DomValue::ToStringChecked() {
TDF_BASE_CHECK(IsString());
return str_;
}
const DomValue::DomValueObjectType& DomValue::ToObject() const {
bool DomValue::ToObject(DomValue::DomValueObjectType& obj) const{
bool is_object = IsObject();
obj = obj_;
return is_object;
}
const DomValue::DomValueObjectType& DomValue::ToObjectChecked() const {
TDF_BASE_CHECK(IsObject());
return obj_;
}
DomValue::DomValueObjectType& DomValue::ToObject() {
DomValue::DomValueObjectType& DomValue::ToObjectChecked() {
TDF_BASE_CHECK(IsObject());
return obj_;
}
const DomValue::DomValueArrayType& DomValue::ToArray() const {
bool DomValue::ToArray(DomValue::DomValueArrayType& arr) const {
bool is_array = IsArray();
arr = arr_;
return is_array;
}
const DomValue::DomValueArrayType& DomValue::ToArrayChecked() const {
TDF_BASE_CHECK(IsArray());
return arr_;
}
DomValue::DomValueArrayType& DomValue::ToArray() {
DomValue::DomValueArrayType& DomValue::ToArrayChecked() {
TDF_BASE_CHECK(IsArray());
return arr_;
}
+12 -12
View File
@@ -143,56 +143,56 @@ bool LayerOptimizedRenderManager::CheckStyleJustLayout(const std::shared_ptr<Dom
}
if (key == kOpacity) {
if (value->IsNull() || (value->IsNumber() && value->ToDouble() == 1)) {
if (value->IsNull() || (value->IsNumber() && value->ToDoubleChecked() == 1)) {
continue;
}
} else if (key == kBorderRadius) {
const auto &background_color = style_map->find(kBackgroundColor);
if (background_color != style_map->end() &&
(*background_color).second->IsNumber() &&
(*background_color).second->ToDouble() != 0) {
(*background_color).second->ToDoubleChecked() != 0) {
return false;
}
const auto &border_width = style_map->find(kBorderWidth);
if (border_width != style_map->end() &&
(*border_width).second->IsNumber() &&
(*border_width).second->ToDouble() != 0) {
(*border_width).second->ToDoubleChecked() != 0) {
return false;
}
} else if (key == kBorderLeftColor) {
if (value->IsNumber() && value->ToDouble() == 0) {
if (value->IsNumber() && value->ToDoubleChecked() == 0) {
continue;
}
} else if (key == kBorderRightColor) {
if (value->IsNumber() && value->ToDouble() == 0) {
if (value->IsNumber() && value->ToDoubleChecked() == 0) {
continue;
}
} else if (key == kBorderTopColor) {
if (value->IsNumber() && value->ToDouble() == 0) {
if (value->IsNumber() && value->ToDoubleChecked() == 0) {
continue;
}
} else if (key == kBorderBottomColor) {
if (value->IsNumber() && value->ToDouble() == 0) {
if (value->IsNumber() && value->ToDoubleChecked() == 0) {
continue;
}
} else if (key == kBorderWidth) {
if (value->IsNull() || (value->IsNumber() && value->ToDouble() == 0)) {
if (value->IsNull() || (value->IsNumber() && value->ToDoubleChecked() == 0)) {
continue;
}
} else if (key == kBorderLeftWidth) {
if (value->IsNull() || (value->IsNumber() && value->ToDouble() == 0)) {
if (value->IsNull() || (value->IsNumber() && value->ToDoubleChecked() == 0)) {
continue;
}
} else if (key == kBorderTopWidth) {
if (value->IsNull() || (value->IsNumber() && value->ToDouble() == 0)) {
if (value->IsNull() || (value->IsNumber() && value->ToDoubleChecked() == 0)) {
continue;
}
} else if (key == kBorderRightWidth) {
if (value->IsNull() || (value->IsNumber() && value->ToDouble() == 0)) {
if (value->IsNull() || (value->IsNumber() && value->ToDoubleChecked() == 0)) {
continue;
}
} else if (key == kBorderBottomWidth) {
if (value->IsNull() || (value->IsNumber() && value->ToDouble() == 0)) {
if (value->IsNull() || (value->IsNumber() && value->ToDoubleChecked() == 0)) {
continue;
}
}
+8 -8
View File
@@ -180,9 +180,9 @@ void Serializer::WriteObject(const DomValue& dom_value) {
Oddball ball = Oddball::kUndefined;
if (type == DomValue::Type::kNull) {
ball = Oddball::kNull;
} else if (type == DomValue::Type::kBoolean && dom_value.ToBoolean()) {
} else if (type == DomValue::Type::kBoolean && dom_value.ToBooleanChecked()) {
ball = Oddball::kTrue;
} else if (type == DomValue::Type::kBoolean && !dom_value.ToBoolean()) {
} else if (type == DomValue::Type::kBoolean && !dom_value.ToBooleanChecked()) {
ball = Oddball::kFalse;
}
WriteOddball(ball);
@@ -192,15 +192,15 @@ void Serializer::WriteObject(const DomValue& dom_value) {
DomValue::NumberType number_type = dom_value.GetNumberType();
switch (number_type) {
case DomValue::NumberType::kInt32: {
WriteInt32(dom_value.ToInt32());
WriteInt32(dom_value.ToInt32Checked());
break;
}
case DomValue::NumberType::kUInt32: {
WriteUint32(dom_value.ToUint32());
WriteUint32(dom_value.ToUint32Checked());
break;
}
case DomValue::NumberType::kDouble: {
WriteDouble(dom_value.ToDouble());
WriteDouble(dom_value.ToDoubleChecked());
break;
}
default: {
@@ -210,15 +210,15 @@ void Serializer::WriteObject(const DomValue& dom_value) {
break;
}
case DomValue::Type::kString: {
WriteString(dom_value.ToString());
WriteString(dom_value.ToStringChecked());
break;
}
case DomValue::Type::kObject: {
WriteJSObject(dom_value.ToObject());
WriteJSObject(dom_value.ToObjectChecked());
break;
}
case DomValue::Type::kArray: {
WriteDenseJSArray(dom_value.ToArray());
WriteDenseJSArray(dom_value.ToArrayChecked());
break;
}
default:
+23 -23
View File
@@ -109,18 +109,18 @@ TAITANK_GET_STYLE_DECL(DisplayType, DisplayType, DisplayType::DisplayTypeFlex)
TAITANK_GET_STYLE_DECL(Direction, HPDirection, HPDirection::DirectionLTR)
#define SET_STYLE_VALUE(NAME, DEFAULT) \
auto dom_value = style_map.find(k##NAME)->second; \
CheckValueType(dom_value->GetType()); \
float value = DEFAULT; \
if (dom_value->IsNumber()) value = static_cast<float>(dom_value->ToDouble()); \
#define SET_STYLE_VALUE(NAME, DEFAULT) \
auto dom_value = style_map.find(k##NAME)->second; \
CheckValueType(dom_value->GetType()); \
float value = DEFAULT; \
if (dom_value->IsNumber()) value = static_cast<float>(dom_value->ToDoubleChecked()); \
Set##NAME(value);
#define SET_STYLE_VALUES(NAME, STYLENAME, DEFAULT) \
auto dom_value = style_map.find(k##STYLENAME)->second; \
CheckValueType(dom_value->GetType()); \
float value = DEFAULT; \
if (dom_value->IsNumber()) value = static_cast<float>(dom_value->ToDouble()); \
#define SET_STYLE_VALUES(NAME, STYLENAME, DEFAULT) \
auto dom_value = style_map.find(k##STYLENAME)->second; \
CheckValueType(dom_value->GetType()); \
float value = DEFAULT; \
if (dom_value->IsNumber()) value = static_cast<float>(dom_value->ToDoubleChecked()); \
Set##NAME(GetStyle##NAME(k##STYLENAME), value);
static void CheckValueType(tdf::base::DomValue::Type type) {
@@ -207,40 +207,40 @@ void TaitankLayoutNode::Parser(std::unordered_map<std::string, std::shared_ptr<t
SET_STYLE_VALUE(MaxHeight, 0)
}
if (style_map.find(kFlex) != style_map.end()) {
SetFlex(static_cast<float>(style_map.find(kFlex)->second->ToDouble()));
SetFlex(static_cast<float>(style_map.find(kFlex)->second->ToDoubleChecked()));
}
if (style_map.find(kFlexGrow) != style_map.end()) {
SetFlexGrow(static_cast<float>(style_map.find(kFlexGrow)->second->ToDouble()));
SetFlexGrow(static_cast<float>(style_map.find(kFlexGrow)->second->ToDoubleChecked()));
}
if (style_map.find(kFlexShrink) != style_map.end()) {
SetFlexShrink(static_cast<float>(style_map.find(kFlexShrink)->second->ToDouble()));
SetFlexShrink(static_cast<float>(style_map.find(kFlexShrink)->second->ToDoubleChecked()));
}
if (style_map.find(kFlexBasis) != style_map.end()) {
SetFlexBasis(static_cast<float>(style_map.find(kFlexBasis)->second->ToDouble()));
SetFlexBasis(static_cast<float>(style_map.find(kFlexBasis)->second->ToDoubleChecked()));
}
if (style_map.find(kDirection) != style_map.end()) {
SetDirection(GetStyleDirection(style_map.find(kDirection)->second->ToString()));
SetDirection(GetStyleDirection(style_map.find(kDirection)->second->ToStringChecked()));
}
if (style_map.find(kFlexDirection) != style_map.end()) {
SetFlexDirection(GetStyleFlexDirection(style_map.find(kFlexDirection)->second->ToString()));
SetFlexDirection(GetStyleFlexDirection(style_map.find(kFlexDirection)->second->ToStringChecked()));
}
if (style_map.find(kFlexWrap) != style_map.end()) {
SetFlexWrap(GetStyleWrapMode(style_map.find(kFlexWrap)->second->ToString()));
SetFlexWrap(GetStyleWrapMode(style_map.find(kFlexWrap)->second->ToStringChecked()));
}
if (style_map.find(kAilgnSelf) != style_map.end()) {
SetAlignSelf(GetStyleAlign(style_map.find(kAilgnSelf)->second->ToString()));
SetAlignSelf(GetStyleAlign(style_map.find(kAilgnSelf)->second->ToStringChecked()));
}
if (style_map.find(kAlignItems) != style_map.end()) {
SetAlignItems(GetStyleAlign(style_map.find(kAlignItems)->second->ToString()));
SetAlignItems(GetStyleAlign(style_map.find(kAlignItems)->second->ToStringChecked()));
}
if (style_map.find(kJustifyContent) != style_map.end()) {
SetJustifyContent(GetStyleJustify(style_map.find(kJustifyContent)->second->ToString()));
SetJustifyContent(GetStyleJustify(style_map.find(kJustifyContent)->second->ToStringChecked()));
}
if (style_map.find(kOverflow) != style_map.end()) {
SetOverflow(GetStyleOverflow(style_map.find(kOverflow)->second->ToString()));
SetOverflow(GetStyleOverflow(style_map.find(kOverflow)->second->ToStringChecked()));
}
if (style_map.find(kDisplay) != style_map.end()) {
SetDisplay(GetStyleDisplayType(style_map.find(kDisplay)->second->ToString()));
SetDisplay(GetStyleDisplayType(style_map.find(kDisplay)->second->ToStringChecked()));
}
if (style_map.find(kMargin) != style_map.end()) {
SET_STYLE_VALUES(Margin, Margin, 0)
@@ -312,7 +312,7 @@ void TaitankLayoutNode::Parser(std::unordered_map<std::string, std::shared_ptr<t
SET_STYLE_VALUES(Position, Bottom, 0)
}
if (style_map.find(kPosition) != style_map.end()) {
SetPositionType(GetStylePositionType(style_map.find(kPosition)->second->ToString()));
SetPositionType(GetStylePositionType(style_map.find(kPosition)->second->ToStringChecked()));
}
}
@@ -294,14 +294,14 @@ void UpdateAnimationNode(JNIEnv* j_env,
}
TDF_BASE_DCHECK(params.IsArray());
tdf::base::DomValue::DomValueArrayType array = params.ToArray();
tdf::base::DomValue::DomValueArrayType array = params.ToArrayChecked();
std::unordered_map<int32_t, std::unordered_map<std::string, std::shared_ptr<tdf::base::DomValue>>> node_style_map;
for (size_t i = 0; i < array.size(); i++) {
TDF_BASE_DCHECK(array[i].IsObject());
auto node = array[i].ToObject();
int32_t node_id = node["nodeId"].ToInt32();
auto node = array[i].ToObjectChecked();
int32_t node_id = node["nodeId"].ToInt32Checked();
// int32_t animation_id = node["animationId"].ToInt32();
std::string animation_key = node["animationKey"].ToString();
std::string animation_key = node["animationKey"].ToStringChecked();
tdf::base::DomValue animation_value = node["animationValue"];
auto iter = node_style_map.find(node_id);
@@ -167,7 +167,7 @@ GetNodeStyle(const std::shared_ptr<Ctx> &context,
auto style_it = props.find(kNodePropertyStyle);
if (style_it != props.end()) {
if (style_it->second.IsObject()) {
std::unordered_map<std::string, DomValue> style_obj = style_it->second.ToObject();
std::unordered_map<std::string, DomValue> style_obj = style_it->second.ToObjectChecked();
for (const auto &p : style_obj) {
ret[p.first] = std::make_shared<DomValue>(p.second);
}
@@ -215,7 +215,7 @@ GetNodeProps(const std::shared_ptr<Ctx> &context, const std::shared_ptr<CtxValue
std::move(dom_ext_map));
}
std::unordered_map<std::string, DomValue> props_map = props_obj->ToObject();
std::unordered_map<std::string, DomValue> props_map = props_obj->ToObjectChecked();
auto style_tuple = GetNodeStyle(context, props_map);
if (!std::get<2>(style_tuple).empty()) {
style_map = std::move(std::get<2>(style_tuple));
@@ -281,7 +281,7 @@ void HandleEventListeners(const std::shared_ptr<Ctx> &context,
DomValue dom_value;
std::shared_ptr<Scope> scope = weak_scope.lock();
if (scope && arg->ToObject(dom_value) && dom_value.IsUInt32()) {
scope->AddListener(dom_id, name_str, dom_value.ToUint32());
scope->AddListener(dom_id, name_str, dom_value.ToUint32Checked());
}
});
}
@@ -441,13 +441,13 @@ void UIManagerModule::CallUIFunction(const hippy::napi::CallbackInfo &info) {
int32_t id = 0;
auto id_value = context->ToDomValue(info[0]);
if (id_value->IsNumber()) {
id = static_cast<int32_t>(id_value->ToDouble());
id = static_cast<int32_t>(id_value->ToDoubleChecked());
}
std::string name;
auto name_value = context->ToDomValue(info[1]);
if (name_value->IsString()) {
name = name_value->ToString();
name = name_value->ToStringChecked();
}
std::unordered_map<std::string, std::shared_ptr<DomValue>> param;
@@ -738,17 +738,17 @@ std::shared_ptr<CtxValue> JSCCtx::CreateCtxValue(const std::shared_ptr<DomValue>
} else if (wrapper->IsNull()) {
return CreateNull();
} else if (wrapper->IsString()) {
std::string str = wrapper->ToString();
std::string str = wrapper->ToStringChecked();
unicode_string_view str_view(StringViewUtils::ToU8Pointer(str.c_str()), str.length());
return CreateString(str_view);
} else if (wrapper->IsInt32()) {
return CreateNumber(wrapper->ToInt32());
return CreateNumber(wrapper->ToInt32Checked());
} else if (wrapper->IsDouble()) {
return CreateNumber(wrapper->ToDouble());
return CreateNumber(wrapper->ToDoubleChecked());
} else if (wrapper->IsBoolean()) {
return CreateBoolean(wrapper->ToBoolean());
return CreateBoolean(wrapper->ToBooleanChecked());
} else if (wrapper->IsArray()) {
auto arr = wrapper->ToArray();
auto arr = wrapper->ToArrayChecked();
std::shared_ptr<CtxValue> args[arr.size()];
for (auto i = 0; i < arr.size(); ++i) {
args[i] = CreateCtxValue(std::make_shared<DomValue>(arr[i]));
@@ -760,7 +760,7 @@ std::shared_ptr<CtxValue> JSCCtx::CreateCtxValue(const std::shared_ptr<DomValue>
JSObjectRef obj_ref = JSObjectMake(context_, cls_ref, nullptr);
JSClassRelease(cls_ref);
auto obj = wrapper->ToObject();
auto obj = wrapper->ToObjectChecked();
for (const auto& p : obj) {
auto obj_key = p.first;
auto obj_value = p.second;
@@ -1303,16 +1303,16 @@ std::shared_ptr<CtxValue> V8Ctx::CreateCtxValue(
} else if (value->IsNull()) {
return CreateNull();
} else if (value->IsString()) {
std::string str = value->ToString();
std::string str = value->ToStringChecked();
unicode_string_view str_view(StringViewUtils::ToU8Pointer(str.c_str()),
str.length());
return CreateString(str_view);
} else if (value->IsNumber()) {
return CreateNumber(value->ToDouble());
return CreateNumber(value->ToDoubleChecked());
} else if (value->IsBoolean()) {
return CreateBoolean(value->ToBoolean());
return CreateBoolean(value->ToBooleanChecked());
} else if (value->IsArray()) {
auto arr = value->ToArray();
auto arr = value->ToArrayChecked();
auto len = arr.size();
std::shared_ptr<CtxValue> args[len];
for (size_t i = 0; i < len; ++i) {
@@ -1320,7 +1320,7 @@ std::shared_ptr<CtxValue> V8Ctx::CreateCtxValue(
}
return CreateArray(arr.size(), args);
} else if (value->IsObject()) {
auto obj = value->ToObject();
auto obj = value->ToObjectChecked();
v8::HandleScope handle_scope(isolate_);
v8::Local<v8::Context> context = context_persistent_.Get(isolate_);
@@ -168,7 +168,7 @@
auto style_props = all_props["style"];
if (style_props) {
if (tdf::base::DomValue::Type::kObject == style_props->GetType()) {
auto style_object = style_props->ToObject();
auto style_object = style_props->ToObjectChecked();
for (auto iter = style_object.begin(); iter != style_object.end(); iter++) {
const std::string &iter_key = iter->first;
auto &iter_value = iter->second;
+7 -7
View File
@@ -36,13 +36,13 @@ id domValueToOCType(const DomValue *const pDomValue) {
id value = [NSNull null];
switch (type) {
case DomValueType::kBoolean:
value = @(pDomValue->ToBoolean());
value = @(pDomValue->ToBooleanChecked());
break;
case DomValueType::kString:
value = [NSString stringWithUTF8String:pDomValue->ToString().c_str()];
value = [NSString stringWithUTF8String:pDomValue->ToStringChecked().c_str()];
break;
case DomValueType::kObject: {
DomValue::DomValueObjectType objectType = pDomValue->ToObject();
DomValue::DomValueObjectType objectType = pDomValue->ToObjectChecked();
std::unordered_map<std::string, std::shared_ptr<DomValue>> map(objectType.size());
for (const auto &pair : objectType) {
map[pair.first] = std::make_shared<DomValue>(pair.second);
@@ -53,7 +53,7 @@ id domValueToOCType(const DomValue *const pDomValue) {
}
break;
case DomValueType::kArray: {
DomValue::DomValueArrayType domValueArray = pDomValue->ToArray();
DomValue::DomValueArrayType domValueArray = pDomValue->ToArrayChecked();
NSMutableArray *array = [NSMutableArray arrayWithCapacity:domValueArray.size()];
for (auto it = domValueArray.begin(); it != domValueArray.end(); it++) {
const DomValue &v = *it;
@@ -166,13 +166,13 @@ NSNumber *domValueToNumber(const DomValue *const pDomValue) {
NSNumber *number = nil;
switch (pDomValue->GetNumberType()) {
case DomValueNumberType::kInt32:
number = @(pDomValue->ToInt32());
number = @(pDomValue->ToInt32Checked());
break;
case DomValueNumberType::kUInt32:
number = @(pDomValue->ToUint32());
number = @(pDomValue->ToUint32Checked());
break;
case DomValueNumberType::kDouble:
number = @(pDomValue->ToDouble());
number = @(pDomValue->ToDoubleChecked());
break;
case DomValueNumberType::kNaN:
number = [NSDecimalNumber notANumber];
@@ -60,7 +60,7 @@ void NativeRenderManager::UpdateLayout(const std::vector<std::shared_ptr<DomNode
bool useAnimation = false;
if (extStyle->end() != it) {
auto dom_value = it->second;
useAnimation = dom_value->ToBoolean();
useAnimation = dom_value->ToBooleanChecked();
}
DomNodeUpdateInfoTuple nodeUpdateInfo = std::make_tuple(tag, layoutResult, useAnimation, node->GetStyleMap());
nodes_infos.push_back(nodeUpdateInfo);
+20 -20
View File
@@ -26,7 +26,7 @@ void CheckUint32(uint32_t value) {
deserializer.ReadObject(dom_value);
EXPECT_TRUE(dom_value.GetType() == tdf::base::DomValue::Type::kNumber);
EXPECT_TRUE(dom_value.GetNumberType() == tdf::base::DomValue::NumberType::kUInt32);
EXPECT_TRUE(dom_value.ToUint32() == value);
EXPECT_TRUE(dom_value.ToUint32Checked() == value);
}
void CheckInt32(int32_t value) {
@@ -42,7 +42,7 @@ void CheckInt32(int32_t value) {
deserializer.ReadObject(dom_value);
EXPECT_TRUE(dom_value.GetType() == tdf::base::DomValue::Type::kNumber);
EXPECT_TRUE(dom_value.GetNumberType() == tdf::base::DomValue::NumberType::kInt32);
EXPECT_TRUE(dom_value.ToInt32() == value);
EXPECT_TRUE(dom_value.ToInt32Checked() == value);
}
void CheckDouble(double value) {
@@ -58,7 +58,7 @@ void CheckDouble(double value) {
deserializer.ReadObject(dom_value);
EXPECT_TRUE(dom_value.GetType() == tdf::base::DomValue::Type::kNumber);
EXPECT_TRUE(dom_value.GetNumberType() == tdf::base::DomValue::NumberType::kDouble);
EXPECT_TRUE(dom_value.ToDouble() == value);
EXPECT_TRUE(dom_value.ToDoubleChecked() == value);
}
void CheckString(std::string value) {
@@ -73,8 +73,8 @@ void CheckString(std::string value) {
tdf::base::DomValue dom_value;
deserializer.ReadObject(dom_value);
EXPECT_TRUE(dom_value.GetType() == tdf::base::DomValue::Type::kString);
EXPECT_TRUE(dom_value.ToString() == value);
EXPECT_TRUE(dom_value.ToString().length() == value.length());
EXPECT_TRUE(dom_value.ToStringChecked() == value);
EXPECT_TRUE(dom_value.ToStringChecked().length() == value.length());
}
void CheckMap(tdf::base::DomValue::DomValueObjectType value) {
@@ -90,16 +90,16 @@ void CheckMap(tdf::base::DomValue::DomValueObjectType value) {
deserializer.ReadObject(dom_value);
EXPECT_TRUE(dom_value.GetType() == tdf::base::DomValue::Type::kObject);
EXPECT_TRUE(dom_value.IsObject());
EXPECT_TRUE(dom_value.ToObject().size() == value.size());
EXPECT_TRUE(dom_value.ToObjectChecked().size() == value.size());
for (auto& v : dom_value.ToObject()) {
for (auto& v : dom_value.ToObjectChecked()) {
EXPECT_TRUE(value.find(v.first) != value.end());
auto c = value.find(v.first);
if (v.second.IsUInt32()) EXPECT_TRUE(v.second.ToUint32() == c->second.ToUint32());
if (v.second.IsInt32()) EXPECT_TRUE(v.second.ToInt32() == c->second.ToInt32());
if (v.second.IsDouble()) EXPECT_TRUE(v.second.ToDouble() == c->second.ToDouble());
if (v.second.IsString()) EXPECT_TRUE(v.second.ToString() == c->second.ToString());
if (v.second.IsObject()) CheckMap(c->second.ToObject());
if (v.second.IsUInt32()) EXPECT_TRUE(v.second.ToUint32Checked() == c->second.ToUint32Checked());
if (v.second.IsInt32()) EXPECT_TRUE(v.second.ToInt32Checked() == c->second.ToInt32Checked());
if (v.second.IsDouble()) EXPECT_TRUE(v.second.ToDoubleChecked() == c->second.ToDoubleChecked());
if (v.second.IsString()) EXPECT_TRUE(v.second.ToStringChecked() == c->second.ToStringChecked());
if (v.second.IsObject()) CheckMap(c->second.ToObjectChecked());
}
}
@@ -116,16 +116,16 @@ void CheckArray(tdf::base::DomValue::DomValueArrayType value) {
deserializer.ReadObject(dom_value);
EXPECT_TRUE(dom_value.GetType() == tdf::base::DomValue::Type::kArray);
EXPECT_TRUE(dom_value.IsArray());
EXPECT_TRUE(dom_value.ToArray().size() == value.size());
EXPECT_TRUE(dom_value.ToArrayChecked().size() == value.size());
for (size_t i = 0; i < dom_value.ToArray().size(); i++) {
auto v = dom_value.ToArray()[i];
for (size_t i = 0; i < dom_value.ToArrayChecked().size(); i++) {
auto v = dom_value.ToArrayChecked()[i];
auto c = value[i];
if (v.IsUInt32()) EXPECT_TRUE(v.ToUint32() == c.ToUint32());
if (v.IsInt32()) EXPECT_TRUE(v.ToInt32() == c.ToInt32());
if (v.IsDouble()) EXPECT_TRUE(v.ToDouble() == c.ToDouble());
if (v.IsString()) EXPECT_TRUE(v.ToString() == c.ToString());
if (v.IsArray()) CheckArray(c.ToArray());
if (v.IsUInt32()) EXPECT_TRUE(v.ToUint32Checked() == c.ToUint32Checked());
if (v.IsInt32()) EXPECT_TRUE(v.ToInt32Checked() == c.ToInt32Checked());
if (v.IsDouble()) EXPECT_TRUE(v.ToDoubleChecked() == c.ToDoubleChecked());
if (v.IsString()) EXPECT_TRUE(v.ToStringChecked() == c.ToStringChecked());
if (v.IsArray()) CheckArray(c.ToArrayChecked());
}
}
+34 -34
View File
@@ -45,21 +45,21 @@ TEST(DomValueTest, Int32) {
<< "Int32 Value GetNumberType() return is not DomValue::NumberType::kInt32.";
EXPECT_EQ(i32.IsNumber(), true) << "Int32 Value IsNumber() return is not true.";
EXPECT_EQ(i32.IsInt32(), true) << "Int32 Value IsInt32() return is not true.";
EXPECT_EQ(i32.ToInt32(), 0) << "Int32 Value ToInt32() is not equal to 0.";
EXPECT_EQ(i32.ToInt32Checked(), 0) << "Int32 Value ToInt32Checked() is not equal to 0.";
i32 = DomValue(-1);
EXPECT_EQ(i32.ToInt32(), -1) << "Int32 Value ToInt32() is not equal to -1.";
EXPECT_EQ(i32.ToInt32Checked(), -1) << "Int32 Value ToInt32Checked() is not equal to -1.";
i32 = DomValue(1);
EXPECT_EQ(i32.ToInt32(), 1) << "Int32 Value ToInt32() is not equal to 1.";
EXPECT_EQ(i32.ToInt32Checked(), 1) << "Int32 Value ToInt32Checked() is not equal to 1.";
i32 = DomValue(std::numeric_limits<int32_t>::max());
EXPECT_EQ(i32.ToInt32() == std::numeric_limits<int32_t>::max(), true)
<< "Int32 Value ToInt32() is not equal to " << std::numeric_limits<int32_t>::max() << ".";
EXPECT_EQ(i32.ToInt32Checked() == std::numeric_limits<int32_t>::max(), true)
<< "Int32 Value ToInt32Checked() is not equal to " << std::numeric_limits<int32_t>::max() << ".";
i32 = DomValue(std::numeric_limits<int32_t>::min());
EXPECT_EQ(i32.ToInt32() == std::numeric_limits<int32_t>::min(), true)
<< "Int32 Value ToInt32() is not equal to " << std::numeric_limits<int32_t>::min() << ".";
EXPECT_EQ(i32.ToInt32Checked() == std::numeric_limits<int32_t>::min(), true)
<< "Int32 Value ToInt32Checked() is not equal to " << std::numeric_limits<int32_t>::min() << ".";
std::random_device random_device;
std::mt19937 mt19937(random_device());
@@ -68,7 +68,7 @@ TEST(DomValueTest, Int32) {
for (int i = 0; i < 300; i++) {
int32_t r = distribution(mt19937);
i32 = DomValue(r);
EXPECT_EQ(i32.ToInt32() == r, true) << "Int32 Value ToInt32() is not equal to random value " << r << ".";
EXPECT_EQ(i32.ToInt32Checked() == r, true) << "Int32 Value ToInt32Checked() is not equal to random value " << r << ".";
}
DomValue copy_i32 = DomValue(i32);
@@ -77,8 +77,8 @@ TEST(DomValueTest, Int32) {
EXPECT_EQ(copy_i32.GetNumberType() == DomValue::NumberType::kInt32, true)
<< "Copy constructor Int32 Value GetNumberType() is return not DomValue::NumberType::kInt32.";
EXPECT_EQ(copy_i32.IsNumber(), true) << "Copy constructor Int32 Value IsNumber() return is not true.";
EXPECT_EQ(copy_i32.ToInt32(), i32.ToInt32())
<< "Copy constructor Int32 Value ToInt32() is not equal to Int32 Value ToInt32().";
EXPECT_EQ(copy_i32.ToInt32Checked(), i32.ToInt32Checked())
<< "Copy constructor Int32 Value ToInt32Checked() is not equal to Int32 Value ToInt32Checked().";
}
TEST(DomValueTest, UInt32) {
@@ -90,14 +90,14 @@ TEST(DomValueTest, UInt32) {
<< "Uint32 Value GetNumberType() return is not DomValue::NumberType::kUInt32.";
EXPECT_EQ(u32.IsNumber(), true) << "Uint32 Value IsNumber() return is not true.";
EXPECT_EQ(u32.IsUInt32(), true) << "Uint32 Value IsUInt32() return is not true.";
EXPECT_EQ(u32.ToUint32(), 0) << "Uint32 Value ToUInt32() is not equal to 0.";
EXPECT_EQ(u32.ToUint32Checked(), 0) << "Uint32 Value ToUInt32() is not equal to 0.";
uint32_t one = 1;
u32 = DomValue(one);
EXPECT_EQ(u32.ToUint32(), one) << "Uint32 Value ToUInt32() is not equal to 1.";
EXPECT_EQ(u32.ToUint32Checked(), one) << "Uint32 Value ToUInt32() is not equal to 1.";
u32 = DomValue(std::numeric_limits<uint32_t>::max());
EXPECT_EQ(u32.ToUint32() == std::numeric_limits<uint32_t>::max(), true)
EXPECT_EQ(u32.ToUint32Checked() == std::numeric_limits<uint32_t>::max(), true)
<< "Uint32 Value ToUint32() is not equal to " << std::numeric_limits<uint32_t>::max() << ".";
std::random_device random_device;
@@ -106,7 +106,7 @@ TEST(DomValueTest, UInt32) {
for (int i = 0; i < 300; i++) {
uint32_t r = distribution(mt19937);
u32 = DomValue(r);
EXPECT_EQ(u32.ToUint32() == r, true) << "Uint32 Value ToUint32() is not equal to random value " << r << ".";
EXPECT_EQ(u32.ToUint32Checked() == r, true) << "Uint32 Value ToUint32() is not equal to random value " << r << ".";
}
DomValue copy_u32 = DomValue(u32);
@@ -115,7 +115,7 @@ TEST(DomValueTest, UInt32) {
EXPECT_EQ(copy_u32.GetNumberType() == DomValue::NumberType::kUInt32, true)
<< "Copy constructor Uint32 Value GetNumberType() return is not DomValue::NumberType::kUInt32.";
EXPECT_EQ(copy_u32.IsNumber(), true) << "Copy constructor Uint32 Value IsNumber() return is not true.";
EXPECT_EQ(copy_u32.ToUint32(), u32.ToUint32())
EXPECT_EQ(copy_u32.ToUint32Checked(), u32.ToUint32Checked())
<< "Copy constructor Uint32 Value ToUint32() is not equal to Uint32 Value ToUint32().";
}
@@ -127,14 +127,14 @@ TEST(DomValueTest, Double) {
<< "Double Value GetNumberType() return is not DomValue::NumberType::kDouble.";
EXPECT_EQ(d.IsNumber(), true) << "Double Value IsNumber() return is not true.";
EXPECT_EQ(d.IsDouble(), true) << "Double Value IsDouble() return is not true.";
EXPECT_DOUBLE_EQ(d.ToDouble(), 0) << "Double Value ToDouble() is not equal to 0.";
EXPECT_DOUBLE_EQ(d.ToDoubleChecked(), 0) << "Double Value ToDoubleChecked() is not equal to 0.";
d = DomValue(1.0f);
EXPECT_EQ(d.ToDouble(), 1.0f) << "Double Value ToDouble() is not equal to 1.";
EXPECT_EQ(d.ToDoubleChecked(), 1.0f) << "Double Value ToDoubleChecked() is not equal to 1.";
d = DomValue(std::numeric_limits<double>::max());
EXPECT_EQ(d.ToDouble(), std::numeric_limits<double>::max())
<< "Double Value ToDouble() is not equal to " << std::numeric_limits<double>::max() << ".";
EXPECT_EQ(d.ToDoubleChecked(), std::numeric_limits<double>::max())
<< "Double Value ToDoubleChecked() is not equal to " << std::numeric_limits<double>::max() << ".";
std::random_device random_device;
std::mt19937 mt19937(random_device());
@@ -142,7 +142,7 @@ TEST(DomValueTest, Double) {
for (int i = 0; i < 300; i++) {
double r = distribution(mt19937);
d = DomValue(r);
EXPECT_EQ(d.ToDouble() == r, true) << "Double Value ToDouble() is not equal to random value " << r << ".";
EXPECT_EQ(d.ToDoubleChecked() == r, true) << "Double Value ToDoubleChecked() is not equal to random value " << r << ".";
}
DomValue copy_d = DomValue(d);
@@ -151,8 +151,8 @@ TEST(DomValueTest, Double) {
EXPECT_EQ(copy_d.GetNumberType() == DomValue::NumberType::kDouble, true)
<< "Copy constructor Double Value GetNumberType() return is not DomValue::NumberType::kDouble.";
EXPECT_EQ(copy_d.IsNumber(), true) << "Copy constructor Double Value IsNumber() return is not true.";
EXPECT_EQ(copy_d.ToDouble(), d.ToDouble())
<< "Copy constructor Double Value ToDouble() is not equal to Double Value ToDouble().";
EXPECT_EQ(copy_d.ToDoubleChecked(), d.ToDoubleChecked())
<< "Copy constructor Double Value ToDoubleChecked() is not equal to Double Value ToDoubleChecked().";
}
TEST(DomValueTest, String) {
@@ -161,43 +161,43 @@ TEST(DomValueTest, String) {
EXPECT_EQ(dom_value.GetType() == DomValue::Type::kString, true)
<< "String Value GetType() return is not DomValue::Type::kString.";
EXPECT_EQ(dom_value.IsString(), true) << "String Value IsString() return is not true.";
EXPECT_EQ(dom_value.ToString() == str, true) << "String Value ToString() is not equal to " << str << ".";
EXPECT_EQ(dom_value.ToStringChecked() == str, true) << "String Value ToStringChecked() is not equal to " << str << ".";
str = "~!@#$%^&*()-=";
dom_value = DomValue(str);
EXPECT_EQ(dom_value.ToString() == str, true) << "String Value ToString() is not equal to " << str << ".";
EXPECT_EQ(dom_value.ToStringChecked() == str, true) << "String Value ToStringChecked() is not equal to " << str << ".";
str = "1234567890";
dom_value = DomValue(str);
EXPECT_EQ(dom_value.ToString() == str, true) << "String Value ToString() is not equal to " << str << ".";
EXPECT_EQ(dom_value.ToStringChecked() == str, true) << "String Value ToStringChecked() is not equal to " << str << ".";
str = "腾讯";
dom_value = DomValue(str);
EXPECT_EQ(dom_value.ToString() == str, true) << "String Value ToString() is not equal to " << str << ".";
EXPECT_EQ(dom_value.ToStringChecked() == str, true) << "String Value ToStringChecked() is not equal to " << str << ".";
str = "";
dom_value = DomValue(str);
EXPECT_EQ(dom_value.ToString() == str, true) << "String Value ToString() is not equal to ''.";
EXPECT_EQ(dom_value.ToStringChecked() == str, true) << "String Value ToStringChecked() is not equal to ''.";
const char* cstr = "abcdefghijklmnopqrstuvwxyz";
dom_value = DomValue(cstr);
EXPECT_STREQ(dom_value.ToString().c_str(), cstr) << "String Value ToString() is not equal to " << cstr << ".";
EXPECT_STREQ(dom_value.ToStringChecked().c_str(), cstr) << "String Value ToStringChecked() is not equal to " << cstr << ".";
cstr = "~!@#$%^&*()-=";
dom_value = DomValue(cstr);
EXPECT_STREQ(dom_value.ToString().c_str(), cstr) << "String Value ToString() is not equal to " << cstr << ".";
EXPECT_STREQ(dom_value.ToStringChecked().c_str(), cstr) << "String Value ToStringChecked() is not equal to " << cstr << ".";
cstr = "1234567890";
dom_value = DomValue(cstr);
EXPECT_STREQ(dom_value.ToString().c_str(), cstr) << "String Value ToString() is not equal to " << cstr << ".";
EXPECT_STREQ(dom_value.ToStringChecked().c_str(), cstr) << "String Value ToStringChecked() is not equal to " << cstr << ".";
cstr = "腾讯";
dom_value = DomValue(cstr);
EXPECT_STREQ(dom_value.ToString().c_str(), cstr) << "String Value ToString() is not equal to " << cstr << ".";
EXPECT_STREQ(dom_value.ToStringChecked().c_str(), cstr) << "String Value ToStringChecked() is not equal to " << cstr << ".";
// cstr = nullptr;
// dom_value = DomValue(cstr);
// EXPECT_STREQ(dom_value.ToString().c_str(), cstr) << "String Value ToString() is not equal to " << cstr << ".";
// EXPECT_STREQ(dom_value.ToStringChecked().c_str(), cstr) << "String Value ToStringChecked() is not equal to " << cstr << ".";
}
TEST(DomValueTest, kObject) {
@@ -215,7 +215,7 @@ TEST(DomValueTest, kObject) {
EXPECT_EQ(dom_value.GetType() == DomValue::Type::kObject, true)
<< "Object Value GetType() return is not DomValue::Type::kObject.";
EXPECT_EQ(dom_value.IsObject(), true) << "Object Value IsObject() return is not true.";
EXPECT_EQ(dom_value.ToObject().size() == 8, true) << "Object Value size() is not equal to 8.";
EXPECT_EQ(dom_value.ToObjectChecked().size() == 8, true) << "Object Value size() is not equal to 8.";
}
TEST(DomValueTest, kArray) {
@@ -233,7 +233,7 @@ TEST(DomValueTest, kArray) {
EXPECT_EQ(dom_value.GetType() == DomValue::Type::kArray, true)
<< "Array Value GetType() return is not DomValue::Type::kArray.";
EXPECT_EQ(dom_value.IsArray(), true) << "Array Value IsArray() return is not true.";
EXPECT_EQ(dom_value.ToArray().size() == 8, true) << "Array Value size() is not equal to 8.";
EXPECT_EQ(dom_value.ToArrayChecked().size() == 8, true) << "Array Value size() is not equal to 8.";
}
} // namespace testing