148 lines
11 KiB
Python
148 lines
11 KiB
Python
import unittest
|
|
from nose.tools import eq_
|
|
from helix.Repositories.graph_repository import GraphRepository
|
|
from helix.constants.panel_type import PanelType
|
|
from helix.constants.system_type import SystemType
|
|
from helix.models.coordinate import Coordinate
|
|
from helix.models.panel import Panel
|
|
from helix.models.subarray import Subarray
|
|
|
|
|
|
class GraphRepositoryTest(unittest.TestCase):
|
|
def test_calculate_row_count_single_column(self):
|
|
panels = [
|
|
Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 0)),
|
|
Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(0, 1)),
|
|
Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(0, 2)),
|
|
Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 3)),
|
|
]
|
|
subarrays = [
|
|
Subarray(subarray_number=0, origin=Coordinate(0, 0))
|
|
]
|
|
GraphRepository(panels, subarrays, SystemType.dualTilt)
|
|
eq_(subarrays[0].row_count, 4)
|
|
eq_(subarrays[0].row_counted_geometrically, True)
|
|
|
|
def test_calculate_row_count_box(self):
|
|
panels = [
|
|
Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 0)), Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(1, 0)),
|
|
Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(0, 1)), Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(1, 1)),
|
|
Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(0, 2)), Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(1, 2)),
|
|
Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 3)), Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(1, 3)),
|
|
]
|
|
subarrays = [
|
|
Subarray(subarray_number=0, origin=Coordinate(0, 0))
|
|
]
|
|
GraphRepository(panels, subarrays, SystemType.dualTilt)
|
|
eq_(subarrays[0].row_count, 4)
|
|
eq_(subarrays[0].row_counted_geometrically, True)
|
|
|
|
def test_calculate_row_count_H_shape(self):
|
|
panels = [
|
|
Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 0)), Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(2, 0)),
|
|
Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(0, 1)), Panel(subarray=0, panel_type=PanelType.NorthSouth, coordinate=Coordinate(1, 1)), Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(2, 1)),
|
|
Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 2)), Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(2, 2)),
|
|
]
|
|
subarrays = [
|
|
Subarray(subarray_number=0, origin=Coordinate(0, 0))
|
|
]
|
|
GraphRepository(panels, subarrays, SystemType.dualTilt)
|
|
eq_(subarrays[0].row_count, 5)
|
|
eq_(subarrays[0].row_counted_geometrically, True)
|
|
|
|
# Below test is for https://www.pivotaltracker.com/story/show/128683099, uncomment when it's started.
|
|
# def test_calculate_row_count_doughnut(self):
|
|
# panels = [
|
|
# Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 0)), Panel(subarray=0, panel_type=PanelType.NorthSouth, coordinate=Coordinate(1, 0)), Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(2, 0)),
|
|
# Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(0, 1)), Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(2, 1)),
|
|
# Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 2)), Panel(subarray=0, panel_type=PanelType.NorthSouth, coordinate=Coordinate(1, 2)), Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(2, 2)),
|
|
# ]
|
|
# subarrays = [
|
|
# Subarray(subarray_number=0, origin=Coordinate(0, 0))
|
|
# ]
|
|
# GraphRepository(panels, subarrays, SystemType.dualTilt)
|
|
# eq_(subarrays[0].row_count, 4)
|
|
|
|
def test_calculate_row_column_count_doughnut_with_double_wall(self):
|
|
panels = [
|
|
Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 0)), Panel(subarray=0, panel_type=PanelType.NorthSouth, coordinate=Coordinate(1, 0)), Panel(subarray=0, panel_type=PanelType.NorthSouth, coordinate=Coordinate(2, 0)), Panel(subarray=0, panel_type=PanelType.NorthSouth, coordinate=Coordinate(3, 0)), Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(4, 0)),
|
|
Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(0, 1)), Panel(subarray=0, panel_type=PanelType.Middle, coordinate=Coordinate(1, 1)), Panel(subarray=0, panel_type=PanelType.NorthSouth, coordinate=Coordinate(2, 1)), Panel(subarray=0, panel_type=PanelType.Middle, coordinate=Coordinate(3, 1)), Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(4, 1)),
|
|
Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(0, 2)), Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(1, 2)), Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(3, 2)), Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(4, 2)),
|
|
Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(0, 3)), Panel(subarray=0, panel_type=PanelType.Middle, coordinate=Coordinate(1, 3)), Panel(subarray=0, panel_type=PanelType.NorthSouth, coordinate=Coordinate(2, 3)), Panel(subarray=0, panel_type=PanelType.Middle, coordinate=Coordinate(3, 3)), Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(4, 3)),
|
|
Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 4)), Panel(subarray=0, panel_type=PanelType.NorthSouth, coordinate=Coordinate(1, 4)), Panel(subarray=0, panel_type=PanelType.NorthSouth, coordinate=Coordinate(2, 4)), Panel(subarray=0, panel_type=PanelType.NorthSouth, coordinate=Coordinate(3, 4)), Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(4, 4)),
|
|
]
|
|
subarrays = [
|
|
Subarray(subarray_number=0, origin=Coordinate(0, 0))
|
|
]
|
|
GraphRepository(panels, subarrays, SystemType.dualTilt)
|
|
eq_(subarrays[0].row_count, 6)
|
|
eq_(subarrays[0].row_counted_geometrically, False)
|
|
eq_(subarrays[0].column_count, 6)
|
|
eq_(subarrays[0].column_counted_geometrically, False)
|
|
|
|
def test_calculate_row_count_fallback(self):
|
|
panels = [
|
|
Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 0)),
|
|
Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(0, 0)),
|
|
Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(0, 0)),
|
|
Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 0)),
|
|
]
|
|
subarrays = [
|
|
Subarray(subarray_number=0, origin=Coordinate(0, 0))
|
|
]
|
|
GraphRepository(panels, subarrays, SystemType.dualTilt)
|
|
eq_(subarrays[0].row_count, 2)
|
|
eq_(subarrays[0].row_counted_geometrically, False)
|
|
|
|
def test_calculate_column_count_single_row(self):
|
|
panels = [
|
|
Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 0)), Panel(subarray=0, panel_type=PanelType.NorthSouth, coordinate=Coordinate(1, 0)), Panel(subarray=0, panel_type=PanelType.NorthSouth, coordinate=Coordinate(2, 0)), Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(3, 0)),
|
|
]
|
|
subarrays = [
|
|
Subarray(subarray_number=0, origin=Coordinate(0, 0))
|
|
]
|
|
GraphRepository(panels, subarrays, SystemType.dualTilt)
|
|
eq_(subarrays[0].column_count, 4)
|
|
eq_(subarrays[0].column_counted_geometrically, True)
|
|
|
|
def test_calculate_column_count_box(self):
|
|
panels = [
|
|
Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 0)), Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(1, 0)),
|
|
Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(0, 1)), Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(1, 1)),
|
|
Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(0, 2)), Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(1, 2)),
|
|
Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 3)), Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(1, 3)),
|
|
]
|
|
subarrays = [
|
|
Subarray(subarray_number=0, origin=Coordinate(0, 0))
|
|
]
|
|
GraphRepository(panels, subarrays, SystemType.dualTilt)
|
|
eq_(subarrays[0].column_count, 2)
|
|
eq_(subarrays[0].column_counted_geometrically, True)
|
|
|
|
def test_calculate_column_count_I_shape(self):
|
|
panels = [
|
|
Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 0)), Panel(subarray=0, panel_type=PanelType.NorthSouth, coordinate=Coordinate(1, 0)), Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(2, 0)),
|
|
Panel(subarray=0, panel_type=PanelType.EastWest, coordinate=Coordinate(1, 1)),
|
|
Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 2)), Panel(subarray=0, panel_type=PanelType.NorthSouth, coordinate=Coordinate(1, 2)), Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(2, 2)),
|
|
]
|
|
subarrays = [
|
|
Subarray(subarray_number=0, origin=Coordinate(0, 0))
|
|
]
|
|
GraphRepository(panels, subarrays, SystemType.dualTilt)
|
|
eq_(subarrays[0].column_count, 5)
|
|
eq_(subarrays[0].column_counted_geometrically, True)
|
|
|
|
def test_calculate_column_count_fallback(self):
|
|
panels = [
|
|
Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 0)),
|
|
Panel(subarray=0, panel_type=PanelType.NorthSouth, coordinate=Coordinate(0, 0)),
|
|
Panel(subarray=0, panel_type=PanelType.NorthSouth, coordinate=Coordinate(0, 0)),
|
|
Panel(subarray=0, panel_type=PanelType.Corner, coordinate=Coordinate(0, 0)),
|
|
]
|
|
subarrays = [
|
|
Subarray(subarray_number=0, origin=Coordinate(0, 0))
|
|
]
|
|
GraphRepository(panels, subarrays, SystemType.dualTilt)
|
|
eq_(subarrays[0].column_count, 2)
|
|
eq_(subarrays[0].column_counted_geometrically, False)
|