public static function newList(array $blocks)
 {
     foreach ($blocks as $key => $block) {
         $blocks[$key] = PhutilCIDRBlock::newBlock($block);
     }
     $obj = new PhutilCIDRList();
     $obj->blocks = $blocks;
     return $obj;
 }
 public function testCIDRBlockContains()
 {
     $cases = array('0.0.0.0/0' => array('0.0.0.0' => true, '1.1.1.1' => true, '2.3.4.5' => true), '0.0.0.2/32' => array('0.0.0.1' => false, '0.0.0.2' => true, '0.0.0.3' => false), '172.30.0.0/16' => array('172.29.255.255' => false, '172.30.0.0' => true, '172.30.255.255' => true, '172.31.0.0' => false));
     foreach ($cases as $input_block => $tests) {
         $block = PhutilCIDRBlock::newBlock($input_block);
         foreach ($tests as $input => $expect) {
             $this->assertEqual($expect, $block->containsAddress($input), 'PhutilCIDRBlock[' . $input_block . ']->containsAddress(' . $input . ')');
         }
     }
 }