Add XCUI schema document regression coverage
This commit is contained in:
@@ -24,6 +24,33 @@ size_t MeasureDiagnosticMemorySize(const UIDocumentDiagnostic& diagnostic) {
|
||||
return sizeof(UIDocumentDiagnostic) + diagnostic.message.Length();
|
||||
}
|
||||
|
||||
size_t MeasureSchemaAttributeMemorySize(const UISchemaAttributeDefinition& attribute) {
|
||||
size_t size = sizeof(UISchemaAttributeDefinition) + attribute.name.Length();
|
||||
for (const Containers::String& value : attribute.allowedValues) {
|
||||
size += sizeof(Containers::String) + value.Length();
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
size_t MeasureSchemaElementMemorySize(const UISchemaElementDefinition& element) {
|
||||
size_t size = sizeof(UISchemaElementDefinition) + element.tagName.Length();
|
||||
for (const UISchemaAttributeDefinition& attribute : element.attributes) {
|
||||
size += MeasureSchemaAttributeMemorySize(attribute);
|
||||
}
|
||||
for (const UISchemaElementDefinition& child : element.children) {
|
||||
size += MeasureSchemaElementMemorySize(child);
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
size_t MeasureSchemaDefinitionMemorySize(const UISchemaDefinition& schemaDefinition) {
|
||||
size_t size = sizeof(UISchemaDefinition) + schemaDefinition.name.Length();
|
||||
for (const UISchemaElementDefinition& element : schemaDefinition.elements) {
|
||||
size += MeasureSchemaElementMemorySize(element);
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
void UIDocumentResource::Release() {
|
||||
@@ -47,6 +74,7 @@ void UIDocumentResource::RecalculateMemorySize() {
|
||||
size += m_document.sourcePath.Length();
|
||||
size += m_document.displayName.Length();
|
||||
size += MeasureNodeMemorySize(m_document.rootNode);
|
||||
size += MeasureSchemaDefinitionMemorySize(m_document.schemaDefinition);
|
||||
for (const Containers::String& dependency : m_document.dependencies) {
|
||||
size += sizeof(Containers::String) + dependency.Length();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user