Это произойдет на каждом языке, подумайте об этом
AreEqual(s, s.upcase())
vs.
AreEqual(s, s.upcase!())
В обоих случаях функция upcase (!) должна вызываться перед ее передачей в AreEqual, а в случае upcase!()
фактически меняет значение s . upcase()
возвращает новую строку с заглавной версией s.