Ejemplo n.º 1
0
def test_walk_signals(include_lazy):
    class SubSubDevice(Device):
        cpt4 = Component(FakeSignal, '4', lazy=True)

    class SubDevice(Device):
        cpt1 = Component(FakeSignal, '1')
        cpt2 = Component(FakeSignal, '2')
        cpt3 = Component(FakeSignal, '3')
        subsub = Component(SubSubDevice, '')

    class MyDevice(Device):
        sub1 = Component(SubDevice, 'sub1')
        sub2 = Component(SubDevice, 'sub2')
        sub3 = Component(SubDevice, 'sub3')
        cpt3 = Component(FakeSignal, 'cpt3')

    print(MyDevice.sub1.cls.cpt1)

    dev = MyDevice('', name='mydev')
    dev.summary()

    expected = [
        ComponentWalk(ancestors=(dev, dev.sub1, ),
                      dotted_name='sub1.cpt1',
                      item=dev.sub1.cpt1),
        ComponentWalk(ancestors=(dev, dev.sub1, ),
                      dotted_name='sub1.cpt2',
                      item=dev.sub1.cpt2),
        ComponentWalk(ancestors=(dev, dev.sub1, ),
                      dotted_name='sub1.cpt3',
                      item=dev.sub1.cpt3),
        ComponentWalk(ancestors=(dev, dev.sub1, dev.sub1.subsub, ),
                      dotted_name='sub1.subsub.cpt4',
                      item=dev.sub1.subsub.cpt4),
        ComponentWalk(ancestors=(dev, dev.sub2, ),
                      dotted_name='sub2.cpt1',
                      item=dev.sub2.cpt1),
        ComponentWalk(ancestors=(dev, dev.sub2, ),
                      dotted_name='sub2.cpt2',
                      item=dev.sub2.cpt2),
        ComponentWalk(ancestors=(dev, dev.sub2, ),
                      dotted_name='sub2.cpt3',
                      item=dev.sub2.cpt3),
        ComponentWalk(ancestors=(dev, dev.sub2, dev.sub2.subsub, ),
                      dotted_name='sub2.subsub.cpt4',
                      item=dev.sub2.subsub.cpt4),
        ComponentWalk(ancestors=(dev, dev.sub3, ),
                      dotted_name='sub3.cpt1',
                      item=dev.sub3.cpt1),
        ComponentWalk(ancestors=(dev, dev.sub3, ),
                      dotted_name='sub3.cpt2',
                      item=dev.sub3.cpt2),
        ComponentWalk(ancestors=(dev, dev.sub3, ),
                      dotted_name='sub3.cpt3',
                      item=dev.sub3.cpt3),
        ComponentWalk(ancestors=(dev, dev.sub3, dev.sub3.subsub, ),
                      dotted_name='sub3.subsub.cpt4',
                      item=dev.sub3.subsub.cpt4),
        ComponentWalk(ancestors=(dev, ),
                      dotted_name='cpt3',
                      item=dev.cpt3),
    ]

    if not include_lazy:
        expected = [item for item in expected
                    if 'cpt4' not in item.dotted_name
                    ]

    assert list(dev.walk_signals(include_lazy=include_lazy)) == expected
Ejemplo n.º 2
0
def test_walk_components():
    class SubSubDevice(Device):
        cpt4 = Component(FakeSignal, '4')

    class SubDevice(Device):
        cpt1 = Component(FakeSignal, '1')
        cpt2 = Component(FakeSignal, '2')
        cpt3 = Component(FakeSignal, '3')
        subsub = Component(SubSubDevice, '')

    class MyDevice(Device):
        sub1 = Component(SubDevice, 'sub1')
        sub2 = Component(SubDevice, 'sub2')
        sub3 = Component(SubDevice, 'sub3')
        cpt3 = Component(FakeSignal, 'cpt3')

    assert list(MyDevice.walk_components()) == [
        ComponentWalk(ancestors=(MyDevice, ),
                      dotted_name='sub1',
                      item=MyDevice.sub1),
        ComponentWalk(ancestors=(MyDevice, SubDevice, ),
                      dotted_name='sub1.cpt1',
                      item=MyDevice.sub1.cls.cpt1),
        ComponentWalk(ancestors=(MyDevice, SubDevice, ),
                      dotted_name='sub1.cpt2',
                      item=MyDevice.sub1.cls.cpt2),
        ComponentWalk(ancestors=(MyDevice, SubDevice, ),
                      dotted_name='sub1.cpt3',
                      item=MyDevice.sub1.cls.cpt3),
        ComponentWalk(ancestors=(MyDevice, SubDevice, ),
                      dotted_name='sub1.subsub',
                      item=MyDevice.sub1.cls.subsub),
        ComponentWalk(ancestors=(MyDevice, SubDevice, SubSubDevice, ),
                      dotted_name='sub1.subsub.cpt4',
                      item=MyDevice.sub1.cls.subsub.cls.cpt4),
        ComponentWalk(ancestors=(MyDevice, ),
                      dotted_name='sub2',
                      item=MyDevice.sub2),
        ComponentWalk(ancestors=(MyDevice, SubDevice, ),
                      dotted_name='sub2.cpt1',
                      item=MyDevice.sub2.cls.cpt1),
        ComponentWalk(ancestors=(MyDevice, SubDevice, ),
                      dotted_name='sub2.cpt2',
                      item=MyDevice.sub2.cls.cpt2),
        ComponentWalk(ancestors=(MyDevice, SubDevice, ),
                      dotted_name='sub2.cpt3',
                      item=MyDevice.sub2.cls.cpt3),
        ComponentWalk(ancestors=(MyDevice, SubDevice, ),
                      dotted_name='sub2.subsub',
                      item=MyDevice.sub2.cls.subsub),
        ComponentWalk(ancestors=(MyDevice, SubDevice, SubSubDevice, ),
                      dotted_name='sub2.subsub.cpt4',
                      item=MyDevice.sub2.cls.subsub.cls.cpt4),
        ComponentWalk(ancestors=(MyDevice, ),
                      dotted_name='sub3',
                      item=MyDevice.sub3),
        ComponentWalk(ancestors=(MyDevice, SubDevice, ),
                      dotted_name='sub3.cpt1',
                      item=MyDevice.sub3.cls.cpt1),
        ComponentWalk(ancestors=(MyDevice, SubDevice, ),
                      dotted_name='sub3.cpt2',
                      item=MyDevice.sub3.cls.cpt2),
        ComponentWalk(ancestors=(MyDevice, SubDevice, ),
                      dotted_name='sub3.cpt3',
                      item=MyDevice.sub3.cls.cpt3),
        ComponentWalk(ancestors=(MyDevice, SubDevice, ),
                      dotted_name='sub3.subsub',
                      item=MyDevice.sub3.cls.subsub),
        ComponentWalk(ancestors=(MyDevice, SubDevice, SubSubDevice, ),
                      dotted_name='sub3.subsub.cpt4',
                      item=MyDevice.sub3.cls.subsub.cls.cpt4),
        ComponentWalk(ancestors=(MyDevice, ),
                      dotted_name='cpt3',
                      item=MyDevice.cpt3),
    ]