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

121 lines
5.6 KiB
Python

import unittest
from nose.tools import eq_
from helix.Services.dxf_helper import DXFHelper
from helix.constants.system_type import SystemType
from helix.models.coordinate import Coordinate
from helix.models.dxf.dxf_error import DXFError
from helix.models.panel import Panel
from helix.validators.subarray_validator import SubarrayValidator
class SubarrayValidatorTest(unittest.TestCase):
def test_subarrays_taller_than_150_feet_are_invalid(self):
panels = []
for i in range(33):
panels.append(Panel(coordinate=Coordinate(0, i * 60.0, rotation=0), subarray=1))
panels.append(Panel(coordinate=Coordinate(62.15, i * 60.0, rotation=0), subarray=1))
node_graph = DXFHelper.build_node_graph(panels, (62.15, 60.0))
try:
SubarrayValidator.validate_subarray(node_graph, 1, SystemType.singleTilt)
assert False
except DXFError as error:
eq_(error.message, "Array size is too big. Max is 150' by 150'.")
def test_subarrays_wider_than_150_feet_are_invalid(self):
panels = []
for i in range(30):
panels.append(Panel(coordinate=Coordinate(i * 62.15, 0, rotation=0), subarray=1))
panels.append(Panel(coordinate=Coordinate(i * 62.15, 60.0, rotation=0), subarray=1))
node_graph = DXFHelper.build_node_graph(panels, (62.15, 60))
try:
SubarrayValidator.validate_subarray(node_graph, 1, None)
assert False
except DXFError as error:
eq_(error.message, "Array size is too big. Max is 150' by 150'.")
def test_single_file_horizontal_line_is_invalid_single_tilt(self):
panels = [
Panel(coordinate=Coordinate(10, 0, rotation=0), subarray=1),
Panel(coordinate=Coordinate(20, 0, rotation=0), subarray=1),
Panel(coordinate=Coordinate(30, 0, rotation=0), subarray=1),
Panel(coordinate=Coordinate(30, 10, rotation=0), subarray=1),
Panel(coordinate=Coordinate(40, 0, rotation=0), subarray=1),
Panel(coordinate=Coordinate(40, 10, rotation=0), subarray=1)
]
node_graph = DXFHelper.build_node_graph(panels, (10, 10))
try:
SubarrayValidator.validate_subarray(node_graph, 1, SystemType.singleTilt)
assert False
except DXFError as error:
eq_(error.message, "Error - Unsupported panel configuration in subarray 1.")
def test_single_file_vertical_line_is_invalid_single_tilt(self):
panels = [
Panel(coordinate=Coordinate(0, 10, rotation=0), subarray=2),
Panel(coordinate=Coordinate(0, 20, rotation=0), subarray=2),
Panel(coordinate=Coordinate(0, 30, rotation=0), subarray=2),
Panel(coordinate=Coordinate(10, 30, rotation=0), subarray=2),
Panel(coordinate=Coordinate(0, 40, rotation=0), subarray=2),
Panel(coordinate=Coordinate(10, 40, rotation=0), subarray=2)
]
node_graph = DXFHelper.build_node_graph(panels, (10, 10))
try:
SubarrayValidator.validate_subarray(node_graph, 2, SystemType.singleTilt)
assert False
except DXFError as error:
eq_(error.message, "Error - Unsupported panel configuration in subarray 2.")
def test_other_single_tilt_subarrays_are_valid(self):
panels = [
Panel(coordinate=Coordinate(0, 0, rotation=0), subarray=1),
Panel(coordinate=Coordinate(0, 1, rotation=0), subarray=1),
Panel(coordinate=Coordinate(1, 0, rotation=0), subarray=1),
Panel(coordinate=Coordinate(1, 1, rotation=0), subarray=1)
]
node_graph = DXFHelper.build_node_graph(panels, (1, 1))
SubarrayValidator.validate_subarray(node_graph, 1, SystemType.singleTilt)
def test_single_file_horizontal_line_is_invalid_dual_tilt(self):
panels = [
Panel(coordinate=Coordinate(10, 0, rotation=0), subarray=1),
Panel(coordinate=Coordinate(20, 0, rotation=0), subarray=1),
Panel(coordinate=Coordinate(30, 0, rotation=0), subarray=1),
Panel(coordinate=Coordinate(30, 10, rotation=0), subarray=1),
Panel(coordinate=Coordinate(40, 0, rotation=0), subarray=1),
Panel(coordinate=Coordinate(40, 10, rotation=0), subarray=1)
]
node_graph = DXFHelper.build_node_graph(panels, (10, 10))
try:
SubarrayValidator.validate_subarray(node_graph, 1, SystemType.dualTilt)
assert False
except DXFError as error:
eq_(error.message, "Error - Unsupported panel configuration in subarray 1.")
def test_single_file_vertical_line_is_valid_dual_tilt(self):
panels = [
Panel(coordinate=Coordinate(0, 1, rotation=0), subarray=1),
Panel(coordinate=Coordinate(0, 2, rotation=0), subarray=1),
Panel(coordinate=Coordinate(0, 3, rotation=0), subarray=1),
Panel(coordinate=Coordinate(1, 3, rotation=0), subarray=1),
Panel(coordinate=Coordinate(0, 4, rotation=0), subarray=1),
Panel(coordinate=Coordinate(1, 4, rotation=0), subarray=1)
]
node_graph = DXFHelper.build_node_graph(panels, (1, 1))
SubarrayValidator.validate_subarray(node_graph, 1, SystemType.dualTilt)
def test_other_dual_tilt_subarrays_are_valid(self):
panels = [
Panel(coordinate=Coordinate(0, 0, rotation=0), subarray=1),
Panel(coordinate=Coordinate(0, 1, rotation=0), subarray=1)
]
node_graph = DXFHelper.build_node_graph(panels, (1, 1))
SubarrayValidator.validate_subarray(node_graph, 1, SystemType.dualTilt)