def test5_0_iter_pins(self):
     """
     GpioCtrl >5_0> read cfg and iterate a couple of times over the pins
     """
     ctrl = GpioCtrl(self.opt)
     ctrl.read_cfg()
     cfg = {
         'groups':'a',
         'prio':'0',
         'duration':'10',
     }
     ctrl.set_pin_cfg('1', cfg)
     ctrl.set_pin_cfg('2', cfg)
     ctrl.set_pin_cfg('3', cfg)
     ctrl.set_pin_cfg('1', {'start':'00:05'})
     ctrl.set_pin_cfg('2', {'start':'00:10'})
     ctrl.set_pin_cfg('3', {'start':'00:15'})
     print "### Before arrange"
     for key, item  in ctrl.gpio_pins.items():
         if isinstance(item, MainPin):
             print "MainPin: ", key
         else:
             print "SlavePin: ", key, item.get_dt_on(), item.get_dt_off()
     ctrl.arrange_pins(True)
     print "### After arrange"
     for key, item  in ctrl.gpio_pins.items():
         if not isinstance(item, MainPin):
             print "SlavePin: ", key, item.get_dt_on(), item.get_dt_off()
     # t0
     dt = self.create_dt(5, 0)
     ctrl.trigger_pins(dt)
     mask = {'1': '1', '2': '0', '3': '0'}
     self.check_pins(ctrl, mask)
     # t1
     dt = self.create_dt(16, 0)
     ctrl.trigger_pins(dt)
     mask = {'1': '0', '2': '1', '3': '0'}
     self.check_pins(ctrl, mask)
     # t2
     dt = self.create_dt(25, 0)
     ctrl.trigger_pins(dt)
     mask = {'1': '0', '2': '0', '3': '1'}
     self.check_pins(ctrl, mask)
 def test3_1_check_arrangement_group_collision(self):
     """
     GpioCtrl >3_1> Pins are grouped, times are equal, rpio differ
     """
     ctrl = GpioCtrl(self.opt)
     ctrl.read_cfg()
     ctrl.set_pin_cfg('1', {'groups':'a',
                   'start':'00:00',
                   'prio':'0',
                   'duration':'10',
                   })
     ctrl.set_pin_cfg('2', {'groups':'a',
                   'start':'00:00',
                   'prio':'1',
                   'duration':'10',
                   })
     ctrl.set_pin_cfg('3', {'groups':'a',
                   'start':'00:00',
                   'prio':'2',
                   'duration':'10',
                   })
     ctrl.set_pin_cfg('4', {'groups':'b',
                   'start':'00:00',
                   'prio':'0',
                   'duration':'10',
                   })
     ctrl.set_pin_cfg('5', {'groups':'b'})
     pincfg_path = "%s/%s/etc/raspigpioctrl/" % (PREFIX, self.opt['-r'])
     pin1 = SlavePin(self.opt, "%s/pin1.cfg" % pincfg_path)
     pin1.set_cfg({'groups':'a',
                   'start':'00:00',
                   'prio':'0',
                   'duration':'10',
                   })
     pin2 = SlavePin(self.opt, "%s/pin2.cfg" % pincfg_path)
     pin2.set_cfg({'groups':'a',
                   'start':'00:10',
                   'prio':'1',
                   'duration':'10',
                   })
     pin3 = SlavePin(self.opt, "%s/pin3.cfg" % pincfg_path)
     pin3.set_cfg({'groups':'a',
                   'start':'00:20',
                   'prio':'2',
                   'duration':'10',
                   })
     pin4 = SlavePin(self.opt, "%s/pin4.cfg" % pincfg_path)
     pin4.set_cfg({'groups':'b',
                   'start':'00:00',
                   'prio':'0',
                   'duration':'10',
                   })
     pin5 = MainPin(self.opt, "%s/main5.cfg" % pincfg_path)
     pin5.set_cfg({'groups':'b'})
     exp_items = {
         'gpio_pins': {
             '1': pin1,
             '2': pin2,
             '3': pin3,
             '4': pin4,
             '5': pin5,
         }
     }
     ctrl.arrange_pins()
     self.check(ctrl, exp_items)