Beispiel #1
0
    def test_find_wires_plural(self):
        wires = set([
            Wire((0, 0, 0), blocks["redstone-wire"].slot, 0x0),
            Wire((1, 0, 0), blocks["redstone-wire"].slot, 0x0),
        ])
        for wire in wires:
            wire.connect(self.asic)

        self.assertEqual(wires, self.asic.find_wires(0, 0, 0)[1])
Beispiel #2
0
    def test_torch_wire(self):
        """
        Wires will connect to torches.
        """

        asic = Asic()
        wire = Wire((0, 0, 0), blocks["redstone-wire"].slot, 0x0)
        torch = Torch((0, 0, 1), blocks["redstone-torch"].slot,
                      blocks["redstone-torch"].orientation("-z"))

        wire.connect(asic)
        torch.connect(asic)

        self.assertTrue(wire in torch.outputs)
        self.assertTrue(torch in wire.inputs)
Beispiel #3
0
    def test_torch_wire(self):
        """
        Wires will connect to torches.
        """

        asic = Asic()
        wire = Wire((0, 0, 0), blocks["redstone-wire"].slot, 0x0)
        torch = Torch((0, 0, 1), blocks["redstone-torch"].slot,
            blocks["redstone-torch"].orientation("-z"))

        wire.connect(asic)
        torch.connect(asic)

        self.assertTrue(wire in torch.outputs)
        self.assertTrue(torch in wire.inputs)
Beispiel #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)
Beispiel #5
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)
Beispiel #6
0
    def test_find_wires_cross(self):
        """
        Finding wires works when the starting point is inside a cluster of
        wires.
        """

        wires = set([
            Wire((0, 0, 0), blocks["redstone-wire"].slot, 0x0),
            Wire((1, 0, 0), blocks["redstone-wire"].slot, 0x0),
            Wire((-1, 0, 0), blocks["redstone-wire"].slot, 0x0),
            Wire((0, 0, 1), blocks["redstone-wire"].slot, 0x0),
            Wire((0, 0, -1), blocks["redstone-wire"].slot, 0x0),
        ])
        for wire in wires:
            wire.connect(self.asic)

        self.assertEqual(wires, self.asic.find_wires(0, 0, 0)[1])
Beispiel #7
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)
Beispiel #8
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]))
Beispiel #9
0
    def test_find_wires_inputs_many(self):
        inputs = set([
            Wire((0, 0, 0), blocks["redstone-wire"].slot, 0x0),
            Wire((2, 0, 1), blocks["redstone-wire"].slot, 0x0),
        ])
        wires = set([
            Wire((1, 0, 0), blocks["redstone-wire"].slot, 0x0),
            Wire((2, 0, 0), blocks["redstone-wire"].slot, 0x0),
        ])
        wires.update(inputs)
        torches = set([
            Torch((0, 0, 1), blocks["redstone-torch"].slot,
                  blocks["redstone-torch"].orientation("-z")),
            Torch((3, 0, 1), blocks["redstone-torch"].slot,
                  blocks["redstone-torch"].orientation("-x")),
        ])
        for wire in wires:
            wire.connect(self.asic)
        for torch in torches:
            torch.connect(self.asic)

        self.assertEqual(inputs, set(self.asic.find_wires(0, 0, 0)[0]))
Beispiel #10
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)
Beispiel #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)
Beispiel #12
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)