Я нашел один случай, который не имеет смысла.
У меня есть следующая функция:
test_array_deep_copy: BOOLEAN
local
imp, old_imp: ARRAY[STRING]
do
comment("Test of a deep copy.")
create {ARRAY[STRING]} imp.make_empty
imp.force ("Alan", 1)
imp.force ("Mark", 2)
imp.force ("Tom", 3)
old_imp := imp.deep_twin
imp[2] := "Jim"
Result :=
across
1 |..| imp.count as j
all
j.item /= 2 implies imp [j.item] = old_imp [j.item]
end
check not Result end
end
Поскольку это глубокая копия, это означает, что адреса imp и old_imp разные, а также то, что его атрибуты в обоих случаях также относятся к разным адресам.
Итак, этот «Результат» после цикла должен быть ложным, потому что адреса в imp и old_imp с одним и тем же индексом разные.
Поэтому, когда я отлаживаю этот код, он говорит, что результат установлен как ложный после завершения цикла.
Проблема в том, что «проверить не результат» не превращает ложь в истину.
Если я запускаю систему рабочей среды, она говорит следующее:
Я не знаю, почему. «not» перед «Result» в выражении «check not Result» должно сделать всю проверку истинной, поэтому в системе рабочей среды должно быть указано «PASSED», но это не удается.
почему это?