def test_saved_equals_original_binary(self): '''Tests if saved binary file is identical to the loaded one''' stl1 = Stl(asset('block.stl')) stl1.write_binary(asset('block_binary.stl')) stl2 = Stl(asset('block_binary.stl')) stl2.write_binary(asset('block_binary2.stl')) assert filecmp.cmp(asset('block_binary.stl'), asset('block_binary2.stl'))
def test_list_from_stl(self): '''Tests if list(stl) returns all the facets''' stl = Stl(asset('block.stl')) facets = list(stl) assert len(facets) == 12 assert len(facets[0]['vertex']) == 3 assert facets[0]['vertex'][0]['x'] == 0
def test_stats_are_same_with_created(self, type): ''''Test a manually constructed cube has the same stats as if loaded''' XYZ = ('x', 'y', 'z') stl1 = Stl(asset('block.stl')) if type == 'iterable': facets = [[[[v[a] for a in XYZ] for v in f['vertex']], [f['normal'][a] for a in XYZ]] for f in stl1] else: facets = list(stl1) stl2 = Stl() stl2.add_facets(facets) stats1, stats2 = stl1.stats, stl2.stats for stats in (stats1, stats2): del stats['type'] # ASCII != INMEMORY del stats['original_num_facets'] # 12 != 0 del stats['header'] # nothing != "solid admesh" assert stats1 == stats2
def test_add_facets_updates_stats(self): '''Tests if adding new facets updates the mesh stats''' stl = Stl(asset('block.stl')) max_x = stl.stats['max']['x'] bounding_diameter = stl.stats['bounding_diameter'] stl.add_facets([(((0, 0, 0), (1, 1, 1), (max_x + 1, 0, 0)), (1, 0, 0)) ]) assert max_x + 1 == stl.stats['max']['x'] assert bounding_diameter < stl.stats['bounding_diameter']
def test_saved_equals_original_ascii(self): '''Tests if saved ASCII file is identical to the loaded one''' stl = Stl(asset('block.stl')) stl.write_ascii(asset('block_ascii.stl')) assert filecmp.cmp(asset('block.stl'), asset('block_ascii.stl'))
def test_save_load_unicode(self): '''Tests saving and loading files with Unicode filenames''' stl1 = Stl(asset('block.stl')) stl1.write_ascii(asset(u'block_ěščřž.stl')) stl2 = Stl(asset(u'block_ěščřž.stl'))
def test_len_is_number_of_facets(self): '''Tests if len() of Stl object is number of factes''' stl = Stl(asset('block.stl')) assert len(stl) == 12
def test_str(self): '''Tests the output of str''' stl = Stl(asset('block.stl')) assert str(stl) == "Stl('admesh')"
def test_emtpy_stl_has_0_len(self): '''Test if newly created Stl has len() == 0''' stl = Stl() assert len(stl) == 0
def test_volume(self): '''Tests the volume of the block''' stl = Stl(asset('block.stl')) stl.calculate_volume() assert stl.stats['volume'] == 1
def test_delete_stats(self): '''Test if deleting stats raises exception''' stl = Stl() with pytest.raises(AttributeError): del stl.stats
def test_write_to_stats(self): '''Test if writing to stats raises exception''' stl = Stl() with pytest.raises(TypeError if pypy2 else AttributeError): stl.stats = {}
def test_header(self): '''Tests the header of the block''' stl = Stl(asset('block.stl')) assert stl.stats['header'] == 'solid admesh'.encode('UTF-8')
def test_saved_binary_is_binary(self): '''Tests if saved binary file is identical to the loaded one''' stl1 = Stl(asset('block.stl')) stl1.write_binary(asset('block_binary.stl')) stl2 = Stl(asset('block_binary.stl')) assert stl2.stats['type'] == Stl.BINARY
def test_add_facets_increases_len(self): stl = Stl(asset('block.stl')) facet_count = len(stl) stl.add_facets([(((0, 0, 0), (1, 1, 1), (1, 0, 0)), (1, 0, 0))]) assert len(stl) == facet_count + 1
def test_ascii_is_ascii(self): '''Tests if loaded ASCII file is recognized as ASCII''' stl = Stl(asset('block.stl')) assert stl.stats['type'] == Stl.ASCII
def test_number_of_facets(self): '''Tests if block has 12 facets''' stl = Stl(asset('block.stl')) assert stl.stats['number_of_facets'] == 12