def _generate_assertion_for_object_declaration(self, object_declaration): required_members = filter(lambda member: not member.is_optional, object_declaration.type_members) optional_members = filter(lambda member: member.is_optional, object_declaration.type_members) should_count_properties = not Generator.type_has_open_fields(object_declaration.type) lines = [] lines.append('#if !ASSERT_DISABLED') lines.append('void BindingTraits<%s>::assertValueHasExpectedType(Inspector::InspectorValue* value)' % (Generator.type_builder_string_for_type(object_declaration.type))) lines.append("""{ RefPtr<InspectorObject> object; bool castRes = value->asObject(&object); ASSERT_UNUSED(castRes, castRes);""") for type_member in required_members: args = { 'memberName': type_member.member_name, 'assertMethod': Generator.assertion_method_for_type_member(type_member, object_declaration) } lines.append(""" { InspectorObject::iterator %(memberName)sPos = object->find(ASCIILiteral("%(memberName)s")); ASSERT(%(memberName)sPos != object->end()); %(assertMethod)s(%(memberName)sPos->value.get()); }""" % args) if should_count_properties: lines.append('') lines.append(' int foundPropertiesCount = %s;' % len(required_members)) for type_member in optional_members: args = { 'memberName': type_member.member_name, 'assertMethod': Generator.assertion_method_for_type_member(type_member, object_declaration) } lines.append(""" { InspectorObject::iterator %(memberName)sPos = object->find(ASCIILiteral("%(memberName)s")); if (%(memberName)sPos != object->end()) { %(assertMethod)s(%(memberName)sPos->value.get());""" % args) if should_count_properties: lines.append(' ++foundPropertiesCount;') lines.append(' }') lines.append(' }') if should_count_properties: lines.append(' if (foundPropertiesCount != object->size())') lines.append(' FATAL("Unexpected properties in object: %s\\n", object->toJSONString().ascii().data());') lines.append('}') lines.append('#endif // !ASSERT_DISABLED') return '\n'.join(lines)
def _generate_assertion_for_object_declaration(self, object_declaration): required_members = filter(lambda member: not member.is_optional, object_declaration.type_members) optional_members = filter(lambda member: member.is_optional, object_declaration.type_members) should_count_properties = not Generator.type_has_open_fields(object_declaration.type) lines = [] lines.append('#if !ASSERT_DISABLED') lines.append('void BindingTraits<%s>::assertValueHasExpectedType(Inspector::InspectorValue* value)' % (Generator.protocol_type_string_for_type(object_declaration.type))) lines.append("""{ RefPtr<InspectorObject> object; bool castSucceeded = value->asObject(object); ASSERT_UNUSED(castSucceeded, castSucceeded);""") for type_member in required_members: args = { 'memberName': type_member.member_name, 'assertMethod': Generator.assertion_method_for_type_member(type_member, object_declaration) } lines.append(""" { InspectorObject::iterator %(memberName)sPos = object->find(ASCIILiteral("%(memberName)s")); ASSERT(%(memberName)sPos != object->end()); %(assertMethod)s(%(memberName)sPos->value.get()); }""" % args) if should_count_properties: lines.append('') lines.append(' int foundPropertiesCount = %s;' % len(required_members)) for type_member in optional_members: args = { 'memberName': type_member.member_name, 'assertMethod': Generator.assertion_method_for_type_member(type_member, object_declaration) } lines.append(""" { InspectorObject::iterator %(memberName)sPos = object->find(ASCIILiteral("%(memberName)s")); if (%(memberName)sPos != object->end()) { %(assertMethod)s(%(memberName)sPos->value.get());""" % args) if should_count_properties: lines.append(' ++foundPropertiesCount;') lines.append(' }') lines.append(' }') if should_count_properties: lines.append(' if (foundPropertiesCount != object->size())') lines.append(' FATAL("Unexpected properties in object: %s\\n", object->toJSONString().ascii().data());') lines.append('}') lines.append('#endif // !ASSERT_DISABLED') return '\n'.join(lines)
def _generate_assertion_for_enum(self, enum_member, object_declaration): lines = [] lines.append('#if !ASSERT_DISABLED') lines.append('void %s(Inspector::InspectorValue* value)' % Generator.assertion_method_for_type_member(enum_member, object_declaration)) lines.append('{') lines.append(' String s;') lines.append(' bool cast_res = value->asString(&s);') lines.append(' ASSERT(cast_res);') assert_condition = ' || '.join(['s == "%s"' % enum_value for enum_value in enum_member.type.enum_values()]) lines.append(' ASSERT(%s);' % assert_condition) lines.append('}') lines.append('#endif // !ASSERT_DISABLED') return '\n'.join(lines)
def _generate_assertion_for_enum(self, enum_member, object_declaration): lines = [] lines.append('#if !ASSERT_DISABLED') lines.append('void %s(Inspector::InspectorValue* value)' % Generator.assertion_method_for_type_member(enum_member, object_declaration)) lines.append('{') lines.append(' String result;') lines.append(' bool castSucceeded = value->asString(result);') lines.append(' ASSERT(castSucceeded);') assert_condition = ' || '.join(['result == "%s"' % enum_value for enum_value in enum_member.type.enum_values()]) lines.append(' ASSERT(%s);' % assert_condition) lines.append('}') lines.append('#endif // !ASSERT_DISABLED') return '\n'.join(lines)