Значения так случайны в аспектах геймплея разработки, что это была бы неправдоподобная идея протестировать на абсолютные значения
, Но мы можем протестировать детерминированные значения. Например, модульный тест мог бы сделать, чтобы Guybrush Трипвуд переместился к (новаторской) двери, открылся, дверь (используйте команду), сбой, потому что у него нет ключа в его материально-технических ресурсах (обратная связь), выбирает дверной ключ (новаторский + управление запасами) и затем наконец открытие двери.
Все эти пути детерминированы. С этим модульным тестом я могу осуществить рефакторинг диспетчера памяти и если бы это так или иначе повредило стандартную программу управления запасами, модульный тест перестал бы работать.
Это - всего одна идея для поблочного тестирования в играх. Я хотел бы знать другие идеи, следовательно, мотивацию для этого сообщения.
Вот быстрый и грязный способ
require 'ipaddr'
puts IPAddr.new("255.255.255.0").to_i.to_s(2).count("1")
Для этого должна быть правильная функция, я не смог ее найти, поэтому я просто считаю «1»
Если вы собираетесь чтобы использовать функцию в нескольких местах и не возражать против исправления обезьян, это может помочь:
IPAddr.class_eval
def to_cidr
"/" + self.to_i.to_s(2).count("1")
end
end
Тогда вы получите
IPAddr.new('255.255.255.0').to_cidr
# => "/24"