blob: 6b16a72e1cd2c27a9bfb4e4721e2a9e9702e6470 [file] [log] [blame] [edit]
import unittest
from ..tracks import Track, Tracks, Direction
class TracksTests(unittest.TestCase):
def setUp(self):
trk_array = [
Track(direction='Y', x_low=1, x_high=1, y_low=1, y_high=5),
Track(direction='X', x_low=1, x_high=3, y_low=1, y_high=1),
Track(direction='Y', x_low=3, x_high=3, y_low=1, y_high=4),
]
cnx_array = [(0, 1), (1, 2)]
self.trks = Tracks(trk_array, cnx_array)
def test_verify_tracks(self):
self.trks.verify_tracks()
def test_verify_tracks_not_connected(self):
self.trks.tracks.append(
Track(direction='X', x_low=1, x_high=3, y_low=4, y_high=4)
)
with self.assertRaises(AssertionError):
self.trks.verify_tracks()
def test_verify_tracks_directon_error(self):
self.trks.tracks.append(
Track(direction='Y', x_low=1, x_high=1, y_low=5, y_high=6)
)
self.trks.track_connections.append((0, 3))
with self.assertRaises(AssertionError):
self.trks.verify_tracks()
def test_adjacent_simple(self):
self.assertEqual(
self.trks.is_wire_adjacent_to_track(0, (1, 1)), Direction.RIGHT
)
self.assertEqual(
self.trks.is_wire_adjacent_to_track(0, (2, 1)), Direction.LEFT
)
self.assertEqual(
self.trks.is_wire_adjacent_to_track(0, (5, 2)), Direction.NO_SIDE
)
self.assertEqual(
self.trks.is_wire_adjacent_to_track(1, (2, 1)), Direction.TOP
)
self.assertEqual(
self.trks.is_wire_adjacent_to_track(1, (2, 2)), Direction.BOTTOM
)
self.assertEqual(
self.trks.is_wire_adjacent_to_track(1, (5, 2)), Direction.NO_SIDE
)
def test_adjacenet_assert(self):
trk_array = [
Track(direction='Y', x_low=1, x_high=1, y_low=1, y_high=5),
Track(direction='X', x_low=1, x_high=3, y_low=1, y_high=1),
Track(direction='foobar', x_low=3, x_high=3, y_low=1, y_high=4),
]
cnx_array = [(0, 1), (1, 2)]
trks = Tracks(trk_array, cnx_array)
with self.assertRaises(AssertionError):
trks.is_wire_adjacent_to_track(2, (3, 1))
def test_get_tracks(self):
dirs = self.trks.get_tracks_for_wire_at_coord((1, 1))
self.assertEqual(dirs, {Direction.RIGHT: 0, Direction.TOP: 1})