puts "TODO OCC11111 ALL: Faulty OCC23069"
puts "TODO OCC11111 ALL: FPS_percent"
puts "TODO ?OCC11111 ALL: CPU_percent"

puts "==========="
puts "OCC23069"
puts "==========="
puts ""
################################################################################
# OpenGL state extraction for GL_RENDER_MODE significantly impact performance
################################################################################

set BugNumber OCC23069

vinit
for {set anInter 1} {$anInter <= 1000} {incr anInter} {
   box b${anInter} [expr $anInter * 20] 0 0 10 20 30
   vdisplay b${anInter}
}
vfit

set Log [vfps]

#
proc GetPercent {Value GoodValue} {
    set Percent 0.
    if {${GoodValue} != 0.} {
        set Percent [expr abs(${Value} - ${GoodValue}) / abs(double(${GoodValue})) * 100.]
    } elseif {${Value} != 0.} {
	set Percent [expr abs(${GoodValue} - ${Value}) / abs(double(${Value})) * 100.]
    } else {
	set Percent 0.
    }
    return ${Percent}
}

set percent_max 20.0

set good_FPS 4.2
set good_CPU 15.0

set status 0
if { [llength ${Log}] == 5} {
    if { [regexp {FPS: [-0-9.+eE]+} $Log] && [regexp {CPU: [-0-9.+eE]+ msec} $Log] } {
        set status 0
        regexp {FPS: ([-0-9.+eE]+)} $Log full FPS
        regexp {CPU: ([-0-9.+eE]+) msec} $Log full CPU

        set CPU_percent [GetPercent ${CPU} ${good_CPU}]
        if { ${CPU_percent} > ${percent_max} } {
            puts "CPU_percent = ${CPU_percent} ; CPU: Faulty"
            set status 1
        }

        set FPS_percent [GetPercent ${FPS} ${good_FPS}]
        if { ${FPS_percent} > ${percent_max} } {
            puts "FPS_percent = ${FPS_percent} ; FPS: Faulty"
            set status 1
        }
    } else {
	set status 1
    }
} else {
   set status 1
}

# Resume
puts ""
if { ${status} == 0 } {
   puts "OK ${BugNumber}"
} else {
   puts "Faulty ${BugNumber}"
}

