Example #1
0
def category_attr_counts(dirpath):
    """Read all the files under this category (half a quad)"""
    if dirpath[-1] == '/':
        # Remove trailing slash, otherwise basename will be empty
        dirpath = dirpath[:-1]
    base = os.path.basename(dirpath)
    if base not in categories:
        print(f'Unknown category "{base}", exiting.')
        exit()

    # Dictionaries for cumulating attribute counts
    d_nodes = {}
    d_areas = {}
    d_lines = {}

    # Iterate over files in this category (sections of the quad)
    for f in os.listdir(dirpath):
        if not f.endswith('.opt.gz'):
            continue
        print(f'Processing {f}')
        dlgf = dlg.load_data(os.path.join(dirpath, f))
        d_nodes = dlg.merge_attrs(d_nodes, dlg.attrs_counts(dlgf.nodes))
        d_areas = dlg.merge_attrs(d_areas, dlg.attrs_counts(dlgf.areas))
        d_lines = dlg.merge_attrs(d_lines, dlg.attrs_counts(dlgf.lines))

    return d_nodes, d_areas, d_lines
Example #2
0
 def test_09_general_case(self):
     d1 = dict(aa=3, bb=5, gg=77, kk=89)
     d2 = dict(dd=91, bb=2, ff=52, kk=3, zz=75)
     d3 = dict(aa=3, bb=7, dd=91, ff=52, gg=77, kk=92, zz=75)
     self.assertEqual(d3, merge_attrs(d1, d2))
Example #3
0
 def test_04_single_key_different(self):
     d1 = dict(a=3)
     d2 = dict(b=5)
     d3 = dict(a=3, b=5)
     self.assertEqual(d3, merge_attrs(d1, d2))
Example #4
0
 def test_04_single_key_same(self):
     d1 = dict(a=3)
     d2 = dict(a=5)
     d3 = dict(a=8)
     self.assertEqual(d3, merge_attrs(d1, d2))
Example #5
0
 def test_03_other_empty_dictionary(self):
     d2 = dict(a=3)
     d3 = dict(a=3)
     self.assertEqual(d3, merge_attrs({}, d2))
Example #6
0
 def test_02_one_empty_dictionary(self):
     d1 = dict(a=3)
     d3 = dict(a=3)
     self.assertEqual(d3, merge_attrs(d1, {}))
Example #7
0
 def test_01_both_dictionaries_empty(self):
     self.assertEqual({}, merge_attrs({}, {}))