public function testGroupByProtocols()
 {
     $settings = new Kademlia\Settings();
     $settings->supported_protocols = [1 => [], 2 => [], 3 => []];
     $protocol_one_nodes = [];
     for ($i = 0; $i < 10; $i++) {
         $protocol_one_nodes[$i] = KademliaTestFactory::constructNode(['protocols' => [1 => []]]);
     }
     $protocol_two_nodes = [];
     for ($i = 0; $i < 20; $i++) {
         $protocol_two_nodes[$i] = KademliaTestFactory::constructNode(['protocols' => [2 => []]]);
     }
     $protocol_three_nodes = [];
     for ($i = 0; $i < 30; $i++) {
         $protocol_three_nodes[$i] = KademliaTestFactory::constructNode(['protocols' => [3 => []]]);
     }
     $node_list = new Kademlia\NodeList(array_merge($protocol_one_nodes, $protocol_two_nodes, $protocol_three_nodes));
     $groups = $node_list->groupByProtocols($settings);
     $this->assertEqual(array_keys($groups), [1, 2, 3]);
     $this->assertEqual($groups[1]->size(), count($protocol_one_nodes));
     $this->assertEqual($groups[2]->size(), count($protocol_two_nodes));
     $this->assertEqual($groups[3]->size(), count($protocol_three_nodes));
 }