Ejemplo n.º 1
0
    def test_light_object_sub(self):
        d = LightCommandDelay(arguments=Arguments([1]), noop=" ; comment")
        ds = LightSequenceDefsub(arguments=Arguments(['sub_name']),
                                 objects=[d],
                                 noop=' ; defsub')
        s = LightCommandSub(arguments=Arguments(['sub_name']),
                            noop=" ; comment")
        m = LightSequenceMain(objects=[s])
        f = LightSequenceFile(objects=[m, ds])
        lo = LightSequenceLoop(arguments=Arguments([5]), objects=[s])

        self.assertEqual(
            ds.export(),
            "defsub (sub_name) ; defsub\ndelay (1) ; comment\nendsub")
        self.assertEqual(ds.get_duration(), 1)

        self.assertEqual(s.export(), "sub (sub_name) ; comment")
        self.assertEqual(s.get_duration(root=f), 1)

        self.assertEqual(m.export(), "sub (sub_name) ; comment\nend")
        self.assertEqual(m.get_duration(root=f), 1)

        self.assertEqual(
            f.export(),
            "sub (sub_name) ; comment\nend\ndefsub (sub_name) ; defsub\ndelay (1) ; comment\nendsub"
        )
        self.assertEqual(f.get_duration(), 1)

        self.assertEqual(lo.export(),
                         "loop (5)\nsub (sub_name) ; comment\nendloop")
        self.assertEqual(lo.get_duration(root=f), 5)

        m.append(lo)
        self.assertEqual(f.get_duration(), 6)
Ejemplo n.º 2
0
 def test_compress_ramp_1(self):
     m1 = LightSequenceMain(objects=[
         LightCommandColor(arguments=Arguments([0, 0, 0])),
         LightCommandRamp(arguments=Arguments([85, 50, 20, 10])),
         LightCommandRamp(arguments=Arguments([170, 100, 40, 10]))
     ])
     m2 = LightSequenceMain(objects=[
         LightCommandColor(arguments=Arguments([0, 0, 0])),
         LightCommandRamp(arguments=Arguments([170, 100, 40, 20]))
     ])
     m1.compress(options={'epsilon': 0})
     self.assertEqual(m1, m2)
Ejemplo n.º 3
0
    def test_defsub(self):
        sub = LightCommandSub(arguments=Arguments(objects=["sub_name"]))
        ds = LightSequenceDefsub(arguments=Arguments(objects=["sub_name"]))

        self.assertEqual(sub.export(), "sub (sub_name)")
        self.assertEqual(ds.export(), "defsub (sub_name)\nendsub")

        sub.add_namespace("GLO1_")
        ds.add_namespace("GLO1_")

        self.assertEqual(sub.export(), "sub (GLO1_sub_name)")
        self.assertEqual(ds.export(), "defsub (GLO1_sub_name)\nendsub")
Ejemplo n.º 4
0
 def test_light_object_color(self):
     c = LightCommandColor(arguments=Arguments([1, 2, 3]),
                           noop=" ; comment")
     self.assertEqual(c.get_duration(), 0)
     self.assertEqual(c.export(), "color (1, 2, 3) ; comment")
     self.assertEqual(c._render_connected(self.color_pre, None),
                      ([], Color(1, 2, 3)))
Ejemplo n.º 5
0
 def test_compress_ramp_2(self):
     m1 = LightSequenceMain(objects=[
         LightCommandRamp(arguments=Arguments([0, 0, 0, 5])),
         LightCommandRamp(arguments=Arguments([85, 0, 0, 10])),
         LightCommandRamp(arguments=Arguments([170, 0, 0, 10])),
         LightCommandRamp(arguments=Arguments([255, 0, 0, 10])),
         LightCommandRamp(arguments=Arguments([170, 0, 0, 20])),
         LightCommandRamp(arguments=Arguments([85, 0, 0, 20])),
         LightCommandRamp(arguments=Arguments([0, 0, 0, 20]))
     ])
     m2 = LightSequenceMain(objects=[
         LightCommandRamp(arguments=Arguments([0, 0, 0, 5])),
         LightCommandRamp(arguments=Arguments([255, 0, 0, 30])),
         LightCommandRamp(arguments=Arguments([0, 0, 0, 60]))
     ])
     m1.compress(options={'epsilon': 0, 'root': None})
     self.assertEqual(m1, m2)
Ejemplo n.º 6
0
    def test_loop_unfold(self):
        delay = LightCommandDelay(arguments=Arguments([10]))

        mains = []
        for l in (0, 1, 255, 521):
            loop = LightSequenceLoop(objects=[delay], arguments=Arguments([l]))
            mains.append(LightSequenceMain(objects=[loop]))
            mains[-1].resolve_unsupported()

        self.assertEqual(mains[0].export(), "end")
        self.assertEqual(mains[1].export(), "delay (10)\nend")
        self.assertEqual(mains[2].export(),
                         "loop (255)\ndelay (10)\nendloop\nend")
        self.assertEqual(
            mains[3].export(),
            "loop (2); LOOP UNFOLD: 2 * 255 + 11 = 521\nloop (255)\ndelay (10)\nendloop\nendloop\nloop (11)\ndelay (10)\nendloop\nend"
        )
Ejemplo n.º 7
0
    def test_delay_split(self):
        delay = LightCommandDelay(arguments=Arguments([132000]))
        main = LightSequenceMain(objects=[delay])
        main.resolve_unsupported()

        self.assertEqual(
            main.export(),
            "; DELAY RESOLVE: 132000\ndelay (65535)\ndelay (65535)\ndelay (930)\nend"
        )
Ejemplo n.º 8
0
 def test_light_object_ramp(self):
     r = LightCommandRamp(arguments=Arguments([110, 120, 130, 4]),
                          noop=" ; comment")
     self.assertEqual(r.get_duration(), 4)
     self.assertEqual(r.export(), "ramp (110, 120, 130, 4) ; comment")
     self.assertEqual(r._render_connected(self.color_pre, None), ([
         Color(10, 20, 30),
         Color(35, 45, 55),
         Color(60, 70, 80),
         Color(85, 95, 105)
     ], Color(110, 120, 130)))
Ejemplo n.º 9
0
    def test_define(self):
        arguments = Arguments(name="DEF_NAME", objects=[1, 2, 3])

        define = LightCommandDefine(arguments=arguments)
        color = LightCommandColor(arguments=arguments)
        main = LightSequenceMain(objects=[define, color])

        self.assertEqual(define.export(), "#define DEF_NAME 1, 2, 3")
        self.assertEqual(color.export(), "color (DEF_NAME)")

        main.add_namespace("GLO1_")
        self.assertEqual(main[0].export(), "#define GLO1_DEF_NAME 1, 2, 3")
        self.assertEqual(main[1].export(), "color (GLO1_DEF_NAME)")

        main.resolve_constants()
        self.assertEqual(main[0].export(), ";#define GLO1_DEF_NAME 1, 2, 3")
        self.assertEqual(main[1].export(), "color (1, 2, 3)")
Ejemplo n.º 10
0
    def test_delay_zero(self):
        delay = LightCommandDelay(arguments=Arguments([0]), noop=" ; comment")
        main = LightSequenceMain(objects=[delay])
        main.resolve_unsupported()

        self.assertEqual(main.export(), "; DELAY RESOLVE: 0 ; comment\nend")
Ejemplo n.º 11
0
 def test_light_object_delay(self):
     d = LightCommandDelay(arguments=Arguments([1]), noop=" ; comment")
     self.assertEqual(d.get_duration(), 1)
     self.assertEqual(d.export(), "delay (1) ; comment")
     self.assertEqual(d._render_connected(self.color_pre, None),
                      ([self.color_pre], self.color_pre))
Ejemplo n.º 12
0
 def test_arguments(self):
     a1 = Arguments([1, 2, 3])
     a2 = Arguments([4, 5, 6], name="a2")
     a3 = Arguments([a2, 10])
     a4 = Arguments([a2, 20], name="a4")
     self.assertEqual(str(a1), "1, 2, 3")
     self.assertEqual(str(a2), "a2")
     self.assertEqual(str(a3), "a2, 10")
     self.assertEqual(str(a4), "a4")
     self.assertEqual(a1._expand(), [1, 2, 3])
     self.assertEqual(a2._expand(), [4, 5, 6])
     self.assertEqual(a3._expand(), [4, 5, 6, 10])
     self.assertEqual(a4._expand(), [4, 5, 6, 20])