示例#1
0
def test_polygon_specific_value():
    # specific value unit test
    poly9 = Pp.Poly(6, 2)
    poly10 = Pp.Poly(4, 1)
    poly11 = Pp.Poly(4, 1)
    poly12 = Pp.Poly(4, 1)
    poly13 = Pp.Poly(1000, 1)
    for i in range(9, 14):
        eval("poly{0}.calcproperties()".format(i))
    assert math.isclose(poly9.apothem, 1.732, rel_tol=.001, abs_tol=.001)
    assert math.isclose(poly9.area, 10.392, rel_tol=.001, abs_tol=.001)
    assert math.isclose(poly9.perimeter, 12, rel_tol=.001, abs_tol=.001)
    assert math.isclose(poly9.interior_angle, 120, rel_tol=.001, abs_tol=.001)
    assert math.isclose(poly9.edge_length, 2, rel_tol=.001, abs_tol=.001)
    assert math.isclose(poly10.area, 2, rel_tol=.001, abs_tol=.001)
    assert math.isclose(poly12.edge_length, math.sqrt(2), rel_tol=.001, abs_tol=.001)
    assert math.isclose(poly13.area, math.pi, rel_tol=.001, abs_tol=.001)
    # test equality
    assert poly10.equal_area(poly11)
    assert poly10.equal_perimeter(poly11)
    # test equality exceptions
    with raises(Exception):
        assert poly13.equal_area(poly9)
    with raises(Exception):
        assert poly13.equal_perimeter(poly9)
示例#2
0
def test_polygon_float_radius_repr():
    # unit test: Polygon radius float/int repr
    poly100 = Pp.Poly(3, 3)
    assert poly100.__repr__() == "Poly(3,3)"
    poly100 = Pp.Poly(3, 3.1)
    assert poly100.__repr__() == "Poly(3,3.1)"
    poly100 = Pp.Poly(3, 3.0)
    assert poly100.__repr__() == "Poly(3,3)"
示例#3
0
def test_polygon_perimeter_cache():
    poly = Pp.Poly(5, 5)
    if poly.perimeter:
        assert poly.perimeter
    poly.side_count = 8
    assert poly._perimeter is None
    poly.circumradius = 1
    assert poly._perimeter is None
    poly.side_count = 3
    assert poly._perimeter is None
示例#4
0
def test_polygon_area_cache():
    poly = Pp.Poly(5, 5)
    if poly.area:
        assert poly.area
    poly.side_count = 9
    assert poly._area is None
    poly.circumradius = 1
    assert poly._area is None
    poly.side_count = 3
    assert poly._area is None
示例#5
0
def test_polygon_apothem_cache():
    poly = Pp.Poly(5, 5)
    if poly.apothem:
        assert poly.apothem
    poly.side_count = 9
    assert poly._apothem is None
    poly.circumradius = 1
    assert poly._apothem is None
    poly.side_count = 3
    assert poly._apothem is None
示例#6
0
def test_polygon_edge_length_cache():
    poly = Pp.Poly(5, 5)
    if poly.edge_length:
        assert poly.edge_length
    poly.side_count = 9
    assert poly._edge_length is None
    poly.circumradius = 1
    assert poly._edge_length is None
    poly.side_count = 3
    assert poly._edge_length is None
示例#7
0
def test_polygon_interior_angle_cache():
    poly = Pp.Poly(5, 5)
    if poly.interior_angle:
        assert poly.interior_angle
    poly.side_count = 9
    assert poly._interior_angle is None
    poly.circumradius = 1
    assert poly._interior_angle is None
    poly.side_count = 3
    assert poly._interior_angle is None
def test_poly():
    n = [i for i in range(3, 13)]
    r = [i for i in range(13, 23)]

    nr = tuple(zip(n, r))

    name = tuple(('poly{0}'.format(n)) for n in range(100, 100 + len(n)))

    polylist = [p.Poly(n, r) for n, r in nr]
    polydict = OrderedDict(zip(name, polylist))
    polydict['poly111'] = 'dummy_obj'
    polydict['poly112'] = p.Poly(3, 13)

    # for k, v in polydict.items():
    #     print(k, v,
    #           'perimeter =', v.perimeter,"\n",
    #           'apothem =', v.apothem,"\n",
    #           'interior angle =', v.interior_angle,"\n",
    #           'edge_length =', v.edge_length,"\n",
    #           'area =', v.area
    #           )
    return polydict
    def nrfinal(self):
        """ nrfinal generates instances of Poly(n,r) objects from specified parameters"""
        # Unique n list + Unique r list of length icount
        # lists are mutable data structures
        # so use deepcopy (copy is a shallow copy and thus is a pass by reference)
        # deep copy is a pass by value instantiating a new list

        nrvalslist = list(zip(sorted(self.sample_ints, reverse=True),
                              sorted(self.sample_floats, reverse=True)))
        # print('Initial Unique Values:', len(nrvalslist), nrvalslist)

        nrdups = deepcopy(nrvalslist[0:self._clones] * self._cloneamount)
        # print('Clones To Append:', len(nrdups), nrdups)

        nrremainder = deepcopy(nrvalslist[self._clones:])
        # print('Remaining Unique Values:', len(nrremainder) , nrremainder)

        finallist = deepcopy(nrdups + nrremainder)

        # print(finallist)

        # print('Final Values of (n,r) for Poly Generation:', len(finallist), finallist)

        # print('POLYGON CLASS TESTING:')

        name = tuple(('poly{0}'.format(n)) for n in range(101, 101+self._finalcount))
        # print('Newly Created Object Names:', len(name), name)

        # polylist instantiates Poly objects
        polylist = [pp.Poly(n, r) for n, r in finallist]
        polydict = OrderedDict(zip(name, polylist))

        self.polydict = polydict

        globals().update(polydict)

        self.finallist = len(finallist)
        """ self.polynames = list of names for newly created Poly(n,r) objects """
        self.polynames = name
        return """Process Complete"""
示例#10
0
def test_polygon_interior_angle_value_calculates_without_radius():
    poly = Pp.Poly(3, None)
    return poly.interior_angle
示例#11
0
def test_polygon_polycheck_n_type():
    with raises(Exception):
        Pp.Poly('string', 4)
示例#12
0
def test_polygon_set_item():
    # set item and recalculate of poly1
    poly1 = Pp.Poly(4, 5)
    poly1.__setitem__(10, 13.1)
    assert str(poly1) == 'Poly(10,13.1)'
示例#13
0
def test_polygon_interior_angle_value_error():
    poly = Pp.Poly(None, None)
    with raises(ValueError):
        return poly.interior_angle
示例#14
0
def test_polygons_max_efficencey_method(test_polygons):
    # test the max efficencey formula
    # assert max([p.area/p.perimeter for p in test_polygons[1]]) == test_polygons[1].max_efficiency
    assert test_polygons[1].max_efficiency == Pp.Poly(500, 1)
示例#15
0
def test_polygon_perimeter_value_error():
    with raises(ValueError):
        poly1 = Pp.Poly()
        return poly1.perimeter
示例#16
0
def test_polygon_nrskey_valid():
    poly100 = Pp.Poly(4, 4)
    assert poly100.nrkey == (4, 4)
示例#17
0
def test_polygon_nrkey_returns_none():
    # with raises(Exception):
    poly100 = Pp.Poly()
    return poly100.nrkey
示例#18
0
def test_polygon_polycheck_r_positive_type():
    with raises(Exception):
        Pp.Poly(4, -4)
示例#19
0
def test_polygon_polycheck_n_positive():
    with raises(Exception):
        Pp.Poly(-4, 4)
示例#20
0
def test_polygon_edge_length_value_error():
    poly = Pp.Poly(None, None)
    with raises(ValueError):
        return poly.edge_length
示例#21
0
def test_polygon_calculate_properties_method():
    # poly1 list properties
    poly1 = Pp.Poly(4, 5)
    assert poly1.calcproperties()
示例#22
0
def test_polygon_area_value_error():
    poly = Pp.Poly(None, None)
    with raises(ValueError):
        return poly.area