def test_unofficial_missing_parts_included(file_name): key = Path(file_name) # Check file not found in official Parts file_dic = FileListDic(parts_dir=LDRAW_PARTS_DIR, primitives_dir=LDRAW_PRIMITIVES_DIR) assert key not in file_dic # Check file found un Unofficial Parts file_dic = FileListDic( parts_dir=LDRAW_PARTS_DIR, primitives_dir=LDRAW_PRIMITIVES_DIR, unofficial_parts_dir=LDRAW_PARTS_DIR_UNOFFICIAL, unofficial_primitives_dir=LDRAW_PRIMITIVES_DIR_UNOFFICIAL) assert key in file_dic
def test_can_handle_duplicate_unofficial_files(): duplicate_part_file = '92947.dat' key = Path(duplicate_part_file) # Check file not found in official Parts file_dic = FileListDic(parts_dir=LDRAW_PARTS_DIR, primitives_dir=LDRAW_PRIMITIVES_DIR) assert key in file_dic # Check file found un Unofficial Parts file_dic = FileListDic( parts_dir=LDRAW_PARTS_DIR, primitives_dir=LDRAW_PRIMITIVES_DIR, unofficial_parts_dir=LDRAW_PARTS_DIR_UNOFFICIAL, unofficial_primitives_dir=LDRAW_PRIMITIVES_DIR_UNOFFICIAL) assert key in file_dic
def test_calc_top_studs_for_part_list(): part_list = ['3070b', '71427c01', '32531'] part_list = [Path(LDRAW_PARTS_DIR) / F'{p}.dat' for p in part_list] file_dic = FileListDic(parts_dir=LDRAW_PARTS_DIR, primitives_dir=LDRAW_PRIMITIVES_DIR) top_studs_dic = ldraw_parser.calc_top_studs_for_part_list( part_list, file_dic) assert len(top_studs_dic) == 3 # Part 3070b assert top_studs_dic['3070b']['top_top_studs'] == 0 assert top_studs_dic['3070b']['bottom_studs'] == 0 assert top_studs_dic['3070b']['stud_ring_count'] == 0 # Part 71427c01 assert top_studs_dic['71427c01']['top_top_studs'] == 16 assert top_studs_dic['71427c01'][ 'bottom_studs'] == 0 # on graphic looks like 2 but no files defined assert top_studs_dic['71427c01']['stud_ring_count'] == 3 # Part 32531 assert top_studs_dic['32531']['top_top_studs'] == 16 assert top_studs_dic['32531']['bottom_studs'] == 12 assert top_studs_dic['32531']['stud_ring_count'] == 0
def test_build_dir_finds_top_stud_primitives(file_name): file_dic = FileListDic(parts_dir=LDRAW_PARTS_DIR, primitives_dir=LDRAW_PRIMITIVES_DIR) key = Path(file_name) assert key in file_dic primitives_dir = os.path.join(LDRAW_TEST_FILE_DIR, 'primitives') assert Path(primitives_dir) / file_name == file_dic[key]
def test_get_top_studs(top_studs, part_num): file_name = F'{part_num}.dat' key = Path(file_name) file_dic = FileListDic(parts_dir=LDRAW_PARTS_DIR, primitives_dir=LDRAW_PRIMITIVES_DIR) assert key in file_dic file_path = file_dic[key] processed_files_dic = {} ldraw_parser.calc_top_studs_for_part_file(file_path, file_dic, processed_files_dic) assert top_studs == processed_files_dic[file_path]['top_top_studs']
def test_get_stud_ring_count(top_studs, part_num): file_name = F'{part_num}.dat' key = Path(file_name) file_dic = FileListDic(parts_dir=LDRAW_PARTS_DIR, primitives_dir=LDRAW_PRIMITIVES_DIR) assert key in file_dic file_path = file_dic[key] ldraw_parser.print_sub_files(file_dic[key], file_dic, prefix='stud') processed_files_dic = {} ldraw_parser.calc_top_studs_for_part_file(file_path, file_dic, processed_files_dic) assert top_studs == processed_files_dic[file_path]['stud_ring_count']
def test_unofficial_file_with_missing_subparts(): part_with_missing_subs = '91347c01.dat' part_with_missing_subs = 'NestedMissingSubfileTest.dat' key = Path(part_with_missing_subs) file_dic = FileListDic( parts_dir=LDRAW_PARTS_DIR, primitives_dir=LDRAW_PRIMITIVES_DIR, unofficial_parts_dir=LDRAW_PARTS_DIR_UNOFFICIAL, unofficial_primitives_dir=LDRAW_PRIMITIVES_DIR_UNOFFICIAL) assert key in file_dic file_path = file_dic[key] with pytest.raises(ldraw_parser.SubfileMissingError): ldraw_parser.calc_top_studs_for_part_file(file_path, file_dic)
def test_get_sub_files_from_file(): file_name = os.path.join('s', '3070bs01.dat') key = Path(file_name) file_dic = FileListDic(parts_dir=LDRAW_PARTS_DIR, primitives_dir=LDRAW_PRIMITIVES_DIR) assert key in file_dic file_path = file_dic[key] ldraw_file = ldraw_parser.LdrawFile(file_path) sup_part_files = ldraw_file.sup_part_files assert len(sup_part_files) == 3 assert sup_part_files.count(Path('box4.dat')) == 2 assert sup_part_files.count(Path('box5.dat')) == 1
def test_processed_files_dic_specified(): file_name = '3024.dat' key = Path(file_name) file_dic = FileListDic(parts_dir=LDRAW_PARTS_DIR, primitives_dir=LDRAW_PRIMITIVES_DIR) file_path = file_dic[key] processed_files_dic = {} ldraw_parser.calc_top_studs_for_part_file(file_path, file_dic, processed_files_dic) assert len(processed_files_dic.values()) == 3 assert processed_files_dic[LDRAW_PARTS_DIR / '3024.dat']['top_top_studs'] == 1 assert processed_files_dic[LDRAW_PRIMITIVES_DIR / 'box5.dat']['top_top_studs'] == 0 assert processed_files_dic[LDRAW_PRIMITIVES_DIR / 'stud.dat']['top_top_studs'] == 1
def test_file_visited_count(): file_dic = FileListDic(parts_dir=LDRAW_PARTS_DIR, primitives_dir=LDRAW_PRIMITIVES_DIR) file_path = file_dic['3024.dat'] file_visited_count = {} processed_files_dic = {} # Run 1st time ldraw_parser.calc_top_studs_for_part_file(file_path, file_dic, processed_files_dic, file_visited_count) assert len(file_visited_count.values()) == 3 assert file_visited_count[LDRAW_PARTS_DIR / '3024.dat'] == 1 assert file_visited_count[LDRAW_PRIMITIVES_DIR / 'box5.dat'] == 1 assert file_visited_count[LDRAW_PRIMITIVES_DIR / 'stud.dat'] == 1 # Run 2nd time ldraw_parser.calc_top_studs_for_part_file(file_path, file_dic, processed_files_dic, file_visited_count) assert len(file_visited_count.values()) == 3 assert file_visited_count[LDRAW_PARTS_DIR / '3024.dat'] == 2 assert file_visited_count[LDRAW_PRIMITIVES_DIR / 'box5.dat'] == 1 assert file_visited_count[LDRAW_PRIMITIVES_DIR / 'stud.dat'] == 1
def test_find_subdir_file(): file_name = Path('s/10s01.dat') file_dic = FileListDic(parts_dir=LDRAW_PARTS_DIR, primitives_dir=LDRAW_PRIMITIVES_DIR) key = Path(file_name) assert key in file_dic