Files
old-krovovi-kalkulator/test/repositories/graph_repository_test.py
2017-11-07 09:23:57 +01:00

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)