Esempio n. 1
0
    def test_sand_iter_outputs(self):
        """
        Sand has several outputs.
        """

        sand = PlainBlock((0, 0, 0), blocks["sand"].slot, 0x0)

        self.assertTrue((0, 1, 0) in sand.iter_outputs())
Esempio n. 2
0
    def test_sand_iter_outputs(self):
        """
        Sand has several outputs.
        """

        sand = PlainBlock((0, 0, 0), blocks["sand"].slot, 0x0)

        self.assertTrue((0, 1, 0) in sand.iter_outputs())
Esempio n. 3
0
    def test_update_wires_single(self):
        torch = Torch((0, 0, 0), blocks["redstone-torch-off"].slot,
                      blocks["redstone-torch"].orientation("-x"))
        wire = Wire((1, 0, 0), blocks["redstone-wire"].slot, 0x0)
        plain = PlainBlock((2, 0, 0), blocks["sand"].slot, 0x0)

        torch.connect(self.asic)
        wire.connect(self.asic)
        plain.connect(self.asic)

        wires, outputs = self.asic.update_wires(1, 0, 0)

        self.assertTrue(wire in wires)
        self.assertTrue(plain in outputs)
        self.assertFalse(wire.status)
        self.assertEqual(wire.metadata, 0)
Esempio n. 4
0
    def test_update_wires_single(self):
        torch = Torch((0, 0, 0), blocks["redstone-torch-off"].slot,
            blocks["redstone-torch"].orientation("-x"))
        wire = Wire((1, 0, 0), blocks["redstone-wire"].slot, 0x0)
        plain = PlainBlock((2, 0, 0), blocks["sand"].slot, 0x0)

        torch.connect(self.asic)
        wire.connect(self.asic)
        plain.connect(self.asic)

        wires, outputs = self.asic.update_wires(1, 0, 0)

        self.assertTrue(wire in wires)
        self.assertTrue(plain in outputs)
        self.assertFalse(wire.status)
        self.assertEqual(wire.metadata, 0)
Esempio n. 5
0
    def test_find_wires_outputs_many(self):
        wires = set([
            Wire((0, 0, 0), blocks["redstone-wire"].slot, 0x0),
            Wire((2, 0, 0), blocks["redstone-wire"].slot, 0x0),
        ])
        outputs = set([
            Wire((1, 0, 0), blocks["redstone-wire"].slot, 0x0),
            Wire((3, 0, 0), blocks["redstone-wire"].slot, 0x0),
        ])
        wires.update(outputs)
        plains = set([
            PlainBlock((1, 0, 1), blocks["sand"].slot, 0x0),
            PlainBlock((4, 0, 0), blocks["sand"].slot, 0x0),
        ])
        for wire in wires:
            wire.connect(self.asic)
        for plain in plains:
            plain.connect(self.asic)

        self.assertEqual(outputs, set(self.asic.find_wires(0, 0, 0)[2]))
Esempio n. 6
0
    def test_sand_torch(self):
        """
        A torch attached to a sand block will turn off when the sand block
        turns on, and vice versa.
        """

        asic = {}
        sand = PlainBlock((0, 0, 0), blocks["sand"].slot, 0x0)
        torch = Torch((1, 0, 0), blocks["redstone-torch"].slot,
            blocks["redstone-torch"].orientation("-x"))

        sand.connect(asic)
        torch.connect(asic)

        sand.status = True
        torch.update()
        self.assertFalse(torch.status)

        sand.status = False
        torch.update()
        self.assertTrue(torch.status)
Esempio n. 7
0
    def test_update_wires_multiple_powered(self):
        torch = Torch((0, 0, 0), blocks["redstone-torch"].slot,
                      blocks["redstone-torch"].orientation("-x"))
        wire = Wire((1, 0, 0), blocks["redstone-wire"].slot, 0x0)
        wire2 = Wire((1, 0, 1), blocks["redstone-wire"].slot, 0x0)
        plain = PlainBlock((2, 0, 0), blocks["sand"].slot, 0x0)

        torch.connect(self.asic)
        wire.connect(self.asic)
        wire2.connect(self.asic)
        plain.connect(self.asic)

        torch.status = True

        wires, outputs = self.asic.update_wires(1, 0, 0)

        self.assertTrue(wire in wires)
        self.assertTrue(wire2 in wires)
        self.assertTrue(plain in outputs)
        self.assertTrue(wire.status)
        self.assertEqual(wire.metadata, 15)
        self.assertTrue(wire2.status)
        self.assertEqual(wire2.metadata, 14)
Esempio n. 8
0
    def test_update_wires_multiple_powered(self):
        torch = Torch((0, 0, 0), blocks["redstone-torch"].slot,
            blocks["redstone-torch"].orientation("-x"))
        wire = Wire((1, 0, 0), blocks["redstone-wire"].slot, 0x0)
        wire2 = Wire((1, 0, 1), blocks["redstone-wire"].slot, 0x0)
        plain = PlainBlock((2, 0, 0), blocks["sand"].slot, 0x0)

        torch.connect(self.asic)
        wire.connect(self.asic)
        wire2.connect(self.asic)
        plain.connect(self.asic)

        torch.status = True

        wires, outputs = self.asic.update_wires(1, 0, 0)

        self.assertTrue(wire in wires)
        self.assertTrue(wire2 in wires)
        self.assertTrue(plain in outputs)
        self.assertTrue(wire.status)
        self.assertEqual(wire.metadata, 15)
        self.assertTrue(wire2.status)
        self.assertEqual(wire2.metadata, 14)
Esempio n. 9
0
    def test_wire_sand_below(self):
        """
        Wire will power the plain block beneath it.
        """

        asic = Asic()
        sand = PlainBlock((0, 0, 0), blocks["sand"].slot, 0x0)
        wire = Wire((0, 1, 0), blocks["redstone-wire"].slot, 0x0)

        sand.connect(asic)
        wire.connect(asic)

        wire.status = True
        sand.update()
        self.assertTrue(wire.status)

        wire.status = False
        sand.update()
        self.assertFalse(wire.status)
Esempio n. 10
0
    def test_lever_sand(self):
        """
        A lever attached to a sand block will cause the sand block to have the
        same value as the lever.
        """

        asic = Asic()
        lever = Lever((0, 0, 0), blocks["lever"].slot,
                      blocks["lever"].orientation("-x"))
        sand = PlainBlock((1, 0, 0), blocks["sand"].slot, 0x0)

        lever.connect(asic)
        sand.connect(asic)

        lever.status = False
        sand.update()
        self.assertFalse(sand.status)

        lever.status = True
        sand.update()
        self.assertTrue(sand.status)
Esempio n. 11
0
    def test_wire_sand_below(self):
        """
        Wire will power the plain block beneath it.
        """

        asic = Asic()
        sand = PlainBlock((0, 0, 0), blocks["sand"].slot, 0x0)
        wire = Wire((0, 1, 0), blocks["redstone-wire"].slot, 0x0)

        sand.connect(asic)
        wire.connect(asic)

        wire.status = True
        sand.update()
        self.assertTrue(wire.status)

        wire.status = False
        sand.update()
        self.assertFalse(wire.status)
Esempio n. 12
0
    def test_lever_sand(self):
        """
        A lever attached to a sand block will cause the sand block to have the
        same value as the lever.
        """

        asic = Asic()
        lever = Lever((0, 0, 0), blocks["lever"].slot,
            blocks["lever"].orientation("-x"))
        sand = PlainBlock((1, 0, 0), blocks["sand"].slot, 0x0)

        lever.connect(asic)
        sand.connect(asic)

        lever.status = False
        sand.update()
        self.assertFalse(sand.status)

        lever.status = True
        sand.update()
        self.assertTrue(sand.status)
Esempio n. 13
0
    def test_sand_torch_above(self):
        """
        A torch on top of a sand block will turn off when the sand block
        turns on, and vice versa.
        """

        asic = Asic()
        sand = PlainBlock((0, 0, 0), blocks["sand"].slot, 0x0)
        torch = Torch((0, 1, 0), blocks["redstone-torch"].slot,
                      blocks["redstone-torch"].orientation("+y"))

        sand.connect(asic)
        torch.connect(asic)

        sand.status = True
        torch.update()
        self.assertFalse(torch.status)

        sand.status = False
        torch.update()
        self.assertTrue(torch.status)