Files
OCCT/tests/metadata/step/end
Petras Vestartas 91000c49c5 Data Exchange, STEP Export - General Attributes (#634)
- Adds metadata writing capability through new `MetadataMode` flag and `writeMetadata` method
- Exports string metadata as STEP `property_definition` entities linked to product definitions
- Integrates metadata writing into the main transfer workflow alongside existing property writing
2025-08-12 09:29:47 +01:00

73 lines
2.9 KiB
Plaintext

# Set flag dump_file to 1 in order to regenerate script files with actual data
# used as reference. In this mode all tests intentionally report failure.
set dump_file 0
set aReadMetadataConfig "provider.STEP.OCC.read.productmetadata : 1"
set aWriteMetadataConfig "provider.STEP.OCC.write.metadata : 1"
# Read original file
set path_file [locate_data_file $filename]
ReadFile anDocInput_1 $path_file -conf $aReadMetadataConfig
#Name for a file to write
set aWrittenFileName $imagedir/${casename}_written.step
# Write file
WriteFile anDocInput_1 $aWrittenFileName -conf $aWriteMetadataConfig
set aSize [file size $aWrittenFileName]
# Read just written and get its metadata.
ReadFile anDocInput_2 $aWrittenFileName -conf $aReadMetadataConfig
set aMetaDataBase [ XGetProperties anDocInput_2 ]
set aMetaData [format $aMetaDataBase]
if { $dump_file == 1 } {
set fd_stream [open $dirname/$groupname/$gridname/$casename w]
puts $fd_stream "# !!!! This file is generated automatically, do not edit manually! See end script"
puts $fd_stream "set filename $filename"
puts $fd_stream "set ref_size $aSize"
puts $fd_stream "set check_metadata $check_metadata"
if {$check_metadata == 1} {
puts $fd_stream "set ref_metadata \{$aMetaData\}"
}
close $fd_stream
puts "Error : Running in regeneration mode, comparison was not performed!"
} else {
set tolerance [expr {min(max(0.001 * $ref_size, 1), 100)}]
if {abs($aSize - $ref_size) > $tolerance} {
puts "Error: Wrong file size $aSize instead of $ref_size"
}
if {$check_metadata == 1} {
# Compare metadata in files.
set aMetaDataLines [split ${aMetaData} "\n"]
set aRefMetaDataLines [split ${ref_metadata} "\n"]
set aMetaDataLinesCount [llength $aMetaDataLines]
set aRefMetaDataLinesCount [llength $aRefMetaDataLines]
set aMinLineCount [expr min($aMetaDataLinesCount, $aRefMetaDataLinesCount)]
for {set aLineIndex 0} {$aLineIndex < $aMinLineCount} {incr aLineIndex} {
set aCurrentMetaDataLine [lindex $aMetaDataLines $aLineIndex]
set aCurrentRefMetaDataLine [lindex $aRefMetaDataLines $aLineIndex]
if {$aCurrentMetaDataLine != $aCurrentRefMetaDataLine} {
puts "Error: Incorrect metadata at line $aLineIndex"
puts "Expected: \"$aCurrentRefMetaDataLine\""
puts "Actual: \"$aCurrentMetaDataLine\""
break
}
}
# It is faster to check this condition first, before string-by-string comparison,
# however string-by-string comparison would be more informative in case of error.
if {$aMetaDataLinesCount != $aRefMetaDataLinesCount} {
puts "Error: Line count is metadata doesn't match the expected value."
puts "Expected: $aRefMetaDataLinesCount"
puts "Actual: $aMetaDataLinesCount"
}
}
}
# finalize scenario
Close anDocInput_1
Close anDocInput_2
file delete $aWrittenFileName
puts "TEST COMPLETED"