Сетевая маска к CIDR в рубине

Значения так случайны в аспектах геймплея разработки, что это была бы неправдоподобная идея протестировать на абсолютные значения

, Но мы можем протестировать детерминированные значения. Например, модульный тест мог бы сделать, чтобы Guybrush Трипвуд переместился к (новаторской) двери, открылся, дверь (используйте команду), сбой, потому что у него нет ключа в его материально-технических ресурсах (обратная связь), выбирает дверной ключ (новаторский + управление запасами) и затем наконец открытие двери.

Все эти пути детерминированы. С этим модульным тестом я могу осуществить рефакторинг диспетчера памяти и если бы это так или иначе повредило стандартную программу управления запасами, модульный тест перестал бы работать.

Это - всего одна идея для поблочного тестирования в играх. Я хотел бы знать другие идеи, следовательно, мотивацию для этого сообщения.

11
задан Dean Smith 1 December 2009 в 12:33
поделиться

1 ответ

Вот быстрый и грязный способ

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"
14
ответ дан 3 December 2019 в 01:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: